hiilfee,
ich schaffe es einfach nicht den Fensternamen des aktiven fenster als string in einer windows formanwendung in c++ auszulesen. ich weiss nicht was man bei LPSTR machen muss bitte helft mir.
GetWindowText in Windows Forms
- cloidnerux
- Moderator
- Beiträge: 3125
- Registriert: Fr Sep 26, 2008 4:37 pm
- Wohnort: Ram (Gibts wirklich)
Re: GetWindowText in Windows Forms
Hi und Willkommen im Forum.
Da der allgemeine Vorrat an Kristallkugeln aus gegangen ist, präzisiere dich bitte etwas mehr
http://proggen.org/doku.php?id=faq:frageformulieren
MfG cloidnerux.
Da der allgemeine Vorrat an Kristallkugeln aus gegangen ist, präzisiere dich bitte etwas mehr

http://proggen.org/doku.php?id=faq:frageformulieren
MfG cloidnerux.
Redundanz macht wiederholen unnötig.
quod erat expectandum
quod erat expectandum
- Xin
- nur zu Besuch hier
- Beiträge: 8862
- Registriert: Fr Jul 04, 2008 11:10 pm
- Wohnort: /home/xin
- Kontaktdaten:
Re: GetWindowText in Windows Forms
Ich kann Deine Frage soweit auch nicht verstehen.
Ein LPSTR ist ein "LongPointer" auf einen "STRing". Ein normaler C-String.
Ein LPSTR ist ein "LongPointer" auf einen "STRing". Ein normaler C-String.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Re: GetWindowText in Windows Forms
sorry, ich bin gerade erst von vb auf c++ umgestiegen. also ich hab es so:
aber wie bekomme ich den char window in einen string?
ich hatte es schon so aber da bleit die messagebox eifach leer.
edit: ich habs gerade noch mal ausprobiert da kommt nicht nichts raus sondern nur viele zahlen.
Code: Alles auswählen
char window[256];
HWND active = GetActiveWindow();
GetWindowTextA(active, window, 256);
String^ activewindow; //= window ??
MessageBox::Show(activewindow);
ich hatte es schon so aber da bleit die messagebox eifach leer.
Code: Alles auswählen
char window[256];
HWND active = GetActiveWindow();
GetWindowTextA(active, window, 256);
String^ activewindow;
int i = 256;
for( int s = 1; s < i; s++)
{
activewindow += window[s];
}
MessageBox::Show(activewindow);
- Xin
- nur zu Besuch hier
- Beiträge: 8862
- Registriert: Fr Jul 04, 2008 11:10 pm
- Wohnort: /home/xin
- Kontaktdaten:
Re: GetWindowText in Windows Forms
Du wirst folgenden Rat nicht befolgen, aber ich gebe ihn Dir dennoch:gerry80 hat geschrieben:sorry, ich bin gerade erst von vb auf c++ umgestiegen. also ich hab es so:
Vergiss alles, was Du jemals in VB gelernt hast und beginne bei Null. Keine Windows-Programmierung, setz Dich auf die Konsole und lerne programmieren, dann die Zusammenhänge und wenn es dann tatsächlich noch Windows-Programmierung sein muss (und das muss unter C++ wirklich nicht sein), dann schau Dir die Historie von Windows an. Du kombinierst nämlich hier gerade ein komplexes, neuartiges Flugzeug mit Teilen einer Dampfmaschine. Es ist für Experten schon schwer, das zum Fliegen zu bringen, es explodiert dafür einfach zu gerne...
Herzlich Willkommen in der Hölle.gerry80 hat geschrieben:aber wie bekomme ich den char window in einen string?Code: Alles auswählen
char window[256]; HWND active = GetActiveWindow(); GetWindowTextA(active, window, 256); String^ activewindow; //= window ?? MessageBox::Show(activewindow);
ich hatte es schon so aber da bleit die messagebox eifach leer.
Du mischst hier WinAPI-Programmierung und das .NET-Framework. Das Vergnügen habe ich beruflich auch, allerdings programmiere ich schon etwas länger. Bitte lies Dir meinen Rat nochmals durch. Ich weiß, dass man ganz schnell tolle GUIs haben will und so weiter, aber es kann nicht schaden vorher programmieren zu lernen - zumal GUI-Programmierung zu den langweiligsten Dingen in der Informatik gehören.
String ^ ist .NET und muss mit einer Microsoft-Erweiterung gcnew angelegt werden, damit es über den Garbage-Collector läuft. Das ist kein C++! Das ist Microsoft-Voodoo. Wenn Du lernen willst, etwas zu programmieren, was auch mal auf einem Linux oder Mac-System laufen soll, dann Finger davon!
Entweder .NET oder WinAPI. Mischen darfst Du, wenn Du beides kannst und zwischen den beiden Monstern eine Brücke brauen kannst.
Du brauchst einen LPTSTR, was nix anderes ist als ein (char *). Du musst auf ein Array zeigen, dass (mindestens) so lang ist, wie Du als drittens Argument angeben hast, so wie Du es hier gemacht hast:
Hehehe, bitte lerne erstmal die Werkzeuge kennen, bevor Du wild mit dem Inhalt des halben Werkzeugkasten auf den Code einschlägst und auch noch .NET und WinAPI wild vermischst.gerry80 hat geschrieben:edit: ich habs gerade noch mal ausprobiert da kommt nicht nichts raus sondern nur viele zahlen.Code: Alles auswählen
char window[256]; HWND active = GetActiveWindow(); GetWindowTextA(active, window, 256); String^ activewindow; int i = 256; for( int s = 1; s < i; s++) { activewindow += window[s]; } MessageBox::Show(activewindow);
Bitte vergiss alles, was Du in VB gelernt hast. Bitte fang bei Null an neu zu lernen. Wenn ich sehe, dass man i (wie Index) als Arraygröße nimmt und s (wie size) als Index, dann sehe ich, dass Du nicht soweit bist, Dich in den Bereich der Programmierung zu setzen, den selbst Microsoft mit .NET am liebsten vergessen machen möchte.
Ansonsten kannst Du Deinen (LPTSTR-)String auch gleich mit der MessageBox-Funktion über die WinAPI ausgeben.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
- Xin
- nur zu Besuch hier
- Beiträge: 8862
- Registriert: Fr Jul 04, 2008 11:10 pm
- Wohnort: /home/xin
- Kontaktdaten:
Re: GetWindowText in Windows Forms
Und was heißt Danke? ^^gerry80 hat geschrieben:Danke
Wie geht's bei Dir weiter?
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.