[ Win API ] Elegantere Lösung möglich, um Fenster zu finden?

roxX0r

Mitglied
Hallo!

ich nutze für mein Java Programm eine in C geschriebene DLL, mit der ich ein paar native Sachen mache. Eine Sache ist z.B. (wie ich finde) etwas unelegant gelöst. Und zwar geht es darum, ein Fenster zu finden, von dem ich nicht den kompletten Titel kenne. Man kann ja mit "FindWindowEx" ein Fenster Handle suchen, wenn man der Funktion einen String mit dem Window Title gibt. Nun hab ich manchmal das Problem, dass ich in einem fremden Programm ein Fenster suche, von dem ich aber nur einen Teilstring habe. Das löse ich immoment so:

Code:
char pot[70]; //(global)
BOOL FindPot(HWND hWnd, long lParam) {
    char cBuffer[255];
    int index = 0;
    const char cFind[] = "Total pot:";
    SendMessage(hWnd, WM_GETTEXT, (WPARAM) 255, (LPARAM) cBuffer);

    int nMaxPos = strlen(cBuffer) - strlen(cFind);
    int nPos;

    if (strncmp(cBuffer, cFind, strlen(cFind)) == 0) {
        GetWindowText(hWnd, pot, 70);
        return FALSE;
    }
    return TRUE;
}

Diese Funktion rufe ich dann so auf:
Code:
EnumChildWindows(h, (WNDENUMPROC) FindPot, 0);

Ich weiß z.B. auch nicht, wie ich das Ergebnis der Funktion FindPot besser in die Aufrufende Methode bekomme, also über eien globale Variable. Da man bei "EnumChildWindows" da irgendwie keinen Spielraum für zusätzliche Variablen hat...

Komem halt nicht so aus der C welt, hat jemand ne Idee wie das besser läuft?
Manchmal stürzt nämlich auch das Tool ab, weil es ne Zugriffsverletzung im C Code gab. Das passiert unregelmäßig und ich denke es liegt vielleicht an der unsauberen Lösung?
 
Kannst du dann deine Lösung mal posten? Könnt ich auch gut gebrauchen ...*edit*... ich Windows und hab deswegen nie bock irgend etwas in Windows zu suchen, weil das stinkt.
 
Zuletzt bearbeitet:
Zurück