none
C# 为什么在Windows服务里面获取不到Process.MainWindowHandle RRS feed

  • 问题

  •  private bool IsManagerExist()
            { 
                 hwnd_win = FindWindowEx(System.IntPtr.Zero, System.IntPtr.Zero, null, ManagerFormName);
                 if (hwnd_win == (IntPtr)0)
                     hwnd_win = FindWindow(null, ManagerFormName);
                
                 try
                 {
                     Process[] ps = Process.GetProcessesByName("EiscClientManager");
                     if (ps.Length == 0)
                         return false;
                     hwnd_win = ps[0].MainWindowHandle;
                     foreach (Process p in ps)
                     {
                         AIShiner.LogHelper.CommonLog.GetInstance().WriteSystemInfo(
                             string.Format("{0}:hwnd_win:{1},{2}:{3}", ManagerFormName, hwnd_win, p.MainWindowHandle, p.MainWindowTitle+p.ProcessName+p.ProcessName));
                     }
                     if (hwnd_win != IntPtr.Zero)
                         return true;
                     return false;
                 }
                 catch 
                 {
                     return false;
                 }
            }
    这是我用的几种方法测试,如果不是以服务的方式运行则可以获取到
    如果是在WindowsService里面则获取不到 郁闷啊
    2011年6月9日 10:09

答案

全部回复