Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > VB6 > имитация нажатия клавиши в другом приложении


Автор: aksimus 14.9.2010, 20:09
Есть такая задача:
Есть приложение на VB6, которое должно отыскать по заголовку окно браузера с открытой там страницей, и вызвать там определенную JS функцию. Решил реализовать это следующим образом, на странице повесил вызов функции JS на событие нажатия  клавиши, но вот тут то и проблема, нужно это нажатие сэмулировать.

Вот пример моего кода, который никак не хочет работать:

Код

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function ShowWindow Lib "user32" (ByVal hWnd As Long, ByVal nCmdShow As Long) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Declare Function VkKeyScan Lib "user32" Alias "VkKeyScanA" (ByVal cChar As Byte) As Integer

Private Const WM_CHAR = &H102
Private Const WM_SETFOCUS = &H7
Private Const WM_KEYDOWN = &H100
Private Const WM_KEYUP = &H101

Private Sub Command1_Click()
    
    Dim lhWnd As Long



    lhWnd = FindWindowWild("*ak - test*", False)
    
    If lhWnd <> 0 Then


            frmMain.txtRes = frmMain.txtRes + CStr(Now()) + "Window found.! lhWnd = " & CStr(lhWnd) + vbCrLf
           ShowWindow lhWnd, 0
           
           If ShowWindow(lhWnd, 9) Then
           frmMain.txtRes = frmMain.txtRes + "ShowWindow = T " + vbCrLf
           Else
           frmMain.txtRes = frmMain.txtRes + "ShowWindow = F " + vbCrLf
           End If
           
           charcode = Asc("s")
            Key = VkKeyScan(charcode)
            DoEvents
            SendMessage lhWnd, WM_SETFOCUS, 0, 0
            DoEvents
            SendMessage lhWnd, WM_KEYDOWN, Key, ByVal 0&
            DoEvents
            SendMessage lhWnd, WM_CHAR, charcode, ByVal 0&
            DoEvents
            SendMessage lhWnd, WM_KEYUP, Key, ByVal 0&
            DoEvents
            SendMessage lhWnd, WM_SETFOCUS, 0, 0
.....



 может у кого-нибудь увидит мой косяк или имеет похожий примерчик.
Спасибо.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)