Страницы: 1
RSS
Синхронизировать работу макроса с набором текста (WinAPI)
 
Друзья, кто мне подскажет, как добиться синхронности работы макроса с набором текста на клавиатуре? )    
 
Свой код и инструкцию написал в файле (файл небольшой)  
 
P.S. Людям не разбирающихся в макросах и WinAPI просьба не беспокоится )
 
А вирус Вам не написать? Чего стесняться!
Я сам - дурнее всякого примера! ...
 
> как добиться синхронности работы макроса с набором текста на клавиатуре? )  
 
Тут проблема не столько в синхронности, сколько в выводе на форму именно тех символов, которые были нажаты.  
 
К примеру, можно использовать такую, сильно упрощённую, модель кода:  
 
'Главная функция выполнения таймера  
Public Sub TimerCallBack(ByVal Hwnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long)  
   On Error Resume Next  
   Dim i As Long  
   For i = 32 To 255  
       Select Case True  
           Case GetAsyncKeyState(vbKeyControl), GetAsyncKeyState(vbKeyInsert)  
               ' ненужные кнопки - ничего не делаем  
             
           Case GetAsyncKeyState(i) <> 0  
               НажатSHIFT = GetAsyncKeyState(vbKeyShift) <> 0 ' проверяем регистр  
                 
               буква = IIf(НажатSHIFT, Chr(i), LCase(Chr(i)))  
               FrmMain.Label1.Caption = FrmMain.Label1.Caption & буква  
               Exit Sub  
       End Select  
   Next i  
End Sub  
 
Вообще, на самом деле все сложнее.  
Могу помочь, но не бесплатно.  
 
 
PS: Клавиатурный шпион надо писать не на VBA  
Лучше использовать готовые решения.
 
навскидку, предлагаю использовать цикл:  
 
   If GetAsyncKeyState(vbKeyA) <> 0 Then    
FrmMain.Label1.Caption = FrmMain.Label1 & "a"  
 
do  
doevents  
loop while GetAsyncKeyState(vbKeyA)
Живи и дай жить..
 
Спасибо. Дома попробую ваши решения.  
 
Да я понимаю, что Logger на VBA - это извращение.  Их и готовых решений в сети куча. Мне подошёл исходник на Delphi http://www.delphisources.ru/pages/sources/system/2005_year/key_logger.html  
 
Проверил код, скомпилировать и всё ок.  
 
Просто VBA роднее. Так сказать неординарная задача для него ))
Страницы: 1
Читают тему
Наверх