gerry80 hat geschrieben:sorry, ich bin gerade erst von vb auf c++ umgestiegen. also ich hab es so:
Du wirst folgenden Rat nicht befolgen, aber ich gebe ihn Dir dennoch:
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...
gerry80 hat geschrieben:Code: Alles auswählen
char window[256];
HWND active = GetActiveWindow();
GetWindowTextA(active, window, 256);
String^ activewindow; //= window ??
MessageBox::Show(activewindow);
aber wie bekomme ich den char window in einen string?
ich hatte es schon so aber da bleit die messagebox eifach leer.
Herzlich Willkommen in der Hölle.
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:
gerry80 hat geschrieben:
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);
edit: ich habs gerade noch mal ausprobiert da kommt nicht nichts raus sondern nur viele zahlen.
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.
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.