GetWindowModuleFileName
-
Kein Problem, dachte erst ich hätte mich verschrieben
GetLastError kommt mit 0 zurück. Also ist alles mit dem Handle an sich ok.
-
HWND hwnd = ::FindWindow(0,"Rechner"); LPTSTR Filename="leer"; GetWindowModuleFileName(hwnd, Filename, sizeof(Filename)); MessageBox(Filename);
Dein Code kann nicht funktionieren.
1. Initialisierst Du einen Zeiger mit einem konstanten Speichern in den nicht geladen werden kann.
2. Ist die Länge 4 diese Zeigers 4 und entsprich tnicht der Größe auf was es zeigt.Versuche es mal so:
HWND hwnd = ::FindWindow(0,"Rechner"); TCHAR szFilename[MAX_PATH]; GetWindowModuleFileName(hwnd, szFilename, MAX_PATH); MessageBox(szFilename);
-
Hallo Martin,
jetzt habe ich in der MessageBox für die Ausgabe allerdings ziemlich wilde Zeichen stehen.
Irgendwas scheint da noch nicht zu stimmen.
-
Zeig mal Deinen Code!
-
Aloha,
wenn man das ganze so ausgeben will kommen nur Sonderzeichen raus.
Kann man den TCHAR vlt. nicht so in eine MessageBox drücken?
-
Was meinst Du mit drücken?
Zeige mal Deinen Code (zum zweiten)!Jede MessageBox nimmt einen TCHAR array als Parameter, sogar mehrere
-
Ich dachte immer eine einfache Zuweisung würde reichen:
HWND hwnd = ::FindWindow(0,"Rechner"); TCHAR szFilename[MAX_PATH]; GetWindowModuleFileName(hwnd, szFilename, MAX_PATH); CString inhalt; inhalt = szFilename; MessageBox(inhalt);
Mehr Code hab ich ja gar net.
-
Und wo wertest du mögliche Fehlsituationen aus? Sowohl der FindWindow() als auch der GetWindowModuleFileName() Aufruf könnten schiefgehen.
-
Hi CStoll,
ich habe die Fehlerbehandlung hier im Posting rausgelassen, da alles mit
ER_SUCCESS zurückkehrte.Das einzige Problem ist, dass mir in szFilename nur Sonderzeichen
ausgegeben werden. Und da komme ich einfach nicht weiter. Googel ist zwar
mein Freund, aber auch hier war das Problem so nirgends zu finden.
-
Bist Du sicher das HWND nicht NULL liefert?
Was ist der Returnwert von GetWindowModuleFileName?
-
Hi,
bin absolut sicher:
if(hwnd!=NULL) { //usw...tritt auch ein //GetLastError nach GetWindowModuleFileName liefert "0" }else { MessageBox("Fehler!"); }
Bekommt ihr da denn bei euch ein Ergebnis raus??
-
Ich habe es jetzt mit GetWindowThreadProcessId() gelöst, aber warum
das nicht wie in meinem ersten Code funktioniert würde mich schon
sehr interessieren.Hat der Code bei euch denn überhaupt ein sinnvolles Ergebnis ausgegeben?