Автоматизация и боты

 Помощь      Поиск      Пользователи
Сайт Кибор     Программируемый кликер Кибор     Видео обучение     Заказать бот

 Страниц (1): [1]   

> Без описания
Martin
Отправлено: 27 Ноября, 2022 - 22:51:13
Post Id



Пользователь
Мастер


Покинул форум
Сообщений всего: 121
Дата рег-ции: Июнь 2022  
Репутация: 1




Смысл в том, что когда я пишу текст в поле edit, нажимаю пробел > начинается поиск этого слова в блокноте и если оно там есть то выполняется функция название который через знак "|"


команды.txt
CODE:
первый | command1
второй | command2


CODE:
function command1() {messagebox("1");}
function command2() {messagebox("2");}



Диалоговое окно (Отобразить)
 
 Top
Zireael
Отправлено: 27 Ноября, 2022 - 23:34:07
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4465
Дата рег-ции: Нояб. 2017  
Репутация: 585




Какой смысл всего этого?
 
 Top
Martin
Отправлено: 28 Ноября, 2022 - 01:17:41
Post Id



Пользователь
Мастер


Покинул форум
Сообщений всего: 121
Дата рег-ции: Июнь 2022  
Репутация: 1




Zireael , Много все возможных команд > 100 / Если делать кнопки под каждую то будет слишком нагромождено, а так можно будет по слову сразу запустить нужную функцию. Ещё один плюс такого запуска, что не нужно использовать мышку, чтобы нажать на кнопку.
 
 Top
Zireael
Отправлено: 28 Ноября, 2022 - 01:34:54
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4465
Дата рег-ции: Нояб. 2017  
Репутация: 585




 Цитата:
Если делать кнопки под каждую то будет слишком нагромождено

Сделайте ComboBox или ListBox.
 
 Top
Martin
Отправлено: 28 Ноября, 2022 - 02:47:20
Post Id



Пользователь
Мастер


Покинул форум
Сообщений всего: 121
Дата рег-ции: Июнь 2022  
Репутация: 1




Zireael , попробовал, не удобно. При варианте с ListBox можно только мышкой выбирать а пока пролистаешь до нужной команды много времени уйдет.
с ComboBox вроде всё нормально но возникает 2 проблемы:
1) При запуске диалогового окна я не могу переключится нажав TAB на выбор команд. Нужно использовать мышку для активации, что увеличивает время активации команды.
2) После активации я пишу первую букву слова и нахожу, что нужно, но если несколько команд начинаются с одной буквы то быстро выбрать нужную не получится.

Тут скорость важный показатель. И нужно без использовании мышки запускать нужные функции.


Диалоговое окно (Отобразить)
 
 Top
Zireael
Отправлено: 28 Ноября, 2022 - 10:21:34
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4465
Дата рег-ции: Нояб. 2017  
Репутация: 585




Для переключения между элементами через таб нужно добавить стиль WS_TABSTOP.
Установить фокус на нужный элемент функция SetFocus.
Открыть список комбобокса с клавиатуры Alt + Down.
Если пункты начинаются с одинаковой буквы, то можно несколько раз нажать первую букву будет переход к следующему пункту.
CODE:
#define WS_VISIBLE 0x10000000
#define WS_CHILD 0x40000000
#define WS_BORDER 0x00800000
#define ES_MULTILINE 0x0004
#define ES_WANTRETURN 0x1000
#define ES_AUTOVSCROLL 0x0040
#define ES_AUTOHSCROLL 0x0080
#define CBS_DROPDOWNLIST 0x0003
#define CB_ADDSTRING 0x0143
#define CB_GETCURSEL 0x0147
#define CB_SETCURSEL 0x014E
#define TRUE 1
#define WM_SETFONT 0x0030
#define RUSSIAN_CHARSET 204
#define WS_TABSTOP 0x00010000

