2010-04-09 100 views
6

我正在寫一個應用程序,它需要自動拍攝屏幕截圖(就像按PrintScreen按鈕一樣)。所以請建議我如何完成這一工作。原始的24位BMP圖像就足夠了。獲取屏幕截圖的任何Win32 API?

請注意:我的應用程序在C中,所以任何可以從我的代碼中調用的win32 API都是我正在尋找的。

(有時候回來我從codeproject那裏得到了一個代碼,用來獲取屏幕截圖,但是當屏幕截圖時鼠標指針用戶眨眼,因爲拍攝多張圖片會讓用戶感到惱火,所以我不想將鼠標指針閃爍)

+1

當你搜索Google for winapi截圖時,你發現了什麼? http://www.google.com/search?q=winapi+screenshot – 2010-04-09 11:19:49

+1

謝謝, 我一定是一個傻瓜,不要嘗試之前。對不起:) 這真的有幫助==> http://groups.google.com/group/win32-programming/browse_thread/thread/55c030edbaeaf026 – Microkernel 2010-04-09 11:56:28

回答

11

GetDC(NULL) + BitBlt()

爲了捕捉半透明/阿爾法/分層的窗口,你必須通過CAPTUREBLT標誌BitBlt,如果你這樣做光標閃爍,讀取this technet article找出原因。

在NT6 +上,您可以使用Magnification API來做你想做的事。

+0

嗨, 感謝您的。 現在我記得,我做的一個導致鼠標指針閃爍的嘗試是GetDC()+ BitBlt()。這就是主要問題:(我不希望指針閃爍... 任何方式來無縫地獲取屏幕截圖??? – Microkernel 2010-04-09 11:44:22

+0

只是不通過CAPTUREBLT標誌 – Anders 2010-04-09 11:48:08