SendMessageTimeout在调试环境中运行,但不是从已安装的Windows服务运行

时间:2014-06-10 08:12:40

标签: c# service

当我运行" RespondingWithinMs" (在下面的代码)方法在我的调试环境中,它工作正常,但是当我从我安装的Windows服务运行它时,它每次都返回false,这意味着它没有得到我的应用程序的答案。 (应用程序以用户SYSTEM启动,服务也是如此)。我已经尝试了process.Responding属性,这很好用。还在响应属性使用时将超时设置为5000,但仍然无法正常工作。

const int SMTO_ABORTIFHUNG = 2;

   [DllImport("user32.dll", CharSet = CharSet.Auto)]
   public static extern IntPtr SendMessageTimeout(
   HandleRef hWnd,
   int msg,
   IntPtr wParam,
   IntPtr lParam,
   int flags,
   int timeout,
   out IntPtr pdwResult);

   public bool RespondingWithinMs(Process process, int timeoutMs)
   {
       IntPtr ptr2;
       return SendMessageTimeout(
           new HandleRef(process, process.MainWindowHandle),
           0,
           IntPtr.Zero,
           IntPtr.Zero,
           SMTO_ABORTIFHUNG,
           timeoutMs,
           out ptr2) != IntPtr.Zero;
   }

0 个答案:

没有答案