如果服务器被锁定 - 是否可以将密钥发送到子客户端窗口?

时间:2011-12-08 17:42:10

标签: c# winapi setfocus

我的程序,找到任何子窗口,如果一个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;
}

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

1 个答案:

答案 0 :(得分:1)

当计算机被锁定时,出于安全考虑,您可以做的事情非常有限。我怀疑是否有办法解决这个问题,除非你要么停止计算机被锁定,要么阻止消息框出现在首位。

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

找出有关该错误消息框的内容,并尽力避免这种情况发生。当PC被锁定时,不要指望你能做多少。