Если сервер заблокирован - возможно ли отправить ключи в окно дополнительного клиента? - PullRequest
0 голосов
/ 08 декабря 2011

Моя программа находит любые подокна, в случае, если в приложении, состоящем из 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 Ответ

1 голос
/ 08 декабря 2011

Когда компьютер заблокирован, вы очень ограничены в том, что вы можете сделать - в целях безопасности.Я сомневаюсь, что есть способ обойти это, если вы либо не остановите блокировку компьютера, либо не остановите отображение окна сообщения.

Вы пытаетесь решить проблему с помощью неправильных методов.

Узнайте, что вы можете сделать с этим окном сообщения об ошибке, и сделайте все возможное, чтобы предотвратить это.Не ожидайте, что вы многое сможете сделать, когда компьютер заблокирован.

...