我有一些代碼,需要一個屏幕截圖...如何獲得屏幕截圖,包括調用窗口(XP系統)
Size ssSize;
int ssX, ssY, ssWidth, ssHeight;
Bitmap thisScreenshot;
Graphics gfxScreenshot;
public Image Screenshot()
{
ssX = Screen.PrimaryScreen.Bounds.X;
ssY = Screen.PrimaryScreen.Bounds.Y;
ssWidth = Screen.PrimaryScreen.Bounds.Width;
ssHeight = Screen.PrimaryScreen.Bounds.Height;
ssSize = Screen.PrimaryScreen.Bounds.Size;
thisScreenshot = new Bitmap(ssWidth,ssHeight);
gfxScreenshot = Graphics.FromImage(thisScreenshot);
return((Image)gfxScreenshot.CopyFromScreen(ssX, ssY, 0, 0, ssSize));
}
在W7,生成的圖像包括調用窗口的像素; 但在XP上它沒有。我希望圖像始終包含調用進程/窗口的像素。任何線索我如何強制這個?
UPDATE1: 我做這個更多的試驗,並因此我更糊塗了...... 我把上面的代碼並創建了一個完全獨立的應用程序,以便有這個之間沒有任何關係以及我最初從中啓動的應用程序。 奇怪的是,我仍然沒有在屏幕截圖中看到該應用程序的窗口。 所以現在我在截圖的過程和我想要包含在截圖中的窗口之間沒有任何關係;但是,這個窗口仍然不包括在內。 我確實嘗試了PRNT-SCRN按鈕,它確實包含了窗口。 請注意,這只是XP上的一個問題。
我已經嘗試了這兩種不同的方式。在第一個(原始)情況下,上述方法是我想要捕獲的窗口(作爲整個屏幕的一部分)的調用過程的一部分。在第二種情況下,我啓動一個進程並從那裏調用它。在這兩種情況下,XP都不包含父窗口。我的猜測是,由於某種原因,所有調用進程的祖先都不包含在屏幕截圖中。希望有一種解決方法。 – 2012-04-19 17:16:30
在這裏黑暗中摸索...你確定調用程序的窗口實際上是在你調用這個函數的時候顯示的嗎?例如,如果您在Form.Create中執行此操作,則可能窗口尚未呈現。 – 2012-04-19 18:00:52
好想法,但沒有。我調出應用程序,只需點擊一下按鈕(本質上)即可完成屏幕截圖。 – 2012-04-19 18:10:20