USUÁRIO:      SENHA:        SALVAR LOGIN ?    Adicione o VBWEB na sua lista de favoritos   Fale conosco 

 

  Dicas

  Visual Basic    (Miscelâneas)

Título da Dica:  Vefiricar se está rodando um processo antes de executa-lo
Postada em 28/7/2003 por MAC            
'Neste exemplo o Programa escolhido foi o Calc.exe,
'mas poderia ser qualquer outro, ou se pode criar um
'loop para verificar os programas que vc quiser bloquear
'o acesso a mais de uma vez.

Const TH32CS_SNAPHEAPLIST = &H1
Const TH32CS_SNAPPROCESS = &H2
Const TH32CS_SNAPTHREAD = &H4
Const TH32CS_SNAPMODULE = &H8
Const TH32CS_SNAPALL = (TH32CS_SNAPHEAPLIST Or _
TH32CS_SNAPPROCESS Or TH32CS_SNAPTHREAD Or TH32CS_SNAPMODULE)
Const TH32CS_INHERIT = &H80000000
Const MAX_PATH As Integer = 260
Private 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
Private Declare Function CreateToolhelp32Snapshot Lib "Kernel32" _
(ByVal lFlags As Long, ByVal lProcessID As Long) As Long

Private Declare Function Process32First Lib "Kernel32" _
(ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long

Private Declare Function Process32Next Lib "Kernel32" _
(ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long

Private Declare Sub CloseHandle Lib "Kernel32" (ByVal hPass As Long)
Dim msgaviso As Integer

Private Sub cdmCalc_Click()
Dim hSnapShot As Long, uProcess As PROCESSENTRY32
    Dim r, strCalc  As String
    Dim varCalc As Variant
    hSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPALL, 0&)
    uProcess.dwSize = Len(uProcess)
    r = Process32First(hSnapShot, uProcess)
    Do While r
        strCalc = (Left$(uProcess.szExeFile, _
        IIf(InStr(1, uProcess.szExeFile, Chr$(0)) > 0, _
        InStr(1, uProcess.szExeFile, Chr$(0)) - 1, 0)))
        If strCalc = "Calc.exe" Then
        msgaviso = MsgBox("Calculadora já está ativa!", _
        vbExclamation + vbOKOnly, "Resumo de Qualidade")
        GoTo 10:
        End If
        r = Process32Next(hSnapShot, uProcess)
    Loop
    varCalc = Shell("Calc.exe", vbNormalFocus)
10:    CloseHandle hSnapShot
 


CyberWEB Network Ltda.    © Copyright 2000-2024   -   Todos os direitos reservados.
Powered by HostingZone - A melhor hospedagem para seu site
Topo da página