2011-12-26 13 views
1

我正在尋找一種方法來獲取Windows機器上隨時可能在桌面上顯示的任意窗口的屏幕座標邊界。例如,假設您在桌面上的Adobe中打開了一個pdf文檔,我希望能夠使用某個書面程序獲取該任意窗口的座標/邊界,而使用哪種語言並不重要。在屏幕座標中獲取桌面上任何窗口的邊界,有可能嗎?

我的具體問題:以上是可能的嗎?

我到目前爲止所做的只是使用PointerInfo類,特別是getPointerInfo()方法獲取鼠標在Java中的屏幕位置。 (API在這裏:http://docs.oracle.com/javase/6/docs/api/java/awt/PointerInfo.html)。再次,我所做的只是找出鼠標在屏幕座標中的位置,這與我的問題沒有直接關係,但我認爲這是一個開始的好地方。

我不想找人給我一個代碼片段來說明如何完成,只是承認它可以完成,也許是一個API或類文檔的鏈接來幫助。再一次,我不想用任何特定語言尋找解決方案。

謝謝您的時間, -Kevin

編輯:我已經在C#中張貼了這個,因爲它似乎這可能是這個問題的最好語言。

+0

是 - 對於「正常窗口」,這是可能的。 – Yahia 2011-12-26 18:50:25

回答

1

是的,當然是有可能的。 (在windows下,用於這項工作的最佳語言是C#)。

可能有一些方法可以通過僅使用dotnet對象並僅調用dotnet函數來實現,但我不知道任何此類方法。

我知道的方式涉及pinvoke,這是dotnet中的託管代碼可以調用本地windows dll中的非託管代碼的機制。

看那WindowFromPoint功能: http://www.pinvoke.net/default.aspx/user32.windowfrompoint

一旦你找到了窗口,看GetWindowRect功能: http://www.pinvoke.net/default.aspx/user32.getwindowrect

+0

謝謝你的回答,這非常有幫助。 – kevin 2011-12-29 16:17:42

+0

很高興能有所幫助。 – 2011-12-29 16:27:06

0

是最終用戶有足夠的意志力幫助?如果是這樣很容易。

  1. 獲取整個屏幕的屏幕截圖。
  2. 在圖像圖標 - >標籤 - >滾動窗格 - >框架中顯示給用戶。
  3. 將鼠標監聽器添加到標籤。
  4. 要求用戶選擇標籤的矩形部分。
  5. 使用鼠標拖動的開始/結束點作爲矩形的角點。

當然,可以做一些調整。提供擴展的邊界角點視圖,提供按像素調整每個角點的方法。如果要實施該策略,您可以從this code開始,該點用於選擇屏幕上的點。

相關問題