Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Sulje toinen prosessi toisella ohjelmalla?(C++)

Sivun loppuun

Jarkko-C++ [08.06.2005 13:57:14]

#

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;
}

Blaze [08.06.2005 15:07:14]

#

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.

Jarkko-C++ [08.06.2005 17:19:19]

#

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...

Blaze [08.06.2005 17:51:28]

#

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ä.

Jarkko-C++ [08.06.2005 18:32:00]

#

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...

Blaze [08.06.2005 18:47:09]

#

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.

kooderi [08.06.2005 19:10:34]

#

TerminateProcess lopettaa koko prosessin.

BOOL TerminateProcess(
  HANDLE hProcess,
  UINT uExitCode
);

Jarkko-C++ [08.06.2005 19:24:34]

#

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?

Blaze [08.06.2005 19:32:18]

#

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

Jarkko-C++ [08.06.2005 19:50:18]

#

Mul ei oo visual c++:saa :( ... Mutta Voiko sitä linkata jos käyttää Dev-C++:ssaa?

Blaze [08.06.2005 20:32:30]

#

En oo tuota IDEä koskaan käyttäny, mutta jos edelleen komentoriviltä, niin gcc -o muuli.exe -Xlinker psapi.lib muuli.c tjsp.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta