Kleine Frage
-
ja,
nur leider geht das mit meiner funktion wahrscheinlich nicht :
char* WinGetTitle() { char title[512]; HWND hwnd = GetForegroundWindow(); GetWindowText(hwnd, title, 512); return title; }
-
Help Me schrieb:
...
und tun tut es :
nichts
DAS glaube ich mal gar nicht. Es sollte zumindestens regelmäßige printf()-Aufrufe (ODER Sleeps() - halte ich im Programmzusammenhang aber für seeehr unwahrscheinlich) machen. Wenn es das auch nicht tut, slltest Du mal nachsehen, was _tmain() macht.
Gruß,
Simon2.
-
also es macht console auf
und schreib nix rein
und console bleibt offen
aber steht nie was drinnen..
-
Help Me schrieb:
also es macht console auf
und schreib nix rein
und console bleibt offen
aber steht nie was drinnen..Da hilft nur eins: Debuggen.
zum "Schmalspurdebugging" kannst Du erstmal hinter jede Zeile (in der main-Funktion) ein printf() reinhauen ... wenn dann immer noch nichts kommt, ist es ein Problem mit der Win-API-Programmierung (sprich _tmain() wird nicht aufgerufen)... in der ich micht nicht auskenne.
Hat dann aber nichts mit der Sprache selbst zu tun (von den "Sprachfehlern", die oben schon genannt wurden, mal abgesehen).Gruß,
Simon2.
-
Dieser Thread wurde von Moderator/in evilissimo aus dem Forum C++ in das Forum WinAPI verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
also ich habe nun das gemacht :
#include "stdafx.h" #include "windows.h" char* WinGetTitle(); int _tmain(int argc, _TCHAR* argv[]) { char* Window = ""; while(true) { char* Window2 = WinGetTitle(); if (Window==Window2) { printf("TEST"); SleepEx(10,true); } else { printf("%s",Window2); Window = Window2; } SleepEx(100,true); } } char* WinGetTitle() { char title[512]; HWND hwnd = GetForegroundWindow(); GetWindowText(hwnd, title, 512); return title; }if (Window==Window2) { printf("TEST"); SleepEx(10,true); }da hab ich das printf("TEST"); dazu gegeben nun printet er die ganze zeit TEST.
-
Verwendet man _tmain nicht für Unicode Kompatibilität?
Dann solltest Du eventuell auch die _t Variante von printf() verwenden: _tprintf(), und string Literale als _T("bla")
MSDN
-
Help Me schrieb:
da hab ich das printf("TEST"); dazu gegeben nun printet er die ganze zeit TEST.
Ja, weil Window und Window2 gleich sind. Window2 enthält nach wie vor einen Pointer ins Nirvana.

-
Hallo
wie Simon schon bemerkt hat, ist deine String-Verarbeitung fehlerhaft.
char* WinGetTitle() { char title[512]; ... return title; }ist falsch. Du gibst einen Pointer auf ein lokales Array zurück, was nach der Funktion aber nicht mehr gültig ist. Folge ist undefiniertes Verhalten, schlimmstensfalls Zugriffsverletzungen. Lösungen : ein dynamisches Array anstelle des statischen, was du dann aber auch selber wieder löschen must. Oder die bessere und C++ Variante : std::string als Rückgabewert verwenden.
if (Window==Window2)ist falsch. Da beides Pointer auf C-Strings sind, werden nur die Pointeraddressen verglichen, nicht die Inhalte. Folge ist das diese Bedingen bei dir niemals wahr ist. Lösung : Die Funktion strcmp benutzen oder besser noch std::string verwenden.
Window = Window2;ist falsch. Hier werden nur die Adressen der Pointer kopiert, nicht die Inhalte.
Lösung : Die Funktion strcpy verwenden, oder besser std::stringZu allen genannten Stichpunkten findest du hier im Forum genug Beispiele.
bis bald
akari
-
akari danke für die ausfürhliche erklärung aber ich bekomm das irgent wie nicht hin ^^
-
Hallo
dann such dir erstmal ein gutes C oder C++ Tutorial (je nachdem ob du C oder C++ machen willst) und lern erstmal die Grundlagen. Zu finden oben rechts in dem Menü über den Link Tutorials.
bis bald
akari
-
Hallo
Help Me schrieb:
akari danke für die ausfürhliche erklärung aber ich bekomm das irgent wie nicht hin ^^
Was genau bekommst du denn nicht hin?
chrische