2017-12-23 240 views
0

SendKeysを介して別のアプリケーションをリモート操作するアプリケーションをテストしています。C# - SendKeysウィンドウがロックされているときにアクセスが拒否される

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

私は窓がロックされている場合、それは仕事を期待が、エラーは「アクセスが拒否されました」です。ここではメモ帳のためのテストコードは(メモ帳が開いている)です。メモ帳はテストアプリケーションであり、ロックシステムはリモートデスクトップを切断するシミュレーションですので、ロックモードでアクセスする必要があります。なにか提案を?

答えて

0

私は、ウィンドウがロックされているときにデスクトップへのアクセスがロックされているため、デスクトップが入力を受け取ることができなくなったと思います。デスクトップへのフォーカスが失われます。 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

を助けるかもしれません
関連する問題