FINALIZANDO SHELL
Galera,no meu sistema as vezes tenho que executar alguns shell...tipo...net time, net view....até aà tudo bem...mas no W98, essas execuções feitas pelo shell ficam no task manager..ou seja..se eu executar 5 shellÂÂÂ's esets ficam no task manager...como faço pra depois deles serem excutados, finalizarem ?.
Obrigado !!!
Obrigado !!!
Tente finalizar assim
SendMessage("net time", WM_CLOSE, 0, 0)
SendMessage("net time", WM_CLOSE, 0, 0)
Se com Sendmessage não der use:
Em um módulo:
Aviso: tanto no SendMessage quanto no meu método, você tera de ter o hWnd da janela que vai ser fechada.
Em um módulo:
Private Const WM_QUIT = &H12
Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Sub ForceCloseWindow(Byval hWnd As Long)
If hWnd = 0 Then Exit Sub
PostMessage hWnd, WM_QUIT, &H0, &H255
End SubAviso: tanto no SendMessage quanto no meu método, você tera de ter o hWnd da janela que vai ser fechada.
Legal..como pego o hWnd num shell ?
tipo shell ("net use xxxxxx",vbhide)
tipo shell ("net use xxxxxx",vbhide)
naum.... você tera de saber a CLASSE(Use o Spy) ou o CAPTION da janela:
No módulo:
Para chamar a função:
ou
Obs: Nada impede de você especificar a classe e o caption ao mesmo tempo em FindWindow, só relembrando que se a função retornar "0", significa que a janela não foi encontrada.
No módulo:
Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Const WM_QUIT = &H12
Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Sub ForceCloseWindow(Byval hWnd As Long)
If hWnd = 0 Then Exit Sub
PostMessage hWnd, WM_QUIT, &H0, &H255
End SubPara chamar a função:
Wnd = FindWindow(VbNullString, CAPTION_DA_JANELA)
If Wnd<>0 Then ForceCloseWindow(Wnd)
ou
Wnd = FindWIndow(CLASSE_DA_JANELA, "")
If Wnd<>0 Then ForceCloseWindow(Wnd)Obs: Nada impede de você especificar a classe e o caption ao mesmo tempo em FindWindow, só relembrando que se a função retornar "0", significa que a janela não foi encontrada.
Entendi..valeu véio
Tópico encerrado , respostas não são mais permitidas