표시되지 않는 창 축소 그림을 가져 오려고합니다. 여기 배경 창 축소판 가져 오기
내가 결국 얻을 수있는 모든 창을 통해 루프EnumWindows
를 사용하려면,
WindowProc
는하지만, 핸들을 얻을 수
FindWindow
를 사용하여 직접 호출되고, 내가 지금까지
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(NULL, L"File Explorer"), 0);
이 코드는 DLL에 있으며 C# Forms 응용 프로그램에서 호출됩니다. 현재 C# 응용 프로그램은 비트 맵을 가져 와서 파일에 저장합니다.
FindWindow
을 사용하면 표시되는 창 (C# 응용 프로그램이 될 수도 있음)을 얻지 않으면 그림이 검정 상자가됩니다.
배경 창 그림을 얻을 수 있습니까?
편집 : 당신이 DC에서 콘텐츠를 얻을 수없는 이유는 보이지 않는 윈도우 동안 진행에는 다시 그리기가 없습니다 윈도우 모바일 응용 프로그램
코드에서 InvalidateRect()를 호출하여 백그라운드 창을 강제로 다시 그렸습니다. – Kluge
InvalidateRect를 호출하기 전에 창에 대해 DC를 가져오고 BitBlt 전에 시도했습니다. 나는 또한 WM_PAINT 메시지를 보내려고했으나 그 중 하나를하지 않았다. – zort15