EXECUTAR PROGRAMA
Ola pessoal. Estou com um probleminha e gostaria da ajuda de vcs.
Em meu sistema executo um programa externo criado por mim, porem, nao queria que pudesse abri-lo novamente. OK?!?!?!
Ou seja, se ele estiver aberto, não poder abri-lo novamente.
Agradeço a ajuda.
Em meu sistema executo um programa externo criado por mim, porem, nao queria que pudesse abri-lo novamente. OK?!?!?!
Ou seja, se ele estiver aberto, não poder abri-lo novamente.
Agradeço a ajuda.
Use o código abaixo
If App.PrevInstance Then
MsgBox "Aplicação já está aberta", vbCritical
ActivatePrevInstance
End
End If
If App.PrevInstance Then
MsgBox "Aplicação já está aberta", vbCritical
ActivatePrevInstance
End
End If
é no Load do Form que você informará o nome do programa a ser monitorado.
O Timer você regula como quiser.
'dá pra gerenciar processos, saber qual programas está em execução e etc.
No módulo você cola:
Espero que ajude..
O Timer você regula como quiser.
'dá pra gerenciar processos, saber qual programas está em execução e etc.
Private Function barra(cString As String)
Dim Y As Integer
Dim result As String
Dim PATHS As String
For Y = 1 To Len(cString)
result = Mid(Right$(cString, Y), 1, 1)
If result = "\" Then: Exit For
Next
PATHS = Right$(cString, Y - 1)
barra = PATHS
End Function
Private Sub Load_LstProc()
On Error Resume Next
lst_processos.Clear
lst_completo.Clear
hSnapShot = CreateToolhelpSnapshot(TH32CS_SNAPPROCESS, 0&)
If hSnapShot <> 0 Then
uProcess.dwSize = Len(uProcess)
rProcess = ProcessFirst(hSnapShot, uProcess)
Do While rProcess
tPID = uProcess.th32ProcessID
tMID = uProcess.th32ModuleID
lst_processos.AddItem barra(uProcess.szExeFile)
lst_completo.AddItem Hex$(uProcess.th32ProcessID) & " : " & uProcess.szExeFile
rProcess = ProcessNext(hSnapShot, uProcess)
Loop
Call CloseHandle(hSnapShot)
End If
End Sub
Private Sub Form_Load()
Load_LstProc
Dim I As Integer
For I = 0 To lst_processos.ListCount - 1
If UCase(lst_processos.List(I)) = "VB6.EXE" Then
MsgBox "Você está usando o VB"
Exit For
End If
Next
End Sub
Private Sub Timer1_Timer()
Form_Load
End Sub No módulo você cola:
Public Const MAX_PATH As Integer = 260
Type PROCESSENTRY32
dwSize As Long
cntUsage As Long
th32ProcessID As Long
th32DefaultHeapID As Long
th32ModuleID As Long
cntThreads As Long
th32ParentProcessID As Long
pcPriClassBase As Long
dwFlags As Long
szExeFile As String * MAX_PATH
End Type
Public Const TH32CS_SNAPPROCESS = &H2
Public Declare Function CreateToolhelpSnapshot Lib "kernel32" Alias "CreateToolhelp32Snapshot" (ByVal lFlags As Long, ByVal lProcessID As Long) As Long
Global hSnapShot As Long
Global uProcess As PROCESSENTRY32
Public Declare Function ProcessFirst Lib "kernel32" Alias "Process32First" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long
Public Declare Function ProcessNext Lib "kernel32" Alias "Process32Next" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long
Global rProcess As Long
Global tPID As Long
Global tMID As Long
Public Declare Function CloseHandle Lib "kernel32" (ByVal hFile As Long) As Long
Public Const PROCESS_TERMINATE = &H1
Global cescolhido As String
Public Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Global hProcess As Long
Global lExitCode As Long
Public Declare Function GetExitCodeProcess Lib "kernel32" (ByVal hProcess As Long, lpExitCode As Long) As Long
Public Declare Function TerminateProcess Lib "kernel32" (ByVal hProcess As Long, ByVal uExitCode As Long) As Long Espero que ajude..
este comando serve muitu bem pra vc
If App.PrevInstance Then
MsgBox "Aplicação já está aberta", vbCritical
ActivatePrevInstance
End
End If
espero ter ajudado
If App.PrevInstance Then
MsgBox "Aplicação já está aberta", vbCritical
ActivatePrevInstance
End
End If
espero ter ajudado
Esse link serve:
http://www.vbmania.com.br/vbmdetail.php?varID=2312
http://www.vbmania.com.br/vbmdetail.php?varID=2312
cara vai em iniciar executar, digite "MSCONFIG" vai aparecer uma tela, na orelha desta tela tem um lugar escrito, inicializar, clique ae, vai aparecer todos os programas que o seu computador inicia, ae, é só desmarcar o seu programa, salvar ae o seu programa não vai mais inicializar o seu programa
Que podes fazer é ficar monitorando as janelas que estão a se abrir, verificando pelo nome do processo ou tÃtulo da janela. Cria uma variável Booleana cujo valor é setado para True quando o programa em questão é executado através do seu. Caso o monitoramento (que deve ficar em um objeto Timer) note que o programa em questão foi aberto, checa pelo valor da variável Booleana. Caso for True, fecha o programa, caso for False, deixa o programa correr normalmente.
Ou ainda:
Pode fazer a mesma coisa, mas sem a variável Booleana, sendo assim que o Timer somente será ativo quando o programa em questão for aberto uma vez.
Espero ter sido claro, o que muito dúvido =P
Ou ainda:
Pode fazer a mesma coisa, mas sem a variável Booleana, sendo assim que o Timer somente será ativo quando o programa em questão for aberto uma vez.
Espero ter sido claro, o que muito dúvido =P
Tópico encerrado , respostas não são mais permitidas