PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : EnumWindows Funktion



Sasori
07.10.2008, 21:42
Hi,
bräuchte mal ein wenig Hilfe mit dieser Funktion. Bei mir gibt die nämlich nur müll aus und nicht den(die) Fenstertitel. Hier mal die Funktion:



BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lparam)
{
TCHAR windowname[255];;
GetWindowText(hwnd,windowname, sizeof(windowname));
printf("%s\n", windowname);
return TRUE;
}


int _tmain(int argc, _TCHAR* argv[])
{

EnumWindows(EnumWindowsProc,NULL);
return 0;
}

Meine Vermutung: Ich denke irgendwas stimmt mit dem Datentyp der Variable windowname nicht, bin mir aber nicht sicher :roll:
Wär nett wenn wer meinen Fehler finden könnte.

mfg

noctem
07.10.2008, 22:18
Dein Code macht mich gerade ganz perplex. :D Ist das C#?

Was mir auffällt:


EnumWindows(EnumWindowsProc,NULL);

Du übergibst EnumWindows() als erstem Parameter EnumWindowsProc.
In deinem Code sehe ich aber keine Variable EnumWindowsProc sondern nur folgende Funktion:

BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lparam)
Und diese Braucht natürlich auch ihr Parameter.
Müsste dann so aussehen.


EnumWindows(EnumWindowsProc(/*dein hwnd*/, /*dein lparam*/),NULL);


Oder ist das was C#, wenn es denn das ist, spezifisches?

blackberry
07.10.2008, 22:47
Bitteschön:

#include <stdio.h>
#include <windows.h>


// BOOL (groß) = int
int __stdcall EnumWindowsProc1(HWND, LPARAM);

int main(void)
{
EnumWindows(EnumWindowsProc1, (LPARAM) 0);
return 0;
}

int __stdcall EnumWindowsProc1(HWND hWnd, LPARAM lParam)
{
char buffer[200];
GetWindowText(hWnd, buffer, sizeof(buffer) - 1);
if (buffer[0] != 0) /* fenster ohne namen überspringen */
printf("- %s\n", buffer);
return true;
}

Ausgabe:

blackberry@system:~/Desktop$ wine a.exe
- Find Text
- Dev-C++ 4.9.9.2
- WebUpdate
- Replace Text
- Incremental Search
- Dev-C++
- Wine System Tray

Sasori
08.10.2008, 13:08
Nunja erstmal danke für die Hilfe, leider hab ich das Problem immernoch.
Der Code funktioniert, aber nicht so wie ich es will^^

Visual c++ 2008 kompiliert, soweit ich das jetzt mitbekommen habe, nur mit Unicode. Irgendwie will der Code aber mit wchar_t nicht laufen, irgendjemand ne Idee`?


@noctem: is kein C#, dass ist C/C++ und der Funktionsaufruf funktioniert :lol:

blackberry
08.10.2008, 13:13
Und wozu brauchst du Unicode?
Und warum benutzt du MSVC (ich kann das Ding nicht ausstehen)?

Sasori
08.10.2008, 13:22
Na ausgesucht hab ichs mir ja nicht, was soll ich machen wenn das Ding die Win32 Projekte nur mit Unicode kompiliert bzw. was soll ich denn sonst verwenden außer MSVC??^^

mfg

blackberry
08.10.2008, 13:32
Mingw32 (in Dev-C++)

staebche
09.10.2008, 17:02
Mingw32 (in Dev-C++)
Tschuldige Blackberry =) ich weiss das du mehr drauf
hast als einige andere hier, aber bei der IDE (ich wollte
schon compiler schreiben) habe ich schon öfters schlechte
erfahrungen gemacht.

am besten sasori du nimmst codeblocks. daran wird
wenigstens noch weitergearbeitet, und der compiler
ist er selbe wie in dev.cpp

hier mal en link Download (http://www.codeblocks.org/downloads/5)