簡體   English   中英

使用Win32 API掛鈎獲取新創建的窗口

[英]Get newly created window using Win32 API hooks

這可能是一個很長的空缺,甚至是不可能的,但是問問沒有任何傷害。

我想做的是監視應用程序在其MDI控件中創建的任何新窗口。 我已經在C#中實現了鈎子,並且可以捕獲MDICREATE窗口消息,但是由於創建后需要獲取有關窗口的信息,因此MDICREATE消息並沒有太大幫助,因為在那個階段尚未在其他窗口中創建窗口申請呢。

無需贅述,我只需要能夠看到何時創建了新窗口。

這可能嗎?

謝謝

我不知道有另一條消息可以獲取您正在尋找的信息。 但是,如果該消息對您有用,則可以掛接該消息,然后對窗口進行另一次掃描以查找丟失的窗口。 您可以枚舉父窗口的子窗口。 使用Spy ++查看確切的窗口層次結構。

如果您可以觀看特定的函數調用,則可以使用某種掛鈎庫來抓取(想到了EasyHook)。

您可以掛鈎MDI創建函數(假設有一個),注意這一點,然后編寫您的代碼,調用原始代碼並使用返回的值進行任何查找。 您將有權訪問返回的值和任何參數,因此您應該能夠從中獲取一些信息。

我頭頂上有兩個選擇。

  1. 在第一次激活窗口時掛接WM_MDIACTIVATE事件,使用標志來確定第一次激活窗口。

  2. 如果需要在WM_MDICREATE或WM_MDIACTIVATE之后運行代碼,則可以從這些消息之一中發布新的自定義消息,然后在這些消息完成之后進行處理。 然后,您編寫代碼以處理自定義消息。

暫無
暫無

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

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