我完全迷失在這裏。我想在控制檯應用程序中獲取進一步處理的窗口的可視內容。我知道如何找到HWND,但是我不知道該怎麼做來獲取內容。我想抓住的應用是3D,但我不知道它的Direct3D或OpenGL,但我需要每一幀處理(有些跳幀會雖然接受)獲取另一個窗口的內容
謝謝!
我完全迷失在這裏。我想在控制檯應用程序中獲取進一步處理的窗口的可視內容。我知道如何找到HWND,但是我不知道該怎麼做來獲取內容。我想抓住的應用是3D,但我不知道它的Direct3D或OpenGL,但我需要每一幀處理(有些跳幀會雖然接受)獲取另一個窗口的內容
謝謝!
您需要查看BitBlt()
函數。如果您不熟悉Win32 GDI,繼續進行的方式可能看起來不直觀。看看這個BitBlt()
Copy and Paste tutorial。文章沒有提供整個代碼,它是VB.net,但提供了方法的概要(窗口句柄,圖形上下文,BitBlt()
及其關係)。
如果這個問題是在幾個小時仍然沒有答案,我會發佈一個更精確,C++面向答案,然後(我沒有跟我的代碼現在)。
BitBlt()函數是否適用於3D應用程序? – Veehmot 2010-10-28 14:01:12
它抓取窗口的當前內容,無論這些內容是什麼,包括3D應用程序在其中呈現的內容。我曾幫助一位朋友在捕獲幀的一部分中使用OCR編寫3D遊戲的機器人。 – 2010-10-28 16:05:09
試着用Spy ++進一步研究它的內部結構。 – mth 2010-10-27 20:25:11
你只需要渲染窗口的圖像,還是需要它的內容? – Jay 2010-10-27 20:28:30
我只是想要圖像,來執行圖像處理。但正如我所提到的,應用程序是3D的,所以沒有窗體。 – Veehmot 2010-10-27 21:01:07