Child 使用 Delphi 处理 vbox Windows

Child handles of vbox Windows using Delphi

我想在 Virtual Box 中获取 Windows 的 children 句柄,它的 运行 。 我想从主机 Windows(Main Windows) 发送一个密钥到 Guest Windows 的记事本。 我知道我们可以在 delphi 中使用 EnumChildWindows 找到 child window但 Virtual Box 仅检索 QWidget class 名称。 谁能帮助我使用 delphi 从 main windows 访问 Guest Windows(其在 Virtual Box 中的 运行)的所有句柄? 谢谢。

I want to get all of children handle of Windows that its run in Virtual Box .

抱歉,您不能那样做。正如 AlexK 在评论中所说,windows 运行 在来宾 OS 中根本不存在于主机 OS 中,因此应用程序无法访问或枚举它们 运行宁在主机OS。虚拟机 运行ning 是一个完全独立的来宾 OS,并且只是在主机 window 运行ning 上单独呈现 OS 的显示输出 OS.

I want send a key from Host Windows(Main Windows) to notepad of Guest Windows.

没有办法直接

当用户在主机 OS 的物理键盘或屏幕键盘上键入一个键时,该键被放入主机 OS 的输入队列并被路由到当前集中在主机 OS 内 window。如果 window 恰好是 VM,则 VM 将密钥放入来宾 OS 的输入队列中,并将其路由到来宾 [=37] 中的当前焦点 window =].

主机OS上的应用程序运行ning可以使用SendInput()模拟主机OS中的键盘输入,并让它进行相应的路由。

如果您需要更多控制,则必须 运行 来宾 OS 中的单独应用连接到主机上的主应用 运行ning OS.然后主机应用程序可以与来宾应用程序通信,来宾应用程序可以根据需要对来宾应用程序进行操作 windows。

例如,主机应用程序可以要求访客应用程序枚举访客 windows 并将该列表发送回主机应用程序。主机应用程序可以检测到记事本的存在并将所需的密钥发送到来宾应用程序,然后来宾应用程序可以将密钥发送到记事本 window.

I know that we can find child window by using EnumChildWindows in delphi

仅适用于 运行 与枚举应用 运行 位于同一 OS 中的 windows。

but Virtual Box only retrieve QWidget class name.

因为那是 window,即 运行ning 在主机 OS 中。