Я пытаюсь получить уменьшенные изображения окон, которые не видны.
Вот код, который у меня пока есть
BOOL CALLBACK WindowProc(HWND hWnd, LPARAM lParam)
{
RECT WindRect;
GetWindowRect(hWnd, &WindRect)
CurrentScreenShot->Next = new ScreenShotList();
CurrentScreenShot = CurrentScreenShot->Next;
HDC SourceDC = GetDC(hWnd);
HDC TargetDC = CreateCompatibleDC(SourceDC);
CurrentScreenShot->ScreenShot = CreateCompatibleBitmap(SourceDC, WindRect.right - WindRect.left, WindRect.bottom - WindRect.top);
BitBlt(TargetDC, 0, 0, WindRect.right - WindRect.left, WindRect.bottom - WindRect.top, SourceDC, 0, 0, SRCCOPY);
ReleaseDC(hWnd, SourceDC);
g_iWindows++;
return TRUE;
}
На данный момент WindowProc
вызывается напрямую, используя FindWindow
, чтобы получить дескриптор, хотя, в конце концов, я хочу использовать EnumWindows
, чтобы перебрать все окна, чтобы получить их эскизы и сохранить их в связанном списке. .
WindowProc(FindWindow(NULL, L"File Explorer"), 0);
Этот код находится в DLL, которая вызывается из приложения C # Forms. На данный момент приложение C # просто берет растровое изображение и сохраняет его в файл.
Проблема в том, что если я не использую FindWindow
, чтобы получить видимое окно (которое также является приложением C #), изображение в конечном итоге становится черным ящиком.
Можно ли получить изображение фонового окна?
РЕДАКТИРОВАТЬ : Это приложение для Windows Mobile