我有一个应用程序,它通过SendKeys将击键注入(inject)到应用程序中。

不幸的是,当我通过远程桌面运行该应用程序时,该应用程序将无法运行
由于众所周知的问题,SendKeys不适用于远程桌面。

有没有人以前解决过这个问题,或者对如何解决有什么好的建议?

最佳答案

SendKeys不合适,主要原因是:

  • 它只能将密钥发送到 Activity /重点突出的应用程序,但不能保证其正常工作,因为 Activity 应用程序可以在实际发送密钥的时间之间进行更改。
  • RDP和许多其他库(例如DirectX)主要出于安全原因将其阻止。

  • 更好的选择:
  • 为简单需求使用 SendMessage SendInput
  • 可以找到一些有关如何使用SendMessage的好例子:
  • Send strings to another application by using Windows messages
  • SendMessage via pInvoke
  • How To Send Keystrokes To Extern Win Application
  • 如需更详尽的需求,建议使用WCF
  • 要开始使用,请阅读此Basic Tutorial,它讨论了进程间通信

  • 使用 SendMessage 的示例代码:
    HWND hwndNotepad = FindWindow(_T("Notepad"), NULL);
    HWND hwndEdit = FindWindowEx(hwndNotepad, NULL, _T("Edit"), NULL);
    SendMessage(hwndEdit, WM_SETTEXT, NULL, (LPARAM)_T("hello"));
    

    关于remote-desktop - 在远程桌面上运行时可以替代SendKeys吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1138606/

    10-11 18:21