Juu, millasenkohan api kutsun tarvitsee että saa muita sovelluksia sulkeutumaan tietämällä niiden hWnd:n? Teen hienoa tehtävienhallintaa jossa voi näyttää, piilottaa, suurentaa, pienentää ja toivottavasti kohta sulkeakin ohjelmia... vähä sillä on kiva leikkiä täällä koulussa :P
Löytyy tuolta: koti.mbnet.fi/koodaaja/
Yksi tapa on lähettää suljettavalle ohjelmalle WM_CLOSE-viesti SendMessage-funktion avulla. Seuraava ohjelma sulkee itsensä tällä tavalla.
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 Form_Click() Dim x As Long x = SendMessage(Me.hwnd, WM_CLOSE, 0, 0&) End Sub Private Sub Form_Unload(Cancel As Integer) MsgBox "Nyt ohjelma suljetaan." End Sub
Kuitenkin suljettavalla ohjelmalla on vielä mahdollisuus vaikuttaa asiaan (vertaa VB:n Unload-aliohjelma), joten todellinen sulkeutuminen ei ole takuuvarmaa. Esim. monet ohjelmat kysyvät, tallennetaanko avoin tiedosto. Jos joku tietää paremman keinon, kertoa saa.
Tota mä just yritin ja se ei tykkää sulee muita ku mun sen oman ohjelman... :(
Näemmä muiden kuin oman ohjelman sulkemiseen täytyy käyttää PostMessage-funktiota (mikä lie syynä). Kirjoita siis ohjelman alkuun uusi funktiomäärittely:
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
Ja vaihda funktion nimi muualla ohjelmassa. Parametrit ovat samat ja ainakin minulla tuntui onnistuvan näin muidenkin ohjelmien sammuttaminen.
Aihe on jo aika vanha, joten et voi enää vastata siihen.