Условное поведение с использованием выпадающего списка и текстового поля GUI в AHK

Допустим, я выбрал «Option1» и «Color1». Затем я пишу что-то в свободную текстовую область. Теперь, когда я нажимаю ОК, он выполняет условные теги. Поскольку выбран Option1 / color1, он выполнит команду sendinput с:

блаблала% текст1% блабла% текст2%.

Однако, если я выберу «option1» и «color», он сделает sendinput с

блабла со своей женой и ее женой текст1 тогда собака делала текст2.

Мне удалось сделать часть этого кода. Моя проблема в том, что, когда я выбираю из списка, он выполняет скрипт независимо от того, что я написал. Я хочу, чтобы он выполнялся после нажатия кнопки «ОК» и отображения текста1 / текст2, куда бы я ни захотел его вставить.

#NoEnv
Gui, 1: font, s10 , Verdana
Gui, 1: Add, DropDownList, gDropDownList vDropDownList1 R2 choose1, Option1|Option2
Gui, 1: Add, DropDownList, gDropDownList vDropDownList2 R2 choose1, Color1|Color2
Gui, 1:Add, text,, Text1
Gui, 1:Add, edit, vText1
Gui, 1:Add, text,, Text2
Gui, 1:Add, edit, vText2
Return

DropDownList:
Gui, 1:Submit,NoHide
if (dropdownlist1 = "Option1") && (dropdownlist2 = "Color1")
{
MsgBox, A flower said to a be: %text1%. The bee replied %text2%
Gui 1: hide
}
else if (dropdownlist1 = "Option1") && (dropdownlist2 = "Color2")
{
MsgBox, You picked %text1% and %text2%
Gui 1: hide
}
else if (dropdownlist1 = "Option2") && (dropdownlist2 = "Color1")
{
MsgBox, A girl said %text1% when you picked %text2%
Gui 1: hide
}
else if (dropdownlist1 = "Option2") && (dropdownlist2 = "Color2")
{
MsgBox, Blabla %text1% blabla %text2%
Gui 1: hide
}
return

#j::
Gui 1: show,, DropDownGui
return

0

Решение

Мне удалось сделать часть этого кода. Моя проблема в том, что когда я выбираю
из дроплистов он выполняет скрипт независимо от того, что я написал.

Это потому, что к вашему выпадающему списку прикреплен gosub. Вот что g в gDropDownList является. Когда вы выбираете что-то из этого, он запускает метку DropDownList.

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

Попробуйте что-то вроде этого:

#NoEnv
Gui, 1:font, s10 , Verdana
Gui, 1:Add, DropDownList, gGuiSave vDropDownList1 R2 choose1, Option1|Option2
Gui, 1:Add, DropDownList, gGuiSave vDropDownList2 R2 choose1, Color1|Color2
Gui, 1:Add, text,, Text1
Gui, 1:Add, edit, vText1
Gui, 1:Add, text,, Text2
Gui, 1:Add, edit, vText2
Return

GuiSave:
Gui, 1:Submit,NoHide
return

DropDownList:
Gui, 1:Submit,NoHide
if (dropdownlist1 = "Option1") && (dropdownlist2 = "Color1")
{
MsgBox, A flower said to a be: %text1%. The bee replied %text2%
Gui 1: hide
}
else if (dropdownlist1 = "Option1") && (dropdownlist2 = "Color2")
{
MsgBox, You picked %text1% and %text2%
Gui 1: hide
}
else if (dropdownlist1 = "Option2") && (dropdownlist2 = "Color1")
{
MsgBox, A girl said %text1% when you picked %text2%
Gui 1: hide
}
else if (dropdownlist1 = "Option2") && (dropdownlist2 = "Color2")
{
MsgBox, Blabla %text1% blabla %text2%
Gui 1: hide
}
return

#j::
Gui 1: show,, DropDownGui
return
1

Другие решения

Других решений пока нет …