2
我正在嘗試獲取不可見的窗口的縮略圖圖片。獲取背景窗口的縮略圖
這裏是我到目前爲止
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中,該DLL從C#Forms應用程序調用。目前,C#應用程序只是獲取位圖並將其保存到文件中。
問題是,除非我使用FindWindow
來獲得可見窗口(這也恰好是C#應用程序),圖片最終成爲一個黑盒子。
是否有可能獲得背景窗口的圖片?
編輯:這是Windows Mobile應用程序
您是否試過在代碼中調用InvalidateRect()來強制背景窗口重新繪製自己? – Kluge 2009-04-17 16:52:02
我已經嘗試在獲取窗口DC之前以及BitBlt之前調用InvalidateRect。我也嘗試發送一條WM_PAINT消息,但這也沒有辦法。 – zort15 2009-04-20 16:36:55