2012-11-07 102 views
2

我想獲得鼠標座標相對於另一個窗口(窗口客戶區),該窗口不是我的應用程序的一部分。獲取鼠標座標相對於其他窗口

我寧願在不深入研究Win32 API和dll導入的情況下做到這一點,但我不確定是否有可能。

基本思想是:當用戶按下熱鍵(CTRL + C)時,我的C#WPF應用程序將擁有用戶焦點,應用程序將獲得相對於先前指定窗口的客戶區域的座標。這只是我需要爲內部發展援助而製作的一個快速應用程序。

+0

如果它在你自己的窗口中,你如何在客戶端相對和屏幕絕對座標之間切換?如果你在託管模式下這樣做,是否有任何方法可以接受基礎窗口的窗口句柄?如果不是,那麼你應該使用win 32 API,沒有什麼不好的:) –

+0

在Win32 DLL中只需要調用兩個調用,它不會太壞(這是唯一的解決方案)我知道)。這裏有一個很好的開始:http://stackoverflow.com/questions/1364440/how-to-get-and-set-window-position-of-another-application-in-c-sharp給它一個鏡頭並更新你的帖子,如果你遇到任何麻煩。唯一的缺點是您最終只能使用Windows解決方案,但這可能會滿足您的需求。 – jheddings

+0

@jdingdings:謝謝,我會給它一個旋轉。 – Drahcir

回答

0

如果您有進程名稱/ ID,可以通過調用System.Diagnostics.Process.MainWindowHandle來獲得句柄。當您有手柄時,使用System.Windows.Forms.Control.FromHandle(handle).PointToClient(p)獲取屏幕點p相對於其他窗口位置的座標。

相關問題