external(INT, "CreateWindow", "CreateWindowExA", "User32.dll");
external(INT, "GetWindowText", "GetWindowTextA", "User32.dll");
external(INT, "SetWindowText", "SetWindowTextA", "User32.dll");
external(INT, "CreateFont", "CreateFontA", "Gdi32.dll");
external(INT, "GetWindowRect", "GetWindowRect", "User32.dll");
external(INT, "DeleteObject", "DeleteObject", "Gdi32.dll");
external(INT, "DeleteFile", "DeleteFileA", "kernel32.dll");
external(INT, "SetFocus", "SetFocus", "User32.dll");
int h_font;
string rn = formatic(13)+formatic(10);
int dialogPosX_0 = 567, dialogPosY_0 = 245;
int edit0[1];
string text_edit0[1];
text_edit0[0] = "Edit0";
int combobox0[2];
int flag_combobox0[2] = { 0, 0 };
string text_combobox0[2][7];
int count_rows_combobox0[2] = { 7, 5 };
text_combobox0[0][0] = "Команда 1"; text_combobox0[0][1] = "Команда 2"; text_combobox0[0][2] = "Команда 3"; text_combobox0[0][3] = "Команда 4"; text_combobox0[0][4] = "Команда 5"; text_combobox0[0][5] = "Команда 6"; text_combobox0[0][6] = "Команда 7";
text_combobox0[1][0] = "Тест"; text_combobox0[1][1] = "Сообщение"; text_combobox0[1][2] = "Отправить"; text_combobox0[1][3] = "Получить"; text_combobox0[1][4] = "Найти";

createdialog(0);
showdialog(0, "Диалог0", dialogPosX_0, dialogPosY_0, 286, 152, 4, 1);

loop()
{
// тут нужный код
sleep(10);
}
end_0:;

