2015-05-09 101 views
0

從我的C#應用​​程序我稱之爲FindWindow()這樣的:兩個進程可以共享相同的類名嗎?

FindWindow("#32770", "title goes here") 

我的問題是:兩種工藝共享相同的類名? (如果有問題,我在我的應用程序中的WebBrowser提出的對話框中單擊「ok」按鈕)我害怕請求使用#32770 classname來查找進程,並且這返回了我不想查找的進程。如果我可以共享相同的類名,那我怎樣才能確保類名來自特定的進程?也許按過程的路徑過濾以確保它是唯一的?我希望它很乾淨。

回答

2

是的。

對窗口類名稱在進程間是唯一的沒有限制。每個進程註冊自己的類,每個進程都可以自由調用主窗口類「MainWindowClass」。

在你的情況下,你正在尋找系統級的「對話」類,它肯定可以被多個進程使用。

#32770對話框的類。

詳細信息可在About Window Classes找到。

+0

謝謝,我怎樣才能確保類名是從一個特定的過程?也許按過程的路徑過濾以確保它是唯一的? – Jack

+0

@Jack路徑不會幫助,因爲同一個可執行文件可能會多次運行。進程句柄(本地)是進程的唯一標識符。如果您對特定進程感興趣 - 請考慮獲取其頂級窗口並使用[FindWindowEx](https://msdn.microsoft.com/en-us/library/ms633500.aspx)開始搜索 –

+0

我試過了'FindWindowEx webBrowser1.Handle,IntPtr.Zero,「#32770」,「title goes here」);'但它只返回'IntPtr.Zero' – Jack

相關問題