我的主要方法中有这行代码:
IntPtr hhook = SetWinEventHook(EVENT_SYSTEM_FOREGROUND, EVENT_SYSTEM_FOREGROUND, IntPtr.Zero, procDelegate, 0, 0, WINEVENT_OUTOFCONTEXT);
然后我在课堂上有这个:
delegate void WinEventDelegate(IntPtr hWinEventHook, uint eventType, IntPtr hwnd, int idObject, int idChild, uint dwEventThread, uint dwmsEventTime);
static void WinEventProc(IntPtr hWinEventHook, uint eventType, IntPtr hwnd, int idObject, int idChild, uint dwEventThread, uint dwmsEventTime)
{
// filter out non-HWND namechanges... (eg. items within a listbox)
if (idObject != 0 || idChild != 0)
{
return;
}
SaveImage(Capture(hwnd), hwnd);
Console.WriteLine("Handle: {0:x8}", hwnd.ToInt32());
}
我对这段代码有一个小问题,很难说清楚,所以请耐心等待。这段代码背后的基本思想是,我想在前台截取当前应用程序的屏幕截图并将其保存到 C 驱动器上的某个位置。到目前为止,我的代码允许我这样做,但它并不总是完全按照我想要的方式工作。问题是,有时当我单击应用程序(因此将其置于前台)时,它会在窗口有时间完全最大化之前拍摄照片。这导致我的屏幕截图文件夹中充满了应用程序背后的桌面屏幕截图。
有没有办法等到窗口完全最大化,然后再调用我的屏幕截图功能?