0

我的程序找到任何子窗口,如果一个由 3 部分组成的应用程序显示一个错误框,那么我想关闭它.. 它工作正常,当服务器没有被锁定时。

代码:

[DllImport("user32", SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
private extern static bool PostMessage(IntPtr hwnd, uint msg, IntPtr WParam, IntPtr lParam);

    [DllImport("user32", SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
private extern static bool BringWindowToTop(IntPtr hwnd);

public static bool FocusWindowAndSendEnter(IntPtr hWnd)
{
    try
    { // hWnd = pointer to subwindow, like messagebox.

        uint WM_KEYDOWN = 0x0100;

       //Set focus
      var res1 =  BringWindowToTop(hWnd);

        //Send enter_Key 
      var res2 = PostMessage(hWnd, WM_KEYDOWN, (IntPtr)Keys.Enter, IntPtr.Zero);

      return (res1 == res2 == true);

    }
    catch (Exception ex)
    {
        Logger.LogException(MethodInfo.GetCurrentMethod().Name, ex);
    }

    return false;
}

如果服务器被锁定但正在运行,可以这样做吗?

4

1 回答 1

1

当计算机被锁定时,您可以做的事情非常有限 - 出于安全目的。我怀疑有没有办法解决这个问题,除非你停止计算机被锁定,或者首先阻止消息框出现。

你试图用错误的方法解决问题。

找出有关该错误消息框的方法,并尽您所能防止这种情况发生。当 PC 被锁定时,不要期望有很多事情可以做。

于 2011-12-08T17:46:17.587 回答