Elikkä haluaisin että saisin jonkun ohjelman suljettua toisella ohjelmalla, mutta saan korkeintaan sen ikkunan suljettua, enkä pakosti koko prosessia. Eli onko mitään mahollisuutta saada esim msn messengeriä suljettua kokonaan?
Tälläsen koodin olen parhaillaan saannut tehtyä...
#include <windows.h> int main() { HWND hWnd=FindWindow(0,"MSN Messenger"); if (hWnd!=0) { SendMessage(hWnd, WM_CLOSE, 0,(LPARAM)0); //Toimmii, sulkee ikkunan mutta ei itse ohjelmaa. SendMessage(hWnd, WM_DESTROY,0,(LPARAM)0);//Mitää ei tapahu... } else MessageBox(0,"Can't find the window!","Error!",MB_OK); return 0; }
http://blaze.dyndns.ws/~blaze/taskkill/
http://blaze.dyndns.ws/~blaze/tasklist/
Siinä mun taskkill ja tasklist. Tein joskus harkkana kun huomasin, että Windows 2000:ssa noita ei ole vakiona. Sovella, miten tahdot.
hmm.. siis.. ku latasin sen taskkill.c ja käänsin sen ja sitte ajoin ni siin vaa vilahti se musta konsoli ruutu...
Toisin sanoen niin miten ja millä noista koodeista saan esim windowsin laskimen suljettua?
Oon kyl viel aika n00b ohjelmoimisessa...
Jarkko-C++ kirjoitti:
hmm.. siis.. ku latasin sen taskkill.c ja käänsin sen ja sitte ajoin ni siin vaa vilahti se musta konsoli ruutu...
http://pp.kpnet.fi/blaze/codefaq/#justflashes
Jarkko-C++ kirjoitti:
Toisin sanoen niin miten ja millä noista koodeista saan esim windowsin laskimen suljettua?
Ensin sun pitää selvittää sen laskimen Process ID (PID), koodi siihen löytyy tuosta tasklistista, minkä jälkeen voit tappaa sen tuon PIDin perusteella, mihin koodi löytyy tuosta taskkillistä.
Ok.. nyt älyyn ees vähän. Mutta miten saan sen PID arvon syötettyä tohon taskkilliin? Siis mihin se siin pitää laittaa, eiks se tohon handlee pidä jotenkii laittaa mutta miten, jos laitan vaa suoraa ett handle=408 ni siit tulee errori...
Jarkko-C++ kirjoitti:
Ok.. nyt älyyn ees vähän. Mutta miten saan sen PID arvon syötettyä tohon taskkilliin?
Se on se argv[1]
Jarkko-C++ kirjoitti:
Siis mihin se siin pitää laittaa, eiks se tohon handlee pidä jotenkii laittaa mutta miten
Se handle on OpenProcess-funktion palautusarvo, se PID annetaan tuolle OpenProcessille.
TerminateProcess lopettaa koko prosessin.
BOOL TerminateProcess( HANDLE hProcess, UINT uExitCode );
No nyt sain sen killerin toimimaa mutta ku yritän käntää sitä tasklistä ni saan tälläsen ihme errorin: [Linker error] undefined reference to `QueryWorkingSet@12'
Mistähän toi mahtaa johtua?
Se psapi.lib pitää linkata siihen mukaan. Jos käytät Visual C++:aa komentoriviltä, niin
cl /ML /W4 tasklist.c -o tl.exe /link /NODEFAULTLIB msvcrt.lib kernel32.lib psapi.lib
Mul ei oo visual c++:saa :( ... Mutta Voiko sitä linkata jos käyttää Dev-C++:ssaa?
En oo tuota IDEä koskaan käyttäny, mutta jos edelleen komentoriviltä, niin gcc -o muuli.exe -Xlinker psapi.lib muuli.c tjsp.
Aihe on jo aika vanha, joten et voi enää vastata siihen.