如何使用C#中的sendkey消息定位虚拟桌面?

如何使用C#中的sendkey消息定位虚拟桌面?,c#,winapi,C#,Winapi,假设我已经安装了 我希望能够使用win32 api发送消息,但目标是第二个虚拟机,而我将留在第一个虚拟机上 在c#中如何做到这一点 更新:在上下文中,我希望在后台定期自动执行一项手动任务,当我在第一台桌面上工作时,该应用程序将驻留在第二台虚拟桌面上。SendKeys和SendMessage是非常不同的事情。现在还不清楚你用的是哪一种 您不能使用SendKeys来“瞄准”任何东西。在Windows中可以接收键盘和鼠标输入的唯一实体是具有焦点的窗口。由于在虚拟桌面上显示的内容将没有焦点,因此您无法执

假设我已经安装了

我希望能够使用win32 api发送消息,但目标是第二个虚拟机,而我将留在第一个虚拟机上

在c#中如何做到这一点


更新:在上下文中,我希望在后台定期自动执行一项手动任务,当我在第一台桌面上工作时,该应用程序将驻留在第二台虚拟桌面上。

SendKeys
SendMessage
是非常不同的事情。现在还不清楚你用的是哪一种

您不能使用
SendKeys
来“瞄准”任何东西。在Windows中可以接收键盘和鼠标输入的唯一实体是具有焦点的窗口。由于在虚拟桌面上显示的内容将没有焦点,因此您无法执行此操作


但是,您可以使用向任何窗口发送窗口消息。
SendMessage
函数接受感兴趣窗口的句柄作为其第一个参数(
HWND
)。无论该窗口是否聚焦、处于活动状态、是否显示在虚拟桌面上或其他任何位置,这都无关紧要。

SendKeys
SendMessage
是非常不同的事情。现在还不清楚你用的是哪一种

您不能使用
SendKeys
来“瞄准”任何东西。在Windows中可以接收键盘和鼠标输入的唯一实体是具有焦点的窗口。由于在虚拟桌面上显示的内容将没有焦点,因此您无法执行此操作


但是,您可以使用向任何窗口发送窗口消息。
SendMessage
函数接受感兴趣窗口的句柄作为其第一个参数(
HWND
)。无论该窗口是否聚焦、处于活动状态、是否显示在虚拟桌面上或其他任何位置,都无关紧要。

您提供的链接描述了一个基于Windows内置桌面机制的工具

基本上,这意味着您有真正不同的桌面(单独登录!),它们不进行交互-它们甚至看不到彼此的窗口,也就是说,与其他“虚拟桌面实用程序”不同,您不能将窗口或应用程序从一个桌面移动到另一个桌面

是MSDN上对使用桌面API的引用,其中解释了此类承诺中涉及的权限问题等

在这种情况下,实现所需的唯一方法是构建一个Windows服务,该服务反过来监视桌面的启动/关闭

在桌面启动的情况下,您需要在该桌面内启动一个进程。 此过程必须提供某种与桌面无关的IPC机制,如TCP/IP或全局互斥+全局共享内存或类似…

您与该进程通信,该进程在该桌面内代表您执行任何需要的操作(SendMessage、SendKeys…)。

您提供的链接描述了一个基于Windows内置桌面机制的工具

基本上,这意味着您有真正不同的桌面(单独登录!),它们不进行交互-它们甚至看不到彼此的窗口,也就是说,与其他“虚拟桌面实用程序”不同,您不能将窗口或应用程序从一个桌面移动到另一个桌面

是MSDN上对使用桌面API的引用,其中解释了此类承诺中涉及的权限问题等

在这种情况下,实现所需的唯一方法是构建一个Windows服务,该服务反过来监视桌面的启动/关闭

在桌面启动的情况下,您需要在该桌面内启动一个进程。 此过程必须提供某种与桌面无关的IPC机制,如TCP/IP或全局互斥+全局共享内存或类似…

您与该进程通信,该进程代表您在该桌面内执行您所需的任何操作(SendMessage、SendKeys…)。

IIRC
SendMessage
work“相对于当前桌面”(线程关联的桌面)。。。在“虚拟桌面”的上下文中,只有当您将线程与“目标桌面”(与您自己的不同)相关联时,链接到此的OP才会工作,例如,通过.IIRC
sendmages
work”相对于当前桌面(线程关联的桌面)。。。在“虚拟桌面”的上下文中,只有当您将线程与“目标桌面”(与您自己的不同)相关联(例如通过)时,链接到此的OP才会起作用。如果此实用程序的行为类似于distinct desktop,为什么在第二台桌面未激活时,使用此自动化应用程序生成的宏不起作用?@user310291因为它位于另一台使用Sperate登录的桌面上,这完全取决于自动化的实现方式-除了我上面描述的技术外,还有其他技术可以使其起作用,但更多的是在“黑客”领域因此不推荐。好的,谢谢,我不认为我能找到一个切实可行的解决方案:我不是专家:)如果这个工具的行为像独特的桌面,为什么在第二台桌面未激活时,使用此自动化应用程序生成的宏不起作用?@user310291因为它位于另一台使用Sperate登录的桌面上,这完全取决于自动化的实现方式-除了我上面描述的技术外,还有其他技术可以使其起作用,但更多的是在“黑客”领域因此不推荐。好的,谢谢,我不认为我能找到一个可行的解决方案:我不是大师:)