我需要從Windows應用程序中抓取數據以在另一個程序中運行查詢。有誰知道在.NET中做這件事的好起點嗎?屏幕抓取c中的Windows應用程序#
回答
檢出ManagedSpy,提供源代碼。 (link)
「你也許能夠使用System.Diagnostics.Process.GetProcessesByName(」 PROCNAME「)和 檢索主窗口辦理,從那裏你可以使用WIN32 API來 獲得文本框的手柄用於顯示你想要的文字 用文本框的句柄可以得到或設置內容我是 沒有win32 API的專家,但有一點研究我已經能夠 完成類似的任務 Hope這有助於「
取自這裏:http://www.devnewsgroups.net/group/microsoft.public.dotnet.framework/topic1657.aspx
你可能想看看WM_GETTEXT message。這可能是used to read text from other windows--它是Windows API的一個陳舊部分,如果你使用C#,則需要爲它調用p /。
查看this page瞭解如何在C#中執行此操作的示例。
基本上,你首先FindControlEx()來獲得你想要的窗口的句柄(通過標題)。
其次,您使用EnumChildWindows()遞歸枚舉該窗口上的控件,以查找窗口的所有子控件以及所有這些子項的子項,直到獲得目標窗體的完整映射。
下面是來自谷歌的答案的Theta-ga's excellent explanation選定部分:
要在任何文本框或列表框控件的內容,我們需要的是它的窗口句柄。如果你已經獲得窗口句柄,然後移動到解釋的第2部分。
第1部分:獲取控制手柄
- 要獲得一個控件的句柄,我們首先得到它的父窗口句柄?我們可以通過使用Win32 FindControlEx()方法來做到這一點。該方法接受窗口標題(如'計算器')和/或其類名稱,並返回其句柄。
- 一旦我們有了父窗口句柄,我們可以調用Win32 EnumChildWindows方法。這個方法需要一個回調方法,它調用它爲指定的父對象找到的每個子控件的句柄。例如,如果我們使用Calculator窗口的句柄調用此方法,它將使用文本框控件的句柄調用回調方法,然後再次使用Calculator窗口中每個按鈕的句柄,依此類推。
- 由於我們只關注文本框控件的句柄,所以我們可以在回調方法中檢查窗口的類。 Win32方法GetClassName()可用於此。這個方法需要一個窗口句柄,併爲我們提供一個包含類名稱的字符串。所以一個文本框屬於?編輯?類,ListBox類的列表框等等。一旦你確定你有正確的控制手柄,你可以閱讀它的內容。
第2部分:讀取控制的內容
- 可以通過使用Win32的SendMessage()函數,並用它來傳遞一個控制的內容讀將WM_GETTEXT消息發送給目標控件。這會給你控件的文本內容。此方法可用於文本框,按鈕或靜態控件。
- 但是,如果您嘗試讀取列表框的內容,上述方法將失敗。要獲取列表框的內容,我們需要首先使用SendMessage()和LB_GETCOUNT消息來獲取列表項的數量。然後,我們需要爲列表中的每個項目調用帶有LB_GETTEXT消息的SendMessage()。
感謝這個有用的信息。快速的問題,如果我有矩形座標(即x,y,寬度,高度) - 我有興趣從那個矩形抓取文本,不一定是像文本框/區域一樣的窗體控件。你知道這是可能的嗎? – zenocon 2017-11-14 20:29:37
編碼輪一些文章關於他是如何能夠從撲克申請獲取信息。
檢查:deconstructing-the-poker-client-1。這可能會有所幫助。
screenscraperstudio.com
它創建了 「你刮對話」 的VB代碼。
我還沒有購買它,所以我可能是錯的,但它的唯一途徑(短期使用間諜++消息其它躲避上面滾動自己的...)
- 1. 不使用OCR或DOM屏幕抓取C應用程序?
- 2. 屏幕抓取與紅寶石的Windows應用程序可能嗎?
- 3. Phonegap結合本地代碼的屏幕抓取應用程序
- 4. 什麼應用程序或庫可用於Windows上的屏幕抓取應用程序?
- 5. 屏幕抓取交互式Web應用程序
- 6. 使用C#屏幕抓取HTTPS#
- 7. 屏幕抓取Asp.net
- 8. 使用Python屏幕抓取
- 9. 如何在Windows應用程序中截取屏幕截圖?
- 10. 如何在C#中調用Windows中的屏幕保護程序?
- 11. Windows Phone 7,獲取應用程序列表+屏幕截圖
- 12. PHP屏幕抓取方法
- 13. 屏幕抓取效率
- 14. 想與屏幕抓取
- 15. 屏幕抓取窗口
- 16. HTMLAgility幫助屏幕抓取
- 17. 如何從基於Linux的網絡應用程序3270屏幕抓取
- 18. 使用XPath的屏幕抓取
- 19. 使用SimpleHTMLDom的屏幕抓取PHP
- 20. 在Ruby中高效的屏幕抓取
- 21. 屏幕抓取java中的主機屏幕?
- 22. 將Java應用程序轉換爲Windows屏幕保護程序
- 23. 3D屏幕保護程序干擾WPF應用程序(Windows XP)
- 24. 從Windows Phone 7中的應用程序關閉屏幕
- 25. 如何使用c#windows應用程序設置windows屏幕分辨率
- 26. 在C#中用asp.net表單登錄屏幕抓取網站?
- 27. 使用.NET通過SSL抓取屏幕
- 28. 使用Java和X3270屏幕抓取
- 29. XPath不能用於屏幕抓取
- 30. 在PhoneGap上使用jQuery屏幕抓取
很好的鏈接!看起來ManagedSpyLib可能用於監視其他託管應用程序 - 它是否適用於非託管應用程序?在那種情況下,他可能想看看Spy ++。 – HanClinto 2008-12-17 16:44:31