[英]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.