У меня есть следующий код: -
BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam)
{
char ay[256]={0};//HWND hwnd= GetForegroundWindow();
if( GetClassName(hwnd,ay,256))
{
char x[70]={0};
GetWindowText(hwnd,x,70);
if(IsWindowVisible(hwnd))
{
// CaptureAnImage(hwNd,hwnd);
HINSTANCE hins= (HINSTANCE) GetWindowLong(hwnd,GWL_HINSTANCE);
WNDCLASSEX lpwcx;
GetClassInfoEx(hins,ay,&lpwcx);
if (MessageBox(0,
strcat(strcat(x, "\r\n"), lpwcx.lpszClassName),
"Info", 0x06L) == IDTRYAGAIN)
{
return false;
}
}
}
return true;
}
void cstm()
{
EnumWindows(EnumWindowsProc,0);
}
Это прекрасно работает на Codeblocks (с компилятором VS 2010 (cl)), но VS2010 дает поврежденное значение lpwcx, я пробовал Unicode, а также Asciiчтобы справиться с этим, но не хороший результат на всех.Первый lpwcx правильный, но позже они возвращают класс не найден (1411), хотя hinstance и имя класса правильные.
Пожалуйста, помогите.