VC und Prozeßhandles
Geizhals » Forum » Programmierung » VC und Prozeßhandles (5 Beiträge, 45 Mal gelesen) Top-100 | Fresh-100
Du bist nicht angemeldet. [ Login/Registrieren ]
...
Re(3): VC und Prozeßhandles
25.06.2003, 01:39:45
hi, FindWindow pfunziwunzifunztatatut nur, wenn du die exakte window caption kennst, bei word ist das leider nicht wirklich moeglich, da da zb "Dokument1 - Microsoft Word" steht, wenn der user aber ein anderes aufmacht oder nur eine andere sprachversion von word hat, stimmt die caption nicht mehr, ist also eine schlechte idee, damit zu arbeiten.
weiters kann FindWindow aber auch auf den classname des windows gehen (auszug aus win32 sdk reference help):

<i>HWND FindWindow(
    LPCTSTR lpClassName,	// pointer to class name
    LPCTSTR lpWindowName 	// pointer to window name
   );
du kannst auf nem englischen system zb den windows taschenrechner (im wissenschaftlichen modus und natuerlich nur wenn er offen ist) entweder so finden:

hwnd = FindWindow(NULL,"Calculator"); oder so:
hwnd = FindWindow("SciCalc",NULL);
...warum auch immer heisst die class des winword2000 fensters bei mir zb "OpusApp", damit bist du schon weiter.
nun noch per SendMessage eine WM_CLOSE message schicken:

SendMessage(hwnd,WM_CLOSE,0,0);
und das ding sollte sich schliessen.
hier verwendest du die regulaere schliessen methode, was man immer machen sollte, wenn moeglich.


natuerlich gibt es auch noch die brutalo methode, den prozess einfach "abzuschiessen", was mit der TerminateProcess api geht. dazu braucht man normalerweise den process handle - aber da du ihn mit CreateProcess ja selbst erstellst, kannst du ihn schnell finden, indem du dein als PROCESS_INFORMATION deklariertes "pi" (das du scheinbar garnicht nutzt), als letztes argument an CreateProcess uebergibst ("&pi"), killen kannst du das prog dann mit:

TerminateProcess(pi.hProcess,0)
ein beispiel davon gibts zb hier: http://www.experts-exchange.com/Programming/Programming_Platforms/Win_Prog/Q_10096334.html

mfg, buggy

Antworten PM Übersicht Chronologisch Zum Vorgänger
 
Melden nicht möglich
 

Dieses Forum ist eine frei zugängliche Diskussionsplattform.
Der Betreiber übernimmt keine Verantwortung für den Inhalt der Beiträge und behält sich das Recht vor, Beiträge mit rechtswidrigem oder anstößigem Inhalt zu löschen.
Datenschutzerklärung