18
我正在使用生成Internet Explorer實例的第三方類。這個類有一個屬性hWnd,它返回進程的hWnd。如何判斷給定的hWnd是否仍然有效?
後來,我可能想重用應用程序的實例,如果它仍然存在,所以我需要告訴我的助手類來附加它。在此之前,我想知道給定的hWnd是否仍然有效,否則我會產生另一個實例。
如何在C#中執行此操作#& .NET 3.5?
我正在使用生成Internet Explorer實例的第三方類。這個類有一個屬性hWnd,它返回進程的hWnd。如何判斷給定的hWnd是否仍然有效?
後來,我可能想重用應用程序的實例,如果它仍然存在,所以我需要告訴我的助手類來附加它。在此之前,我想知道給定的hWnd是否仍然有效,否則我會產生另一個實例。
如何在C#中執行此操作#& .NET 3.5?
如果它是一個窗口句柄,可以調用isWindow(hWnd);
從MSDN:
返回值
BOOL
如果窗口句柄標識 現有的窗口,返回值爲 非零。
如果窗口句柄未標識 現有窗口,則返回值 爲零。備註
線程不應該使用IsWindow的 窗口,它沒有創建因爲 窗口可能被破壞 後調用此函數。此外, ,因爲窗口句柄回收 句柄甚至可以指向一個 不同的窗口。
順便說一句,因爲你是在.NET中你必須做一些事情,如:
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool IsWindow(IntPtr hWnd);
完美,正是我一直在尋找。謝謝您的幫助! – 2010-04-29 16:38:29
需要注意的一點是,DllImport屬性位於System.Runtime.InteropServices命名空間中。 – 2010-04-29 16:56:24