Wie kommst du auf die Idee, dass die EnumWindows() zu übergebene Callback Procedure nur einen Parameter hat? Damit zerschiesst du den gesamten Stack!

Zitat von
MSDN:
BOOL CALLBACK EnumWindowsProc(
HWND hwnd,
LPARAM lParam
);
Schau in die
MSDN
EnumWindowsProc und
EnumWindows()