Диалоговые кнопки

Tenpenny1122

Новичок
Автор темы
13
1
Всех приветствую, вопрос следующий.
В AHK есть диалоги, которые созданы при помощи ShowDialog.
Так вот, там можно выбрать кнопку, которая находится снизу этого окна.
Как сделать эту кнопку такой, что бы она закрывала само окно?
 
Решение
если правильно понял, то
AutoHotKey:
while (isDialogOpen())
{
    if (GetKeyState("Escape", "P") or (isDialogButtonSelected(2) = true and GetKeyState("LButton", "P"))); если нажал esc, или выбрал вторую кнопку(закрыть), то закрыть...
    {
        return
    }
}
после вывода диалога, т.е

AutoHotKey:
ShowDialog("стиль", "Оглавление", "Бла-бла-бла", "Кнопка 1(любое название)", "Закрыть")
while (isDialogOpen())
{
    if (GetKeyState("Escape", "P") or (isDialogButtonSelected(2) = true and GetKeyState("LButton", "P"))); если нажал esc, или выбрал вторую кнопку(закрыть), то закрыть...
    {
        return
    }
}
И если жмёт закрыть, то диалог закрываелся... л-логично

CaJlaT

Овощ
Модератор
2,809
2,596
если правильно понял, то
AutoHotKey:
while (isDialogOpen())
{
    if (GetKeyState("Escape", "P") or (isDialogButtonSelected(2) = true and GetKeyState("LButton", "P"))); если нажал esc, или выбрал вторую кнопку(закрыть), то закрыть...
    {
        return
    }
}
после вывода диалога, т.е

AutoHotKey:
ShowDialog("стиль", "Оглавление", "Бла-бла-бла", "Кнопка 1(любое название)", "Закрыть")
while (isDialogOpen())
{
    if (GetKeyState("Escape", "P") or (isDialogButtonSelected(2) = true and GetKeyState("LButton", "P"))); если нажал esc, или выбрал вторую кнопку(закрыть), то закрыть...
    {
        return
    }
}
И если жмёт закрыть, то диалог закрываелся... л-логично
 
  • Нравится
Реакции: Tenpenny1122

Tenpenny1122

Новичок
Автор темы
13
1
если правильно понял, то
AutoHotKey:
while (isDialogOpen())
{
    if (GetKeyState("Escape", "P") or (isDialogButtonSelected(2) = true and GetKeyState("LButton", "P"))); если нажал esc, или выбрал вторую кнопку(закрыть), то закрыть...
    {
        return
    }
}
после вывода диалога, т.е

AutoHotKey:
ShowDialog("стиль", "Оглавление", "Бла-бла-бла", "Кнопка 1(любое название)", "Закрыть")
while (isDialogOpen())
{
    if (GetKeyState("Escape", "P") or (isDialogButtonSelected(2) = true and GetKeyState("LButton", "P"))); если нажал esc, или выбрал вторую кнопку(закрыть), то закрыть...
    {
        return
    }
}
И если жмёт закрыть, то диалог закрываелся... л-логично

Для диалога второго стиля подходит, благодарен.
Подскажи как в этом коде:

AutoHotKey:
while (isDialogOpen())
{
File = %A_MyDocuments%\GTA San Andreas User Files\CR-MP\GenerationC\chatlog.txt
ShowDialog("1", "{FF0000}Победитель", "{FFFFFF}Впишите в данную строчку {FFA500}ID {FFFFFF}победителя", "Ок", "Закрыть") 
input, ii, V, {Enter}
sleep 1000
Sendchat("/id " ii)
sleep 1000
FileRead, read, %file% 
RegExMatch(read, "\Q ID: \E(.*)\Q - \E(.*)\Q", nick) 
Sendchat("[MP]: Победителем мероприятия становится " nick2 "[" nick1 "]. Поздравим!")
sleep 1000
ShowDialog("1", "{FF0000}Победитель", "{FFFFFF}Впишите в данную строчку {FFA500}кол-во выигранных PC", "Ок", "Закрыть") 
input, id, V, {Enter}
SendChat("/a /givecredits " nick1 " " id " | Причина: Победа в мероприятии.")
sleep 1500
SendChat("/a [Admin Helper]: Старшая, администрация, прошу принять форму на выдачу приза.")
sleep 1500
SendChat("/a [Admin Helper]: Сделать это можно, нажав на кнопку 5, на вашем Нумпаде")
FileDelete, %FIle%
FileAppend,, %File%
}

Сделать так, что бы при нажатии кнопки OK, скрипт пошёл дальше:

AutoHotKey:
input, ii, V, {Enter}
sleep 1000
Sendchat("/id " ii)
sleep 1000
FileRead, read, %file% 
RegExMatch(read, "\Q ID: \E(.*)\Q - \E(.*)\Q", nick) 
Sendchat("[MP]: Победителем мероприятия становится " nick2 "[" nick1 "]. Поздравим!")
sleep 1000
ShowDialog("1", "{FF0000}Победитель", "{FFFFFF}Впишите в данную строчку {FFA500}кол-во выигранных PC", "Ок", "Закрыть") 
input, id, V, {Enter}
SendChat("/a /givecredits " nick1 " " id " | Причина: Победа в мероприятии.")
sleep 1500
SendChat("/a [Admin Helper]: Старшая, администрация, прошу принять форму на выдачу приза.")
sleep 1500
SendChat("/a [Admin Helper]: Сделать это можно, нажав на кнопку 5, на вашем Нумпаде")
FileDelete, %FIle%
FileAppend,, %File%

