2009-12-22 71 views
1

C#中有一種方法可以將菜單項全局添加到所有活動窗口上的所有系統菜單上嗎?也許在「最大化」命令下?修改全局系統菜單

+2

如果您的設計需要您這樣做,您需要重新考慮您的設計。 –

+0

我正在嘗試編寫一個程序,該程序將允許我「插入」任何窗口,以便它始終位於所有其他窗口之上。 – Icemanind

+1

如果用戶有另一個應用程序使用相同的技術,最終將窗口置於頂部,誰會獲勝? – BFree

回答

4

這不能在託管代碼中完成。即使在無法使用的代碼中,它也會非常困難。基本上你必須注入你的代碼到每個進程中,然後插入項目到本地系統菜單中,然後鉤住主窗口proc來截​​獲WM_SYSCOMMAND消息,這樣你可以使菜單項執行某些操作。

您可以編寫代碼,只需使用FindWindow得到窗口句柄,然後SetWindowLong改變窗口樣式添加WS_TOPMOST風格(最)窗口(允許的安全性)。

但是,您將無法將此用戶界面放入其他進程的系統菜單中。

+0

感謝您的答覆約翰。所以最好的方法是寫一些類似Spy ++的東西,讓你「選擇」一個窗口,然後在該窗口上使用SetWindowLong來改變窗口樣式? – Icemanind

+0

是的,那將是方式。 –

+0

在http://stackoverflow.com/q/138616/103167上描述了一種無代碼注入的優雅方法 –