function getmessage(0, WM_CREATE)
{
int i;
int j;
char c_text_combobox[999];
h_font = CreateFont(-12, 0, 0, 0, 400, 0, 0, 0, RUSSIAN_CHARSET, 0, 0, 0, 0, "Arial");
edit0[0] = CreateWindow(0, "EDIT", text_edit0[0], WS_VISIBLE | WS_CHILD | WS_BORDER | WS_TABSTOP, 16, 64, 240, 20, gethwnd(0), 0, 0, 0);
combobox0[0] = CreateWindow(0, "COMBOBOX", "", WS_VISIBLE | WS_CHILD | WS_BORDER | CBS_DROPDOWNLIST | WS_TABSTOP, 16, 8, 248, 142, gethwnd(0), 0, 0, 0);
combobox0[1] = CreateWindow(0, "COMBOBOX", "", WS_VISIBLE | WS_CHILD | WS_BORDER | CBS_DROPDOWNLIST | WS_TABSTOP, 16, 32, 248, 108, gethwnd(0), 0, 0, 0);
for(i=0; i<2; i++)
{
for(j=0; j<count_rows_combobox0[i]; j++)
{
strcpy(#c_text_combobox[0], text_combobox0[i][j]);
sendmessage(CB_ADDSTRING, 0, address(#c_text_combobox[0]), formatiw(combobox0[i]));
}
}
for(i=0; i<2; i++)sendmessage(CB_SETCURSEL, flag_combobox0[i], 0, formatiw(combobox0[i]));
for(i=0; i<1; i++)sendmessage(WM_SETFONT, h_font, TRUE, formatiw(edit0[i]));
for(i=0; i<2; i++)sendmessage(WM_SETFONT, h_font, TRUE, formatiw(combobox0[i]));
SetFocus(combobox0[0]);
}

function getmessage(0, WM_COMMAND)
{
int i;
char c_text_edit[999];
for(i=0; i<1; i++) // обработка нажатий edit
{
if(message.lparam == edit0[i])
{
GetWindowText(edit0[i], address(#c_text_edit[0]), sizearray(c_text_edit));
text_edit0[i] = format(#c_text_edit[0]);
return;
}
}
for(i=0; i<2; i++) // обработка нажатий на список combobox
{
if(message.lparam == combobox0[i])
{
flag_combobox0[i] = sendmessage(CB_GETCURSEL, 0, 0, formatiw(combobox0[i]));
return;
}
}
}

function getmessage(0, WM_CLOSE)
{
DeleteObject(h_font);
goto global end_0; // переход в метке
// close(); // закрыть кибор
}
 
 Top
Martin
Отправлено: 28 Ноября, 2022 - 11:10:50
Post Id



Пользователь
Мастер


Покинул форум
Сообщений всего: 121
Дата рег-ции: Июнь 2022  
Репутация: 1




Zireael , Спасибо, очень здорово работает. Есть ещё немного вопросов
1)Как ещё убрать верхнее меню где свернуть и закрыть программу?
2) Можно переназначить стрелки на hjkl как в Vim, пытаюсь сейчас его освоить.
3) Да и самое главное : Как по нажатию пробела запускать выбранную функцию?
 
 Top
Zireael
Отправлено: 28 Ноября, 2022 - 11:49:00
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4465
Дата рег-ции: Нояб. 2017  
Репутация: 585




 Цитата:
1)Как ещё убрать верхнее меню где свернуть и закрыть программу?
3) Да и самое главное : Как по нажатию пробела запускать выбранную функцию?

Перетаскивать окно можно за клиентскую часть.
CODE:
#define WS_VISIBLE 0x10000000
#define WS_CHILD 0x40000000
#define WS_BORDER 0x00800000
#define ES_MULTILINE 0x0004
#define ES_WANTRETURN 0x1000
#define ES_AUTOVSCROLL 0x0040
#define ES_AUTOHSCROLL 0x0080
#define CBS_DROPDOWNLIST 0x0003
#define CB_ADDSTRING 0x0143
#define CB_GETCURSEL 0x0147
#define CB_SETCURSEL 0x014E
#define TRUE 1
#define WM_SETFONT 0x0030
#define RUSSIAN_CHARSET 204
#define WS_TABSTOP 0x00010000
#define HTCAPTION 2
#define GWL_STYLE -16

external(INT, "CreateWindow", "CreateWindowExA", "User32.dll");
external(INT, "GetWindowText", "GetWindowTextA", "User32.dll");
external(INT, "SetWindowText", "SetWindowTextA", "User32.dll");
external(INT, "CreateFont", "CreateFontA", "Gdi32.dll");
external(INT, "GetWindowRect", "GetWindowRect", "User32.dll");
external(INT, "DeleteObject", "DeleteObject", "Gdi32.dll");
external(INT, "DeleteFile", "DeleteFileA", "kernel32.dll");
external(INT, "SetFocus", "SetFocus", "User32.dll");
external(INT, "SetWindowLong", "SetWindowLongA", "User32.dll");

int h_font;
string rn = formatic(13)+formatic(10);
int dialogPosX_0 = 567, dialogPosY_0 = 245;
int edit0[1];
string text_edit0[1];
text_edit0[0] = "Edit0";
int combobox0[2];
int flag_combobox0[2] = { 0, 0 };
string text_combobox0[2][7];
int count_rows_combobox0[2] = { 7, 5 };
text_combobox0[0][0] = "Команда 1"; text_combobox0[0][1] = "Команда 2"; text_combobox0[0][2] = "Команда 3"; text_combobox0[0][3] = "Команда 4"; text_combobox0[0][4] = "Команда 5"; text_combobox0[0][5] = "Команда 6"; text_combobox0[0][6] = "Команда 7";
text_combobox0[1][0] = "Тест"; text_combobox0[1][1] = "Сообщение"; text_combobox0[1][2] = "Отправить"; text_combobox0[1][3] = "Получить"; text_combobox0[1][4] = "Найти";

createdialog(0);
showdialog(0, "Диалог0", dialogPosX_0, dialogPosY_0, 286, 152, 4, 1);
update(formatiw(gethwnd(0)));

loop()
{
// тут нужный код

if(getkeystate(32)) // если нажат пробел
{
while(getkeystate(32))sleep(10); // ждать пока нажат пробел
string command = text_combobox0[0][flag_combobox0[0]]; // текст выбранного пункта первого комбобокса
if(command=="Команда 1")messagebox("Вызвать функцию для Команда 1");
if(command=="Команда 2")messagebox("Вызвать функцию для Команда 2");
if(command=="Команда 3")messagebox("Вызвать функцию для Команда 3");
if(command=="Команда 4")messagebox("Вызвать функцию для Команда 4");
if(command=="Команда 5")messagebox("Вызвать функцию для Команда 5");
if(command=="Команда 6")messagebox("Вызвать функцию для Команда 6");
if(command=="Команда 7")messagebox("Вызвать функцию для Команда 7");
}

sleep(10);
}
end_0:;

function getmessage(0, WM_CREATE)
{
SetWindowLong(gethwnd(0), GWL_STYLE, WS_VISIBLE);
int i;
int j;
char c_text_combobox[999];
h_font = CreateFont(-12, 0, 0, 0, 400, 0, 0, 0, RUSSIAN_CHARSET, 0, 0, 0, 0, "Arial");
edit0[0] = CreateWindow(0, "EDIT", text_edit0[0], WS_VISIBLE | WS_CHILD | WS_BORDER | WS_TABSTOP, 16, 64, 240, 20, gethwnd(0), 0, 0, 0);
combobox0[0] = CreateWindow(0, "COMBOBOX", "", WS_VISIBLE | WS_CHILD | WS_BORDER | CBS_DROPDOWNLIST | WS_TABSTOP, 16, 8, 248, 142, gethwnd(0), 0, 0, 0);
combobox0[1] = CreateWindow(0, "COMBOBOX", "", WS_VISIBLE | WS_CHILD | WS_BORDER | CBS_DROPDOWNLIST | WS_TABSTOP, 16, 32, 248, 108, gethwnd(0), 0, 0, 0);
for(i=0; i<2; i++)
{
for(j=0; j<count_rows_combobox0[i]; j++)
{
strcpy(#c_text_combobox[0], text_combobox0[i][j]);
sendmessage(CB_ADDSTRING, 0, address(#c_text_combobox[0]), formatiw(combobox0[i]));
}
}
for(i=0; i<2; i++)sendmessage(CB_SETCURSEL, flag_combobox0[i], 0, formatiw(combobox0[i]));
for(i=0; i<1; i++)sendmessage(WM_SETFONT, h_font, TRUE, formatiw(edit0[i]));
for(i=0; i<2; i++)sendmessage(WM_SETFONT, h_font, TRUE, formatiw(combobox0[i]));
SetFocus(combobox0[0]);
}

function getmessage(0, WM_COMMAND)
{
int i;
char c_text_edit[999];
for(i=0; i<1; i++) // обработка нажатий edit
{
if(message.lparam == edit0[i])
{
GetWindowText(edit0[i], address(#c_text_edit[0]), sizearray(c_text_edit));
text_edit0[i] = format(#c_text_edit[0]);
return;
}
}
for(i=0; i<2; i++) // обработка нажатий на список combobox
{
if(message.lparam == combobox0[i])
{
flag_combobox0[i] = sendmessage(CB_GETCURSEL, 0, 0, formatiw(combobox0[i]));
return;
}
}
}

function getmessage(0, WM_CLOSE)
{
DeleteObject(h_font);
goto global end_0; // переход в метке
// close(); // закрыть кибор
}

function getmessage (0, WM_LBUTTONDOWN)
{
sendmessage(WM_NCLBUTTONDOWN, HTCAPTION, 0, formatiw(gethwnd(0)));
}
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 3 (гостей: 3, зарегистрированных: 0)
« Вопросы и решение проблем »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 




Powered by