Avsluta ett program från ett eget skapat program

.NET

5 svar · 250 visningar · startad av prey

Medlem sedan jan. 2002341 inlägg
Trådstart#1

Vad är koden för att avsluta ett program?

Jag har ett program där bl.a. koden
Shell("C:\mittprog.exe")
finns med. Nu vill jag skapa en kontroll som avslutar mittprog.exe. Hur gör jag det?? Tacksam för svar

Medlem sedan dec. 19991 072 inlägg
#2

För att kunna avsluta en program som du har startat så behöver du programmets "handle" (hwnd).

Detta kan tex. returneras om du kör igång en process med API-anrop.
Men du kan även hämta ut "hwnd" från ett visst angivet fönster.

Låt oss säga att du har startat "notepad.exe". Programmet heter då "Notepad". För att stänga det skriver du då:
<font size="1" face="Verdana, Arial, Helvetica, sans-serif">Kod:<font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#666600">
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal _
lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal _
hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

Private Const WM_CLOSE = &H10

Private Sub Command1_Click()

dim w_handle

w_handle = FindWindow("Notepad", vbNullString)
SendMessage w_handle, WM_CLOSE, CLng(0), CLng(0)
end sub

Du hämtar alltså först upp en "handle" till programemt och sedan använder du "SendMessage" för att skicka ett meddelande till programmet som säger åt det att stänga sig.

Medlem sedan okt. 20013 217 inlägg
#3

Varför inte använda Win32 anropet "ShellExecute" på en gång ? Då får man ju tag i hwnd vid uppstart.

// BeatBox

Medlem sedan dec. 19991 072 inlägg
#4

Japp, visst är det så..

Detta kan tex. returneras om du kör igång en process med API-anrop.

För att köra igång en appl. med API skriver du:
<font size="1" face="Verdana, Arial, Helvetica, sans-serif">Kod:<font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#666600">
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

Private Sub Command1_Click()
Dim lngHwnd As Long
Dim strApp As String

strApp = "notepad.exe"
lngHwnd = ShellExecute(0&, vbNullString, strApp, vbNullString, vbNullString, vbNormalFocus)
MsgBox "Hwnd är: " & lngHwnd
End Sub

Den startar alltså Notepad.

Medlem sedan jan. 2002341 inlägg
#5

Tackar så mkt!
Det blir till å testa..

Medlem sedan aug. 2002136 inlägg
#6

Under Command1

End

256 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
118 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)