|
|
|
|
|
Dicas
|
|
Visual Basic (Miscelâneas)
|
|
|
Título da Dica: Como saber que um programa externo executado via comando Shell terminou?
|
|
|
|
Postada em 24/8/2003 por Ð@®l@n
Quando você executa um programa externo ao seu aplicativo VB usando o comando Shell , é interessante que o seu programa VB saiba quando a aplicação executada foi encerrada ou terminou. Vamos mostrar como fazer isto.
1-) Inicie um novo projeto no VB e inclua um módulo no seu projeto. A inclua o seguinte código no módulo:
Public Type STARTUPINFO cb As Long lpReserved As String lpDesktop As String lpTitle As String dwX As Long dwY As Long dwXSize As Long dwYSize As Long dwXCountChars As Long dwYCountChars As Long dwFillAttribute As Long dwFlags As Long wShowWindow As Integer cbReserved2 As Integer lpReserved2 As Long hStdInput As Long hStdOutput As Long hStdError As Long End Type
Public Type PROCESS_INFORMATION hProcess As Long hThread As Long dwProcessID As Long dwThreadID As Long End Type
Public Declare Function WaitForSingleObject Lib _ "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds _ As Long) As Long
Declare Function CreateProcessA Lib "kernel32" _ (ByVal lpApplicationName As Long, ByVal lpCommandLine As _ String, ByVal lpProcessAttributes As Long, ByVal _ lpThreadAttributes As Long, ByVal bInheritHandles As Long, _ ByVal dwCreationFlags As Long, ByVal lpEnvironment As Long, _ ByVal lpCurrentDirectory As Long, lpStartupInfo As _ STARTUPINFO, lpProcessInformation As PROCESS_INFORMATION) _ As Long
Declare Function CloseHandle Lib "kernel32" (ByVal hObject _ As Long) As Long
Public Const NORMAL_PRIORITY_CLASS = &H20& Public Const INFINITE = -1&
2-) A seguir insira o seguinte código no formulário padrão:
Public Sub ExecCmd(cmdline$) Dim proc As PROCESS_INFORMATION Dim start As STARTUPINFO
'Inicia a strutura STARTUPINFO start.cb = Len(start)
'Inicia a aplicação escolhida para ser executada ret& = CreateProcessA(0&, cmdline$, 0&, 0&, 1&, _ NORMAL_PRIORITY_CLASS, 0&, 0&, start, proc)
'Aguarda a aplicação iniciada terminar ret& = WaitForSingleObject(proc.hProcess, INFINITE) ret& = CloseHandle(proc.hProcess) End Sub
3-) Agora adicione um botão de comando - command1 - ao formulário e no evento click do botão digite o seguinte código:
Private Sub Command1_Click()
MsgBox "Vou iniciar o Notepad"
Call ExecCmd("c:\windows\notepad.exe")
MsgBox "O Notepad foi encerrado"
End Sub
O código acima irá executar o programa Bloco de notas ( NotePad.exe ) passando as informações para a sua aplicação quando for encerrado. Você executa o programa através da função ExecCmd informando o nome e local do aplicativo que quer executar...
fonte:www.macoratti.net
|
|
|
|
|