C# - Windows锁定时拒绝SendKeys访问

问题描述 投票:0回答:1

我正在测试一个应用程序,通过SendKeys远程控制另一个应用程序,当Windows登录时,每个东西都正常工作。这是记事本的测试代码(记事本已打开):

Process p = System.Diagnostics.Process.GetProcessesByName("notepad").Last();
if (p != null)
{
  IntPtr h = p.MainWindowHandle;
  SetForegroundWindow(h);
  SendKeys.SendWait("Hellow world");
}

我希望它在窗口锁定时有效,但错误是“访问被拒绝”。记事本是测试应用程序,锁定系统是断开远程桌面的模拟,所以我必须在锁定模式下访问。有什么建议吗?

c# sendkeys
1个回答
0
投票

我想这是因为当Windows被锁定时,桌面的可访问性被锁定,现在桌面无法接收输入。桌面的焦点丢失了。 GET / SETForegroundWindow,将无法正常工作。

我没试过但是

OpenDesktop(
  _In_ LPTSTR      lpszDesktop,
  _In_ DWORD       dwFlags,
  _In_ BOOL        fInherit,
  _In_ ACCESS_MASK dwDesiredAccess
)

这个功能可能有助于https://msdn.microsoft.com/en-us/library/windows/desktop/ms684303(v=vs.85).aspx

© www.soinside.com 2019 - 2024. All rights reserved.