Ну а при нажатии ESC или кнопки "Закрыть", скрипт выполнял команду return или Reload
 

CaJlaT

Овощ
Модератор
2,809
2,596
Для диалога второго стиля подходит, благодарен.
Подскажи как в этом коде:

AutoHotKey:
while (isDialogOpen())
{
File = %A_MyDocuments%\GTA San Andreas User Files\CR-MP\GenerationC\chatlog.txt
ShowDialog("1", "{FF0000}Победитель", "{FFFFFF}Впишите в данную строчку {FFA500}ID {FFFFFF}победителя", "Ок", "Закрыть")
input, ii, V, {Enter}
sleep 1000
Sendchat("/id " ii)
sleep 1000
FileRead, read, %file%
RegExMatch(read, "\Q ID: \E(.*)\Q - \E(.*)\Q", nick)
Sendchat("[MP]: Победителем мероприятия становится " nick2 "[" nick1 "]. Поздравим!")
sleep 1000
ShowDialog("1", "{FF0000}Победитель", "{FFFFFF}Впишите в данную строчку {FFA500}кол-во выигранных PC", "Ок", "Закрыть")
input, id, V, {Enter}
SendChat("/a /givecredits " nick1 " " id " | Причина: Победа в мероприятии.")
sleep 1500
SendChat("/a [Admin Helper]: Старшая, администрация, прошу принять форму на выдачу приза.")
sleep 1500
SendChat("/a [Admin Helper]: Сделать это можно, нажав на кнопку 5, на вашем Нумпаде")
FileDelete, %FIle%
FileAppend,, %File%
}

Сделать так, что бы при нажатии кнопки OK, скрипт пошёл дальше:

AutoHotKey:
input, ii, V, {Enter}
sleep 1000
Sendchat("/id " ii)
sleep 1000
FileRead, read, %file%
RegExMatch(read, "\Q ID: \E(.*)\Q - \E(.*)\Q", nick)
Sendchat("[MP]: Победителем мероприятия становится " nick2 "[" nick1 "]. Поздравим!")
sleep 1000
ShowDialog("1", "{FF0000}Победитель", "{FFFFFF}Впишите в данную строчку {FFA500}кол-во выигранных PC", "Ок", "Закрыть")
input, id, V, {Enter}
SendChat("/a /givecredits " nick1 " " id " | Причина: Победа в мероприятии.")
sleep 1500
SendChat("/a [Admin Helper]: Старшая, администрация, прошу принять форму на выдачу приза.")
sleep 1500
SendChat("/a [Admin Helper]: Сделать это можно, нажав на кнопку 5, на вашем Нумпаде")
FileDelete, %FIle%
FileAppend,, %File%

Ну а при нажатии ESC или кнопки "Закрыть", скрипт выполнял команду return или Reload
AutoHotKey:
while (isDialogOpen())
{
    if (isDialogButtonSelected(1) = true and GetKeyState("LButton", "P"))
    {
        Gosub, dialog ; переход на метку диалог
        return
    }
}
dialog: ; метка диалог
{
;Код дальше
}
 
  • Нравится
Реакции: Tenpenny1122

Tenpenny1122

Новичок
Автор темы
13
1
AutoHotKey:
while (isDialogOpen())
{
    if (isDialogButtonSelected(1) = true and GetKeyState("LButton", "P"))
    {
        Gosub, dialog ; переход на метку диалог
        return
    }
}
dialog: ; метка диалог
{
;Код дальше
}

При нажатии "Закрыть" или ESC, диалог будет ребутить? Или это можно как то добавить в след.строчку?
 

CaJlaT

Овощ
Модератор
2,809
2,596
Не понимаю почему, но если нажать мышкой на кнопку закрыть, то идёт на метку но если закрыть через Esc, то нет...🤔🤔🤔

AutoHotKey:
#IfWinActive GTA:SA:MP
#NoEnv
#SingleInstance, force
#Include SAMP.ahk

global result := -1

LineResult() {
    if (!isDialogOpen() || getDialogStyle() = 0 || getDialogStyle() = 1 || getDialogStyle() = 3)
    return false
    while (isDialogOpen())
    continue
    if(GetKeyState("Esc", "P"))
    return false
    return getDialogLineNumber()
}

f2::
{
    ShowDialog("2", "[AHK]: Dialog", "{800080}1. {66CDAA}Что-то`n{800080}2. {66CDAA}Что-то второе", "Выбрать", "Закрыть")
    Result := LineResult()
    while (isDialogOpen())
    { ; начало цикла
        if (GetKeyState("Escape", "P") or (isDialogButtonSelected(2) = true and GetKeyState("LButton", "P")))
        {
            Return ; если нажал esc, или выбрал вторую кнопку(закрыть), то закрыть
        }
        if (isDialogButtonSelected(1) = true and GetKeyState("LButton", "P") and Result >= 0)
        {
            Gosub, dialog ; переход на метку диалог
            return
        }
    } ;конец цикла
    dialog: ; метка dialog
    {
        if (Result == 1)
        {
            addChatMessageEx("800080", "[AHK]: {66CDAA}Что-то....")
        }
        if (Result == 2)
        {
            addChatMessageEx("800080", "[AHK]: {66CDAA}Что-то второе....")
        }
        return
    } ; конец метки dialog
    return
}