我的进程是个隐藏窗口的进程,所以用Process.MainWindowHandle 无法获取到值,总是0。后来我在网上搜到了大家对于此类问题的处理方法,就是用枚举,API的EnumThreadWindows
虽然我能获取到句柄了,但是获取到的不是正确的句柄。这里的NRCServer进程是个exe程序,他的WindowState设置为Minimized,ShowInTaskbar 设置为 false 于是窗口被隐藏。所以我没能获取到它的MainWindowHandle,只有进程Id。并且在NRCServer进程启动的时候,弹出对话框显示了主窗口句柄,但是根据调用API函数获取到的句柄,不是显示的这个。
逐语句调试,发现,在EnumWindowsProc中,其实能获取到至少三个同Id号但是不同句柄的窗口。虽然这三个句柄都不是我的进程的,但是让我疑惑的是,怎么会有三个同Id的?另外,究竟该如何获取到正确的那个句柄?!
谢谢各位大虾,帮忙解答一下!
...收起
/// 查找一个窗口,返回此窗口的句柄
/// </summary>
/// <param name="lpClassName">要查找的窗口的类名,如果设为null,表示适配所有类</param>
/// <param name="lpWindowName">要查找的窗口的标题文本</param>
/// <returns>返回窗口的句柄,如果没找到,返回0</returns>
[DllImport("user32.DLL", EntryPoint="FindWindowW", SetLastError=true,CharSe
...全文