簡體   English   中英

如何使用X11獲取當前光標位於其上的窗口?

[英]How do I get the window that currently has the cursor on top of it with X11?

如何檢索光標位於X11服務器頂部的頂部窗口?

窗口不必是“活動的”(選擇,打開,無論如何),它只需要將光標懸浮在它上面。

提前致謝。

您可以使用XQueryPointer()來獲取鼠標位置。 然后使用XQueryTree()獲取一個窗口列表。 XQueryTree()以正確的z順序返回窗口列表,因此您可以遍歷所有窗口,直到找到其邊界框位於指針下的窗口, XGetWindowAttributes()將為您提供找出邊界框所需的一切。 我不知道你會用塑造窗戶做什么。

我有幾年沒有使用X11,所以這可能是一個相當笨重的方法,但它應該工作。 我也沒有我的O'Reilly X11書籍了,如果你打算使用低級別的X11,那么你會想要把它放在書中。 我認為這幾天全系列免費在線提供。

我已經十多年沒有對X11進行編程了,所以如果我弄錯了,請原諒我。

我相信你可以在你的窗戶上注冊鼠標移動事件。 如果通過將窗口句柄存儲在某個變量或其他變量中來處理此類事件,然后處理事件以使其不會向下滲透樹,那么在您想要識別窗口時,您只需查詢變量即可。

但是,只有在鼠標位於已注冊合適事件處理程序的窗口上時,這才會起作用,因此您不會知道屬於其他應用程序的窗口 - 除非有辦法在其他人的窗口上注冊事件,這可能是可能。

優於其他答案的優點是您不必遍歷整個樹。 缺點是你需要處理很多鼠標移動事件,它可能無法找到其他人的窗口。

我相信也可能有鼠標輸入和鼠標離開事件,這將減少所需的處理量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM