Laufendes Programm beenden
-
Böser Junix, sagst hier meinen Vornamen *g* Also ich verklag dich gleich -rofl-
Aber nur mal so, du bist hier derjenige, der zur Zeit am wenigsten über "blödsinnige Kommentare" zu labern hat, denn von dir kommen sie ja in meinen themen, nicht wahr?
.......Ueli!?
-
In deiner Sig. ist immernoch ne menge falsch. was deinen Vornamen betrifft... so kann ja jeder bei nic.de seine Whois-abfrage starten... (so wie du bei switch... wobei.. ne steht ja auch auf meiner Page...) meine Kommentare sind nicht blöd sonder teils als Rat gemeint und teils in meiner Pflicht als Mod entstanden.
So aber nu ist auch hier Schluss mit OT.
-junix
-
Original erstellt von <SlashXP++>:
**// #include "windows.h"
HWND hwnd;
hwnd = FindWindow( "notepad", NULL );
SendMessage( hwnd, WM_CLOSE, 0, 0 );Verstanden?? ;)**
Ja, aber an der Frage vorbei (und auch noch ohne Code-Tags... Pfui!)!
Frage war:
"Ich würde gerne eine laufende .exe Datei beenden. Kann man dies direkt tun oder muss man die thread id herausfinden und diesen dann beenden? (Wie findet man eine thread id heraus?)"[ Dieser Beitrag wurde am 23.06.2003 um 15:52 Uhr von Hepi editiert. ]
-
Also mein Code; (entspricht eigentlich fast ganz dem Code von Hepi)
//lib's sind includiert und funkionsdefinitionen stehen auch alle da, //brauch ich nicht zu erwähnen //Aufruf für Funktion, bei mir wenn ein button gedrückt wird EnumWindows(EnumProc, NULL); //Funktionen BOOL CALLBACK EnumProc(HWND hwnd, LPARAM lParam) { // // Jetzt haben wir ein HWND irgendeines Fensters // Also holen wir uns den Pfad zur zugehörigen EXE // char Buffer[MAX_PATH]; char szPfadMitExe[]="c:\Windows\NotePad.exe"; ZeroMemory(Buffer, sizeof(Buffer)); // Buffer leer machen... GetPathFromHandle(hwnd, Buffer); if (stricmp(Buffer, szPfadMitExe)==NULL) { // // _stricmp vergleich 2 strings miteinander // wobei es GROSS- und kleinschreibung // komplett ignoriert! // Oha, es MUSS notepad.exe sein! // Also beenden wir es mal... // SendMessage(hwnd, WM_CLOSE, NULL, NULL); return FALSE; // FALSE = EnumWindows kann aufhören } else return TRUE; // TRUE = weitermachen } void GetPathFromHandle(HWND hWnd, LPTSTR szPathFromHandle) { // // benötigt psapi.lib und psapi.h!!! // läuft nur unter NT-basierenden Windows // Also WinNT, Win2000, WinXP! // DWORD lpdwProcessId; HANDLE hProcessHandle; GetWindowThreadProcessId(hWnd, &lpdwProcessId); hProcessHandle = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, TRUE, lpdwProcessId); GetModuleFileNameEx(hProcessHandle, NULL, szPathFromHandle, MAX_PATH); CloseHandle(hProcessHandle); }
Fehler sind gleich wie zuletzt geblieben (Lib's SIND eingebunden!)
-
Ist das dein kompletter Quellcode???
-
Was meinst du genau mit kompleter Quellcode? Das gesamte Programm? Ich hab das genommen was du mir gesagt hast. Ich hab ja gesagt das ich diesbezüglich fast nichts kann!
-
Du sollst Dein _komplettes_ Programm hier zeigen...
Also, angefangen bei der ersten Zeile (vermutlich #include <windows.h> )
bis hinunter zur letzten schließenden Klammer }
-
Das geht nicht. Ist extrem umfangreich, es handelt sich ja schließlich nicht nur um ein Programm das Programme schließt.
-
Das ist der Moment, wo ich mich ausklinke....
1.) Ohne Deinen kompletten Quellcode zu kennen vermag ich Deine Fehler nicht zu beheben
2.) Deine Aussagen "Ich mußte den Quellcode anpassen, damit der BCB ihn schluckt" stimmen mich nachdenklich: Als ich zuletzt mit dem BCB Berührung hatte war es ein Standard-C++ Compiler/Linker, der mit JEDEM Code OHNE ANPASSUNG funktioniert! Das Du dort etwas "anpassen" mußt stimmt mich wirklich nachdenklich!
Viel Erfolg weiterhin...
-
In dem Fall war die 'Anpassung' das weglassen eines Underscore-Zeichens.
Vielen Danke für deine bisherige Hilfe, immerhin kann ich jetzt zwar keine Prozesse, aber doch immerhin manche windows schließen