[C++] Titel des fokusierten Fensters auslesen

PatrickB

Well-known member
ID: 137508
L
24 April 2006
496
13
Hi,

bin grad wieder dabei C++ versuchen zu programmieren.

Nun möchte ich den Titel des Fokusierten Fensters auslesen.

Hier mal mein Code soweit:

PHP:
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) 
{
HWND fgw;
std::string fgws;

                    fgw = GetForegroundWindow();
                    int textlength = GetWindowTextLength(fgw);
                    int windowt = GetWindowText(fgw,fgws,textlength + 1);
...
}
Mit GetForegroundWindow() bekomm das aktuelle fokusierte Fenster.
Dann versuche ich mit GetWindowTextLength die Länge des Titels zu speichern.
Und zuletzt will ich mit GetWindowText den Titel dann abfragen (wobei ich hier ja erst nur einen Integer zurückbekomme..)

Nur klappt das jetzt mit dem std::string wieder irgendwie nicht :roll:

Hier mal der Fehlercode:

'GetWindowTextA' : Konvertierung des Parameters 2 von 'class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >' in 'char *' nicht moeglich
Kein benutzerdefinierter Konvertierungsoperator verfuegbar, der diese Konvertierung durchfuehren kann, oder der Operator kann nicht aufgerufen werden

Wie bekomm ich den string jetzt so hin dass er in char * konventiert wird?


Bin dankbar für jede Hilfe,


Patrick
 
Edit: Quatsch, was ich da unter Zeitdruck hingeschrieben hab ;).

Code:
HWND fgw;
char* fgws;
int textlength;
int windowt;
fgw = GetForegroundWindow();
textlength = GetWindowTextLength(fgw);
fgws = (char*)malloc((textlength+1)*sizeof(char));
windowt = GetWindowText(fgw,fgws,textlength + 1);
...
free(fgws);
 
Zuletzt bearbeitet:
Edit: Quatsch, was ich da unter Zeitdruck hingeschrieben hab ;).

Code:
HWND fgw;
char* fgws;
int textlength;
int windowt;
fgw = GetForegroundWindow();
textlength = GetWindowTextLength(fgw);
fgws = (char*)malloc((textlength+1)*sizeof(char));
windowt = GetWindowText(fgw,fgws,textlength + 1);
...
free(fgws);

Okay, habs noch nicht ausprobiert. Geht das aber anstatt mit dem char * auch irgendwie mit std::string?
Weil später muss ich zwei strings zusammenfügen.
 
fgws hast du ja zwischendurch ausgelesen, Konversion in std::string geht dann einfach über dessen Konstruktor:
Code:
std::string str(fgws);

Aso.. und was C++ angeht, wäre es sauberer, statt malloc und free lieber new [] und delete [] zu benutzen, aber das macht hier keinen Unterschied.
 
fgws hast du ja zwischendurch ausgelesen, Konversion in std::string geht dann einfach über dessen Konstruktor:
Code:
std::string str(fgws);
Aso.. und was C++ angeht, wäre es sauberer, statt malloc und free lieber new [] und delete [] zu benutzen, aber das macht hier keinen Unterschied.

Okay, danke. Ich werds mal ausprobieren :)