我正在测试一个应用程序,通过SendKeys
远程控制另一个应用程序,当Windows登录时,每个东西都正常工作。这是记事本的测试代码(记事本已打开):
Process p = System.Diagnostics.Process.GetProcessesByName("notepad").Last();
if (p != null)
{
IntPtr h = p.MainWindowHandle;
SetForegroundWindow(h);
SendKeys.SendWait("Hellow world");
}
我希望它在窗口锁定时有效,但错误是“访问被拒绝”。记事本是测试应用程序,锁定系统是断开远程桌面的模拟,所以我必须在锁定模式下访问。有什么建议吗?
我想这是因为当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