Что нового

Не работает HotKeySet и Send

Dimmer

Новичок
Сообщения
3
Репутация
0
Задача в браузер мозилла (уже запущен) вставить текст из переменной $recv.
запускаю простейший микробот, устанавливаю язык на английский ( по умолчанию в виндовс стоит английский), нажимаю кнопку ` (ё) в результате вставляется не текст "Привет Мир" а просто печатается "`".
выхожу из скрипта, запускаю повторно и все работает, не пойму почему с первого раза не хочет?


Код:
#include <WinAPISys.au3>

HotKeySet("{ESC}", "Terminate")
HotKeySet("`", "Rekvizitu")

Global $LANG_ENG = '00000409';

$hWnd = WinWait("[CLASS:MozillaWindowClass]", "", 5)
WinActivate($hWnd)
_WinAPI_SetKeyboardLayout($hWnd, $LANG_ENG)         ;меняем язык

;$hWnd = _WinAPI_GetForegroundWindow()
;_WinAPI_SetKeyboardLayout($hWnd, $LANG_ENG)         ;меняем язык

Func Terminate()
    Exit 0
 EndFunc

 Func Rekvizitu()
      $recv = "Привет Мир"
	  ClipPut($recv)
	  Send ("^v") ; вставляем текст
 EndFunc

while 1
  sleep(10)
wend



Еще вопрос: почему в Windows 10 не работает BlockInput(1) и BlockInput(0), мыш не блокируется на время выполнения операций
 
A

Alofa

Гость
Сколько уже таких тем было, вы вниз этой страницы посмотрите, раздел "Похожие темы".
Зачем вам переключать раскладку если по умолчанию и так английская?
Но если уж так нужна универсальность, то почитайте *Это*.
Код:
#include <WinAPISys.au3>

_FixAccelHotKeyLayout()

HotKeySet("{ESC}", "Terminate")
HotKeySet("`", "Rekvizitu")

Global $hWnd, $LANG_ENG = 0x0409, $LANG_RU = 0x0419

$hWnd = WinWait("[CLASS:MozillaWindowClass]", "", 5)
If Not $hWnd Then Exit MsgBox(4096+16, 'Ой', 'Не дождались')

WinActivate($hWnd)

Func Terminate()
	Exit 0
EndFunc   ;==>Terminate

Func Rekvizitu()
	Local $recv = "Привет Мир"
	ClipPut($recv)
	Send("^v") ; вставляем текст
EndFunc   ;==>Rekvizitu

; ================================================================
Func _FixAccelHotKeyLayout() ; Немного изменил функцию
	Static $iKbrdLayout, $aKbrdLayouts

	If $iKbrdLayout Then
		For $i = 1 To UBound($aKbrdLayouts) - 1
			If _WinAPI_HiWord($aKbrdLayouts[$i]) = $iKbrdLayout Then Return 1
		Next
		_WinAPI_UnloadKeyboardLayout($iKbrdLayout)
		Return 1
	EndIf

	$iKbrdLayout = 0x0409 ; ENG
	$aKbrdLayouts = _WinAPI_GetKeyboardLayoutList()
	If @error Then Return 0
	_WinAPI_LoadKeyboardLayout($iKbrdLayout, $KLF_ACTIVATE)

	OnAutoItExitRegister('_FixAccelHotKeyLayout')
EndFunc 
; ================================================================

While Sleep(100)
WEnd



Добавлено:
Сообщение автоматически объединено:

OffTopic:
Dimmer сказал(а):
... почему в Windows 10 не работает BlockInput...
От имени администратора все работает.
 
Верх