[решено] Переключение раскладки клавиатуры правым SHIFT

Аватара пользователя
Yashied

Re: [решено] Переключение раскладки клавиатуры правым SHIFT

Сообщение Yashied »

Цитата Yashied:



Это описание к функции _IsPressed(), я сомниваюсь, что его когда-нибудь обновляли
[решено] Переключение раскладки клавиатуры правым SHIFT




Ну если разработчикам никто об этом не сообщал, то почему они будут обновлять это?




Цитата Yashied:



Возможно раньше это было так, но вот простой пример, как проверить загружена или нет Dll
[решено] Переключение раскладки клавиатуры правым SHIFT




Не уверен как с этого примера понять, что dll'ку не обязательно открывать, и при этом к ней не будет постоянного обращения (открытие/закрытия), как в случае с FileReadLine например.
Аватара пользователя
Creat0R

Re: [решено] Переключение раскладки клавиатуры правым SHIFT

Сообщение Creat0R »

Система не загружает в память более одной копии Dll. В любом случае, вот еще один пример:





Код:

Код: Выделить всё

#Include 
$hProc1 = _WinAPI_GetProcAddress(_WinAPI_GetModuleHandle(@SystemDir & '\user32.dll'), 'GetAsyncKeyState')
$hDll = DllOpen(@SystemDir & '\user32.dll')
$hProc2 = _WinAPI_GetProcAddress(_WinAPI_GetModuleHandle(@SystemDir & '\user32.dll'), 'GetAsyncKeyState')
DllClose($hDll)
$hProc3 = _WinAPI_GetProcAddress(_WinAPI_GetModuleHandle(@SystemDir & '\user32.dll'), 'GetAsyncKeyState')
ConsoleWrite($hProc1 & ' = ' & $hProc2 & ' = ' & $hProc3 & @CR)
Func _WinAPI_GetProcAddress($hModule, $sProc)
	Local $Ret = DllCall('kernel32.dll', 'ptr', 'GetProcAddress', 'ptr', $hModule, 'str', $sProc)
	If (@error) Or ($Ret[0] = 0) Then
		Return SetError(1, 0, 0)
	EndIf
	Return $Ret[0]
EndFunc   ;==>_WinAPI_GetProcAddress

И почему все пытаются выставить значение в Sleep()[/i] как можно больше. Sleep(1) более чем достаточно. Вот простой тест:





Код:

Код: Выделить всё

GUICreate('')
GUISetState()
$Timer = TimerInit()
GUIGetMsg()
ConsoleWrite(TimerDiff($Timer) & @CR)
$Timer = TimerInit()
Sleep(1)
ConsoleWrite(TimerDiff($Timer) & @CR)

Получается, что Sleep(1)[/i] тормозит программу в 1000(!) раз больше, чем GUIGetMsg(). А когда используется GUI, Sleep() ведь не ставится.
Аватара пользователя
Creat0R

Re: [решено] Переключение раскладки клавиатуры правым SHIFT

Сообщение Creat0R »

Цитата Yashied:



истема не загружает в память более одной копии Dll
[решено] Переключение раскладки клавиатуры правым SHIFT




Да, но скрипт всё ровно при DllCall открывает dll'ку, вызывает в ней функцию, и закрывает, так почему бы просто один раз это не сделать?




Цитата Yashied:



почему все пытаются выставить значение в Sleep() как можно больше. Sleep(1) более чем достаточно
[решено] Переключение раскладки клавиатуры правым SHIFT




Потому что иногда бывают проблемы без этого, это привычка из старых версий AutoIt'а, где с этим всё было печальней чем теперь Изображение




Цитата Yashied:



Получается, что Sleep(1) тормозит программу в 1000(!) раз больше, чем GUIGetMsg()
[решено] Переключение раскладки клавиатуры правым SHIFT




Почему в 1000, разница только в 10 мс. Хотя странно это, судя по справке (раньше так было по крайней мере), в GUIGetMsg вроде встроена пауза в 10 мс...
Ответить

Вернуться в «AutoIt»