1

Тема: AHK: DropDownList ,конвертировать и поместить в переменную.

Доброго времени суток. Помогите разобраться ,как название пункта DropDownList ,конвертировать и поместить в переменную.

%Preparat%

Gui, Add, DropDownList, vPreparat gDropDownList w300, Аспирин|Парацетомол|Виттамин|
Gui, Show,
Return


 *vk60::
Gui Submit, NoHide
SendInput, %Preparat% 
sleep, 500
Return

DropDownList:
Аспирин := ASPIRINE
Парацетомол := PARACETOMOL
Витамин := VITAMIN
Return

Return
GuiClose:
ExitApp


В итоге должно получиться при выборе в "DropDownList" послать слово на английском языке.

OS: Win11x64, AutoHotkey v1.1.25.01 (Unicode 64-bit).

2

Re: AHK: DropDownList ,конвертировать и поместить в переменную.

Ядрён
Добрый вечер, можете попробовать:

Gui, Add, DropDownList, vPreparat gDropDownList w300, Аспирин|Парацетомол|Витамин
Gui, Show,
Return

*vk60::
Gui Submit, NoHide
; Проверка и замена русского значения на английское
if (Preparat = "Аспирин") {
    SendInput, ASPIRINE
} else if (Preparat = "Парацетомол") {
    SendInput, PARACETOMOL
} else if (Preparat = "Витамин") {
    SendInput, VITAMIN
}
sleep, 500
return

DropDownList:
Аспирин := ASPIRINE
Парацетомол := PARACETOMOL
Витамин := VITAMIN
Return

GuiClose:
ExitApp

Других способов лично я не знаю. Возможно подскажут более лучшие варинаты.

3

Re: AHK: DropDownList ,конвертировать и поместить в переменную.

Немного более технологично:

dictionary := {Аспирин: "ASPIRINE", Парацетомол: "PARACETOMOL", Витамин: "VITAMIN"}
Gui, Add, DropDownList, vPreparat w300, Аспирин|Парацетомол|Витамин
Gui, Show,
Return

*NumPad0::
    GuiControlGet, Preparat
    SendInput, % dictionary[Preparat]
return

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

4 (изменено: Malcev, 2024-08-24 03:42:41)

Re: AHK: DropDownList ,конвертировать и поместить в переменную.

Я бы как-то так сделал бы:

arr := [{"Аспирин": "ASPIRINE"}, {"Парацетомол": "PARACETOMOL"}, {"Витамин": "VITAMIN"}]
dictionary := {}, str := ""
for k, v in arr
{
   for k1, v1 in v
   {
      dictionary[k1 ""] := v1
      str .= k1 "|"
   }
}
str := substr(str, 1, -1)
Gui, Add, DropDownList, vPreparat w300, % str
Gui, Show,
Return

*NumPad0::
    GuiControlGet, Preparat
    SendInput, % dictionary[Preparat ""]
return

GuiClose:
ExitApp

5

Re: AHK: DropDownList ,конвертировать и поместить в переменную.

Или так:

preparats := "Аспирин;ASPIRINE||Парацетомол;PARACETOMOL|Витамин;VITAMIN"
Gui, Add, DropDownList, vPreparat w300, % RegExReplace(preparats, ";[^|]+")
Gui, Show,
Return

*NumPad0::
    GuiControlGet, Preparat
    RegExMatch(preparats, "\Q" . Preparat . "\E;\K[^|]+", m)
    SendInput, % m
return

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

6

Re: AHK: DropDownList ,конвертировать и поместить в переменную.

Спасибо всем за участие все варианты хороши !

OS: Win11x64, AutoHotkey v1.1.25.01 (Unicode 64-bit).

7

Re: AHK: DropDownList ,конвертировать и поместить в переменную.

teadrinker, шаблон \Q...\E "опасно" использовать без конвертирования строки.
http://forum.script-coding.com/viewtopi … 32#p159732

8

Re: AHK: DropDownList ,конвертировать и поместить в переменную.

Ага, припоминаю, но в данном случае вряд ли такое попадётся.

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