Go To Post
Erstmal Hallo und Danke für die Tutorials!
Endlich hab ich mich mal an Olly und C++ gewagt
(kann hauptsächlich Java)
@ Fenster nicht gefunden:
Bei mir ging
TEXT Code:
FindWindow()
nicht, da der vollständige String anscheinend nicht \"MS Pinball bla\" ist...
(geht da irgendwas durch ein Locale verloren?)
Meine Lösung:
TEXT Code:
HWND fenster = 0;
while(fenster == 0)
{
EnumWindows(EnumWindowsCallback, LPARAM(&fenster));
Sleep(1000);
}
Und dazu die Hilfsfunktionen:
TEXT Code:
int FindStringInString(char *pStr, char *pFind)
{
int strLength = strlen(pStr);
int findLength = strlen(pFind);
if(pStr == 0 || pFind == 0 || strLength < findLength) return -1;
for(int i = 0; i < strLength - findLength + 1; ++i)
{
for(int j = 0; j < findLength; ++j)
{
if(pStr[i+j] != pFind[j] ) break;
if(j == strlen(pFind) - 1) return i;
}
}
return -1;
}
static BOOL CALLBACK EnumWindowsCallback(HWND hWnd, LPARAM lParam)
{
HWND* pCadetWnd = (HWND*)lParam; //zeiger auf handle holen
char sTitle[128];
char sToFind[24];
strcpy(sToFind, "Pinball"); //space cadet reinschreiben
GetWindowText(hWnd, sTitle, 128);//fenster titel reinschreiben
if(FindStringInString(sTitle, sToFind) >= 0) //sTitle enthält sToFindyy
{
*pCadetWnd = hWnd; //handle abspeichern
return false; //gefunden, callback aufrufe stoppen
}
return true; //weiter callback aufrufen
}
(für Noobs: einfach die Hilfsfunktionen vor die main-Funktion stellen, sowie den oberen Code in Kn4ck3rs Beispiel ersetzen)
-> Sucht nach String in String (hier "Pinball"), liefert unglücklicherweise natürlich auch ein Wordfenster, falls ihr Pinball.doc offen habt
2.:
Kann man die Pinballspeicheradressen dynamisch finden?
Hab das Gefühl TSearch gibt absolute Speicheradressen zurück (stimmt das?) und dadurch sind sie jedes mal leicht anders...