2016-04-22 7 views
-1

Я хочу, чтобы все дескрипторы детей Windows запускали его в Virtual Box. Я хочу отправить ключ из главной Windows (основной Windows) в блокнот гостевой Windows. Я знаю, что мы можем найти окно ребенка с помощью EnumChildWindows в Дельфах но Virtual Box только получить QWidget имя класса. Может ли кто-нибудь помочь мне получить доступ ко всем дескрипторам гостевой ОС Windows (ее запуск в Virtual Box) из основных окон, используя delphi? спасибо.Ребячьи ручки vbox Windows с помощью Delphi

+2

С точки зрения виртуального окна хоста эффективно отображается изображение другой операционной системы, нарисованной на QWidget.Вам нужно будет запустить свой код внутри виртуальной машины. –

+0

Я думал раньше, как ваш ответ, но в окнах есть экранная клавиатура, которую мы можем использовать в главных окнах и набираем что угодно и видим это в гостевых окнах (в виртуальной коробке). –

+0

Вы не можете настроить таргетинг на окно внутри виртуальной машины вне виртуальной машины. Google-поиск по нажатию клавиш VirtualBox не дает очень многого. Я второй @AlexK. – Johan

ответ

3

Я хочу, чтобы все дочерние дескрипторы Windows запускались в Virtual Box.

Извините, но вы не можете этого сделать. Как и AlexK в комментариях, окна, запущенные в гостевой ОС, просто не существуют в операционной системе хоста, поэтому они не могут быть доступны или перечислены приложениями, запущенными в ОС хоста. VM запускает полностью отдельную гостевую ОС и просто визуализирует вывод этой операционной системы в своем собственном окне, запущенном на ОС хоста.

Я хочу отправить ключ из главной Windows (Windows) в блокнот гостевой Windows.

Невозможно сделать это напрямую.

Когда пользователь вводит ключ на физическую клавиатуру или экранную клавиатуру в операционной системе хоста, ключ помещается во входную очередь ОС хоста и направляется в текущее сфокусированное окно в операционной системе хоста. Если это окно является виртуальной машиной, то VM помещает ключ во входную очередь гостевой ОС и перенаправляется в текущее сфокусированное окно в гостевой ОС.

Приложение, работающее на ОС хоста, может использовать SendInput() для имитации ввода клавиатуры в ОС хоста и позволяет ему маршрутизироваться соответствующим образом.

Если вам нужно больше управления, вам нужно будет запустить отдельное приложение в гостевой ОС, которое подключено к главному приложению, работающему на ОС хоста. Затем приложение-хозяин может общаться с гостевым приложением, а гостевое приложение может действовать в гостевых окнах по мере необходимости.

Например, приложение-хозяин может попросить гостевое приложение перечислить гостевые окна и отправить этот список обратно в хост-приложение. Приложение-хозяин может обнаружить наличие «Блокнот» и отправить желаемый ключ (ы) в гостевое приложение, которое затем может отправить ключ (ы) в окно «Блокнот».

Я знаю, что мы можем найти окно ребенка с помощью EnumChildWindows в Дельфах

только для окон, которые работают в одной и той же ОС, что приложение Enumerating запущен.

но Виртуальный ящик получает только имя класса QWidget.

Потому что это окно, работающее в операционной системе хоста.

+0

Прежде всего, спасибо за ваш ответ. Вы знаете, что мы можем вводить экранную клавиатуру в ОС хоста и видеть, что в гостевой ОС без какого-либо приложения, которое нам нужно использовать внутри гостевой ОС. Я думаю, что ОС хоста с помощью экранной клавиатуры напрямую отправляет виртуальные ключи в гостевую ОС. Но я не знаю, как это сделать. –

+0

@ M.MARAMI более внимательно прочитал мой ответ, я рассмотрел этот точный сценарий. OSK * не отправляет ключи непосредственно гостевой ОС. В нем нет понятия виртуальных машин. Он помещает ключи в входную очередь хоста, и они маршрутизируются через обычную диспетчерскую в окно виртуальной машины, а затем VM копирует их в очередь ввода гостя. 'SendInput()' - это способ обработки этой начальной отправки. –

+0

Это нормально. Можете ли вы привести пример для SendInput(). Я ищу и нашел пример, но больше не могу этого делать. Потому что ни один из этих примеров не был связан с нашей работой. –

 Смежные вопросы

  • Нет связанных вопросов^_^