1 (изменено: Kydman, 2023-01-20 06:46:46)

Тема: AHK: Hotkey запись в файл vk или sc кодом

Доброго времени суток! Такая проблема.

Есть окно с выбором хоткея, который сохраняется в файл.


Gui, Show, h100 w150, New GUI Window
Gui, Add, Button, x25 y50 w100 gSave, Save
IniRead, Key, Settings.ini, Section, key1, % A_Space
Hotkey, % key1 := Key, Action, On, UseErrorLevel
Gui, Add, Hotkey, x45 y20 w56 h18 vkey1, % Key

Save: 
Loop 5
	{
		Hotkey, % key%A_Index%, Off, UseErrorLevel
		GuiControlGet, key%A_Index% 
		Hotkey, % key%A_Index%, Action, On, UseErrorLevel
		IniWrite, % key%A_Index%, Settings.ini, Section, key%A_Index%
    }

F1::
PixelGetColor, Color, 0, 0
if (Color = 0xFF1200)
    {
		SendInput %key1%
		sleep, % ran(60, 160)
		return
	}
ran(min, max)
 	{
   		random, ran, min, max
   		return ran
 	}

Сохранение происходит в таком формате.
Хоткей Зависит от языка раскладки.


[Section]
key0=
key1=q
key2=
key3=
key4=
key5=

Хотелось бы использовать код клавиш в Хоткеях.

2

Re: AHK: Hotkey запись в файл vk или sc кодом

Kydman, добро пожаловать на форум! Ознакомьтесь, пожалуйста, с Правилами, отредактируйте свой пост. Обратите внимание на точки в конце предложений.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

3

Re: AHK: Hotkey запись в файл vk или sc кодом

teadrinker
Простите, поправил.

4

Re: AHK: Hotkey запись в файл vk или sc кодом

Может быть поможет GetKeyVK().

5

Re: AHK: Hotkey запись в файл vk или sc кодом

Taveron пишет:

Может быть поможет GetKeyVK().

Спасибо за наводку, изучил данный момент, к сожалению проблема осталась. Запись в файл теперь ведется с VK кодом, но при смене раскладки клавиатуры все равно не нажимаются буквы т.к запись в файл идет от раскладки клавиатуры. Поискав на форуме наткнулся на https://forum.script-coding.com/viewtopic.php?id=6511 Но проблема так и не решена.

6

Re: AHK: Hotkey запись в файл vk или sc кодом

Для примера:


F1::
	keyName := "W"
	keyVK := Format("vk{:x}", GetKeyVK(keyName))
	IniWrite, %keyVK%, Settings.ini, Section, key1
	IniRead, value, Settings.ini, Section, key1
	Hotkey, %value%, customHotkey
	MsgBox, Вы создали горячую клавишу %value% (%keyName%)
Return

customHotkey:
	MsgBox, Вы нажали горячую клавишу %value% (%keyName%)
Return

7

Re: AHK: Hotkey запись в файл vk или sc кодом

Taveron пишет:

Для примера:


F1::
	keyName := "W"
	keyVK := Format("vk{:x}", GetKeyVK(keyName))
	IniWrite, %keyVK%, Settings.ini, Section, key1
	IniRead, value, Settings.ini, Section, key1
	Hotkey, %value%, customHotkey
	MsgBox, Вы создали горячую клавишу %value% (%keyName%)
Return

customHotkey:
	MsgBox, Вы нажали горячую клавишу %value% (%keyName%)
Return

К сожалению, не получается у меня внедрить это в свой код.

8 (изменено: Kydman, 2023-01-20 11:59:04)

Re: AHK: Hotkey запись в файл vk или sc кодом

IniRead, Info, Refresher.ini, InfoSettings, Info
Gui, Add, Hotkey,vInfo x45 y35 w56 h18 h20 gInfoChk, %Info%
Gui, Show, h100 w150, New GUI Window
Return
InfoChk:
   prevInfo := Key2VK(Info)
   IniWrite, %prevInfo%, Refresher.ini, InfoSettings, Info
Return
GuiClose:
ExitApp

Key2VK(HotkeyStr)
{
   SetFormat, Integer, H
   Loop, Parse, HotkeyStr
      If A_LoopField Not Contains +,^,!
      {
         Pos := A_Index
         Break
      }
   Return SubStr(HotkeyStr,1,Pos-1) "vk" GetKeyVK(SubStr(HotkeyStr,Pos))
}

F1::
	SendInput %Info%
Return

Запись идет теперь кодом VK, но при смене раскладки печатает хоткей в той раскладке в какой был записан. Уже не знаю что придумать. Может есть какой то вариант с определением раскладки клавиатуры, и если раскладка изменилась, перезапись ini? Потому что, при смене раскладки и если я назначаю хоткей снова, то печатается нужная буква.

9

Re: AHK: Hotkey запись в файл vk или sc кодом

Разобрался. Можно закрывать) SendInput {%Info%}