当我运行" 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;
}