Konsolen Anwendung unter Winxp - FindWindow geht nicht
-
Das Fenster hat eben nicht den Namen "Hallo"
-
SideWinder schrieb:
Das cin.ignore() nicht auf einen Tastendruck wartet, weißt du aber schon, oder?
MfG SideWinder
egal...
flenders schrieb:
Das Fenster hat eben nicht den Namen "Hallo"
Ahh ja... jetzt weiss ich Bescheid...
Tolle Hilfe
-
Pansemuckl schrieb:
SideWinder schrieb:
Das cin.ignore() nicht auf einen Tastendruck wartet, weißt du aber schon, oder?
MfG SideWinder
egal...
flenders schrieb:
Das Fenster hat eben nicht den Namen "Hallo"
Ahh ja... jetzt weiss ich Bescheid...
Tolle Hilfe1. Nicht egal - wenn sich das Fenster sofort wieder schließt kannst du es nicht finden.
2. Wie willst du ein Fenster finden wenn du nach einem Titel suchst der nicht vorhanden ist. In deinem Konsolenprogramm würde ich folgendes machen:
SetConsoleTitle("Hello World");
Dann kannst du bei dir mit
hwnd=FindWindow(NULL,"Hello World");
Dein Fenster finden!
MfG SideWinder
-
Nicht das was du in das Konsolenfenster hinein schreibst ist der Name des Fensters, sondern das was in der Titelleiste steht
-
FindWindow sucht entweder nach einem KlassenNamen (1. Parameter) oder dem Fenstertitel (2. Parameter).
Da Du in deinem Fall nur einen 2. Parameter angibst, suchst Du nach einem Fenster, welches "Hello" im Fenstertitel stehen hat.
Das wird aber bei Deiner Konsolenanwendung nicht der Fall sein. Der Fenstertitel der Konsole, in der Dein Programm läuft hat eher den Titel
D:\Eigene Dateien\C-Projekte\Hello\Hello.exe
oder so ähnlich!
Deshalb findest Du das Fenster nicht mit FindWindow.
Wenn Du den EXE-Namen finden willst mußt Du EnumWindows() aufrufen und in der EnumWindowsProc den EXE-Namen des entsprechenden Programmes (welches zu dem Fensterhandle gehört, welchen EnumWindows Dir lieferte) holen und mit dem EXE-Namen vergleichen, dessen Fenster Du suchst....
Mit FindWindow wirst Du da nicht weit kommen...
-
Hepi schrieb:
FindWindow sucht entweder nach einem KlassenNamen (1. Parameter) oder dem Fenstertitel (2. Parameter).
Da Du in deinem Fall nur einen 2. Parameter angibst, suchst Du nach einem Fenster, welches "Hello" im Fenstertitel stehen hat.
Das wird aber bei Deiner Konsolenanwendung nicht der Fall sein. Der Fenstertitel der Konsole, in der Dein Programm läuft hat eher den Titel
D:\Eigene Dateien\C-Projekte\Hello\Hello.exe
oder so ähnlich!
Deshalb findest Du das Fenster nicht mit FindWindow.
Wenn Du den EXE-Namen finden willst mußt Du EnumWindows() aufrufen und in der EnumWindowsProc den EXE-Namen des entsprechenden Programmes (welches zu dem Fensterhandle gehört, welchen EnumWindows Dir lieferte) holen und mit dem EXE-Namen vergleichen, dessen Fenster Du suchst....
Mit FindWindow wirst Du da nicht weit kommen...
Wo sind da die neuen Informationen? Und wieso kommt er mit meiner Methode nicht weit?
MfG SideWinder
-
Weil ich das geschrieben habe während Du gepostet hast!
Außerdem scheint es, das er nach einer "Hello.exe" sucht (zumindest schreibt er das).
Er schreibt in seinem Pogramm "Hallo" auf die Konsole, sucht aber nach "Hello".
Nicht gesehen?
Außerdem geht es (im entferntesten Sinne) um einen SPieletrainer, ich bezweifle jetzt mal das er den Quellcode für dieses Spiel besitzt um dort SetConsoleTitle() einzubauen!
-
Hepi schrieb:
Der Fenstertitel der Konsole, in der Dein Programm läuft hat eher den Titel
D:\Eigene Dateien\C-Projekte\Hello\Hello.exe
oder so ähnlich!
Deshalb findest Du das Fenster nicht mit FindWindow.Sehr richtig! Hatte es auch mit dem Programmpfad (der ja Titel des Konsolenfensters ist) versucht,
geht aber nicht. Auch mit GetConsoleTitle() war ich nicht weiter gekommen, weil ich u. U. mehrere Konsolen offen habe.SetConsoleTitle("Hello World"); ist die Lösung!!
Damit klappt es.
Weiss evtl. jemand, warum Konsolenanwendungen in Spy Programmen wie dem WinSpector o. Winsight nicht auftauchen? Laufen Konsolen-Appz evtl als Exlorer Threads?
Ich versuche mich jetzt noch an der 2. Lösung wie von Hepi vorgeschlagen.
Damit sollte eine Funktion *HWND FindWindowOfApp(char ExeFileName)
machbar sein.
-
Bei der letzen Version ist aber zu beachten, dass Anwendungen häufig mehrere Fenster haben
-
flenders schrieb:
Bei der letzen Version ist aber zu beachten, dass Anwendungen häufig mehrere Fenster haben
Eine Konsolenanwendung meistens nicht - keine Ahnung warum ;).
MfG SideWinder
-
... aber sie kann mehrfach gestartet sein
*nachausredesuch*