arvitaly писал(а):А нельзя обмениваться данными по сети???
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Integer, ByVal wMsg As Integer, ByVal wParam As Integer, ByVal lParam As String) As Integer
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Integer
Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Integer, ByVal hWnd2 As Integer, ByVal lpsz1 As String, ByVal lpsz2 As String) As Integer
Private Declare Function MapVirtualKey Lib "user32" Alias "MapVirtualKeyA" (ByVal wCode As Integer, ByVal wMapType As Integer) As Integer
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Const WM_SETTEXT = &HC
Const WM_KEYDOWN = &H100
Const WM_KEYUP = &H101
Const VK_RETURN = &HD
Dim whwnd As Integer
Dim hwnd_box As Integer
Dim comment As String
comment = "ddddd"
whwnd = FindWindow(Nothing, "Windows XP [Работает] - Sun xVM VirtualBox")
hwnd_box = FindWindowEx(whwnd, 0, vbNullString, vbNullString)
If hwnd_box <> 0 Then
SendMessage(hwnd_box, WM_SETTEXT, 0, comment)
Threading.Thread.Sleep(500)
SendMessage(hwnd_box, WM_KEYDOWN, VK_RETURN, 0)
SendMessage(hwnd_box, WM_KEYUP, VK_RETURN, 0)
'this is just to verify that I am catching the child
TextBox2.Text = hwnd_box
Else
SendMessage(whwnd, WM_SETTEXT, 0&, comment)
End If
End Sub
ofolfa писал(а):Может кому денег предложить за помощь? (((
Очень нужно, не могу понять, в чем проблема. Может кто у себя протестить? Или кинуть примеры?
whwnd = FindWindow(Nothing, "Windows XP [Работает] - Sun xVM VirtualBox")
hwnd_box = FindWindowEx(whwnd, 0, vbNullString, vbNullString)
hwnd_box = FindWindowEx(whwnd, 0, vbNullString, vbNullString)
1.Находишь хэндл окна виртуальной машины (это у тебя вроде как успешно получаетя)
2.Там найти хэндл окна блокнота, не знаю, будет ли достаточно иметь хэндл окна вирт. машины, что бы следующей же функией найти окно блокнота, либо надо еще какой то дескриптор вначале получить
hwnd_box = FindWindowEx(whwnd, 0, vbNullString, vbNullString)
А как найти хэндл блокнота? Я думаю что никак. Нужно отправить вирт машине сообщение, а она уже сама пусть решает кому его передать
un1 писал(а):Тут правда не ясно, регистрируются ли окна, висящие в ОС вирт. машины, в твоей операционке...
Она, к примеру, при получении фокуса полностью перехватывает ввод.
iGrok писал(а):Вообще с VirtualBox не работал. Только с WMware. Она, к примеру, при получении фокуса полностью перехватывает ввод. Полностью. Для "реальной машины" работает ТОЛЬКО Ctrl-Alt-Del.
iGrok писал(а):А насчёт способа посылки нажатия клавиш в VitrualBox, если экранная клавиатура работает, можно действительно включить Spy++, и посмотреть, что посылается.
ofolfa писал(а):Она, к примеру, при получении фокуса полностью перехватывает ввод.
Перехватывает ввод с мышки, но не с клавиатуры. Если активируешь окно и начнешь вводить, будет вводиться в блокноте запущенном на Вирт машине.
Xcode писал(а):А вот и работает...
Xcode писал(а):Проделывал это с VMware, не работает, или просто что-то упустил...
В VirtualBox так:
Запускаешь блокнот. Уходишь с виртбокса, но окно остается активным, клацаешь на клаве, оно набирает текст в блокноте.
В общем решил, буду юзать библиотеку. Пока кто-то не подскажет другого решения
iGrok писал(а):Xcode писал(а):А вот и работает... Что работает?
iGrok писал(а):Ничего не упустил. Это действительно не работает.
un1 писал(а):Если ты все это время пытался послать сообщение окну (Sendmessage), попробуй вначале что нибудь типа keybd_event (API функция) либо SendKeys, так полюбе должно работать, если окно активное...
Xcode писал(а):iGrok писал(а):Xcode писал(а):А вот и работает... Что работает?
Сорри, туплю, ночь уже и поддатый слегка. Я имел ввиду что при щелчке мышкой по кнопкам ЭК, при условии что курсор остается в области блокнота ВМ-ы, в блокноте появляются соответствующие символы.
Xcode писал(а):А ты возьми и проверь вместо "полюбе", я тоже так думал сначала.
Он просто, похоже, до сих пор не понял, что такое ВМ...
А ты возьми и проверь вместо "полюбе", я тоже так думал сначала.
un1 писал(а):... ммм и что же это ?
Судя по тому, что "должно полюбэ работать", тот факт, что ты знаешь, что такое "Виртуальная машина" ещё ни о чём не говорит.
И если ты таки понимаешь, то отгда откуда взялось предположение о том, что окна гостевой системы "регистрируются" в основной системе?
Никогда не работал с виртуальной машиной, соответственно, хэндл чего ты находишь вот этим кодом :
Сейчас этот форум просматривают: Google-бот и гости: 71