Мне нужно получить количество окон проводника, исрользую код Код (Text): ctl32.lib") int childWindows = 0; BOOL CALLBACK EnumChildWindowsProc(HWND hwnd, LPARAM lParam) { CHAR lpClassName[15]; GetClassName(hwnd, lpClassName, 15); if(strcmp(lpClassName, "SysListView32") == 0) { childWindows++; } return TRUE; } BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam) { CHAR lpClassName[15]; GetClassName(hwnd, lpClassName, 15); if ((strcmp(lpClassName, "ExploreWClass") == 0)||(strcmp(lpClassName, "CabinetWClass") == 0)) EnumChildWindows(hwnd, EnumChildWindowsProc, lParam); return TRUE; } int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) { //Enumerate all desktop windows (Top level) EnumWindows(EnumWindowsProc, 0); char buff[256]; wsprintf(buff,"Number=%lu",childWindows); MessageBox(NULL,buff,"Number windows",MB_OK); return 0; } Количество упрямо 0. Не понимаю,где мог ошибиться.
1. Код (Text): //Исправьте на if ((strcmp(lpClassName, "ExploreWClass") == 0)||(strcmp(lpClassName, "CabinetWClass") == 0)){ EnumChildWindows(hwnd, EnumChildWindowsProc, lParam); return FALSE; // Если нашли окно не надо продолжать искать } Код (Text): // очень хочется верить, что lpClassName именно указатель достаточного размера GetClassName(hwnd, lpClassName, 15); // например так, (Юникода у вас не нашел) char lpClassName[15]; GetClassName(hwnd, (LPSTR) &lpClassName, 15);