2010-10-27 65 views
0

我完全迷失在這裏。我想在控制檯應用程序中獲取進一步處理的窗口的可視內容。我知道如何找到HWND,但是我不知道該怎麼做來獲取內容。我想抓住的應用是3D,但我不知道它的Direct3D或OpenGL,但我需要每一幀處理(有些跳幀會雖然接受)獲取另一個窗口的內容

謝謝!

+0

試着用Spy ++進一步研究它的內部結構。 – mth 2010-10-27 20:25:11

+0

你只需要渲染窗口的圖像,還是需要它的內容? – Jay 2010-10-27 20:28:30

+0

我只是想要圖像,來執行圖像處理。但正如我所提到的,應用程序是3D的,所以沒有窗體。 – Veehmot 2010-10-27 21:01:07

回答

0

您需要查看BitBlt()函數。如果您不熟悉Win32 GDI,繼續進行的方式可能看起來不直觀。看看這個BitBlt() Copy and Paste tutorial。文章沒有提供整個代碼,它是VB.net,但提供了方法的概要(窗口句柄,圖形上下文,BitBlt()及其關係)。

如果這個問題是在幾個小時仍然沒有答案,我會發佈一個更精確,C++面向答案,然後(我沒有跟我的代碼現在)。

+0

BitBlt()函數是否適用於3D應用程序? – Veehmot 2010-10-28 14:01:12

+0

它抓取窗口的當前內容,無論這些內容是什麼,包括3D應用程序在其中呈現的內容。我曾幫助一位朋友在捕獲幀的一部分中使用OCR編寫3D遊戲的機器人。 – 2010-10-28 16:05:09