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

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

 Страниц (22): [1] 2 3 4 5 6 7 8 9 » В конец    

> Без описания
007wan
Отправлено: 04 Марта, 2019 - 17:30:42
Post Id



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


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




Почему все стали переходить к external? это лучше, чем другие функции? Вот недавно видел...В теме писали как написать в файл текст и там использовалось external,А почему не fopen,fwrite итд? чем лучше External?
(Добавление)
Вот почему, например, используют таймер от external, а не CREATETIMER из кибора? чем лучше? Я конечно, все понимаю...новые возможности, методы итд, но в чем разниа?

(Отредактировано автором: 04 Марта, 2019 - 17:32:54)

 
 Top
Kibor
Отправлено: 04 Марта, 2019 - 17:55:01
Post Id



Администратор
Эксперт


Покинул форум
Сообщений всего: 8095
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 355




external позволяет использовать winapi и реализовать то чего нет в кибор функциях.
Если в Кибор есть этот функционал, то нет смысла использовать api.
Если кто то использует api вместо кибор функций, то значит ему так просто больше нравится или там есть возможности которых нет в функциях кибор.
 
 Top
007wan
Отправлено: 04 Марта, 2019 - 18:05:40
Post Id



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


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




Kibor ,Ясно - понятно
 
 Top
Zireael
Отправлено: 07 Марта, 2019 - 18:57:38
Post Id



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


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




 Цитата:
А как сравнить текст одной кнопки от другой при нажатии.
string a;
GetWindowText(Button1, a, 255);

CODE:
external(INT, "GetWindowText", "GetWindowTextA", "User32.dll");

// окна Button1 и Button2 должны быть созданы
char buffer1[255], buffer2[255];
GetWindowText(Button1, address(#buffer1[0]), sizearray(buffer1));
GetWindowText(Button2, address(#buffer2[0]), sizearray(buffer2));

if(format(#buffer1[0]) == format(#buffer2[0]))
{
messagebox("+++");
}
 
 Top
007wan
Отправлено: 07 Марта, 2019 - 19:17:19
Post Id



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


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




Ёёёёё, я забыл, блин надо было отдельную создать....
 
 Top
Zireael
Отправлено: 07 Марта, 2019 - 19:24:29
Post Id



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


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




 Цитата:
надо было отдельную создать....

Не обязательно каждый раз отдельную, просто вопросы задавать в соответствующих темах.
 
 Top
007wan
Отправлено: 08 Марта, 2019 - 11:38:02
Post Id



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


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




А возможно ли через external ограничить количество символов в Edit? Только не надо использовать старый метод с IF, я знаю, что получится что-то такое:
CODE:
Если количество символов в строке превышает более, чем нужно, то удалять последние символы до нужного
- Мне этого не надо, мне надо, что бы все железно работало, как вот сдесь:
CODE:
#define EM_SETPASSWORDCHAR 204

external(INT, "CreateWindow", "CreateWindowExA", "User32.dll" );
external(INT, "GetWindowText", "GetWindowTextA", "User32.dll" );
external(INT, "SetWindowText", "SetWindowTextA", "User32.dll" );
external(INT, "SetFocus", "SetFocus", "User32.dll" );

createdialog(0);
showdialog(0, "Диалог",100, 100, 300, 300, 1, 1);

while(window ("Диалог")==0)sleep(10);
win w=window ("Диалог");

int edit1=CreateWindow(0, "EDIT", "", 8192+8388608+1342177280, 10, 20, 100, 20, formatwi(w), 0, 0, 0); // можно вводить только цифры
int edit2=CreateWindow(0, "EDIT", "", 32+8388608+1342177280, 10, 60, 100, 20, formatwi(w), 0, 0, 0); // заменяет вводимый текст на *
int edit3=CreateWindow(0, "EDIT", "", 4+128+4096+1048576+2097152+8388608+1342177280, 10, 100, 120, 120, formatwi(w), 0, 0, 0); // многострочный текст

int button1=CreateWindow(0, "BUTTON", "Показать текст", 1342177280, 150, 60, 110, 20, formatwi(w), 0, 0, 0); // кнопка
int button2=CreateWindow(0, "BUTTON", "Вывести текст в messagebox", 8192+1342177280, 135, 100, 150, 40, formatwi(w), 0, 0, 0); // кнопка

int static1=CreateWindow(0, "STATIC", "Только цифры", 1342177280, 120, 20, 110, 20, formatwi(w), 0, 0, 0); // статик

char buffer[9999]; // буфер для текста из окна edit

loop()
{
sleep(1);
}


function getmessage(0, WM_COMMAND)
{
if(message.lparam==button1) // если нажата кнопка 'Показать текст'
{
if(GetWindowText(button1, address(#buffer[0]), sizearray(buffer))) // получить текст кнопки
{
if(format(#buffer[0])=="Показать текст") // если она называется 'Показать текст'
{
SetWindowText(button1, "Скрыть текст"); // меняем название кнопки
sendmessage(EM_SETPASSWORDCHAR, 0, 0, formatiw(edit2)); // отключаем замену вводимых символов на *
SetFocus(edit2); // ставим курсор в поле edit2
}
else // иначе
{
SetWindowText(button1, "Показать текст"); // меняем текст кнопки
sendmessage(EM_SETPASSWORDCHAR, 42, 0, formatiw(edit2)); // включаем замену вводимых символов на * (код 42) или любой другой символ
SetFocus(edit2);
}
}
}

if(message.lparam==button2) // если нажата кнопка 'Вывести текст в messagebox'
{
GetWindowText(edit3, address(#buffer[0]), sizearray(buffer)); // получить текст из окна edit3
messagebox(format(#buffer[0])); // показать текст в сообщении
}
}
Важен не код, а принцип действия, он не стирает не тот символ при ложном условии, а сразу запрещает ввод, даже как будто кнопка отключена. Так же и тут хочу, что бы он не давал больше вводить. А то, что он будет стирать лишнее при пользователе мне этого не нужно.
 
 Top
Zireael
Отправлено: 08 Марта, 2019 - 11:59:12
Post Id



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


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




 Цитата:
ограничить количество символов в Edit

Чтобы установить или получить какие-то параметры для edit ему отправляется sendmessage. Список сообщений
CODE:
#define WS_CHILD 1073741824
#define WS_VISIBLE 268435456
#define WS_BORDER 8388608
#define EM_LIMITTEXT 197

external(INT, "CreateWindow", "CreateWindowExA", "User32.dll" );

int edit1;
createdialog(0);
showdialog(0, "Диалог",100, 100, 300, 300, 1, 1);

loop()sleep(1);

function getmessage(0, WM_CREATE)
{
edit1=CreateWindow(0, "EDIT", "", WS_CHILD | WS_VISIBLE | WS_BORDER, 10, 20, 100, 20, gethwnd(0), 0, 0, 0);
sendmessage(EM_LIMITTEXT, 6, 0, formatiw(edit1)); // ограничение количества вводимых символов, 2й параметр, 6 символов
}

(Отредактировано автором: 08 Марта, 2019 - 12:00:04)

 
 Top
007wan
Отправлено: 08 Марта, 2019 - 12:15:05
Post Id



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


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




Zireael , Спасибо, но почему я ставлю лимит 70 и когда ввожу текст, то у меня не вводится больше где-то 10, не идет дальше
 
 Top
Zireael
Отправлено: 08 Марта, 2019 - 12:23:19
Post Id



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


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




 Цитата:
почему я ставлю лимит 70 и когда ввожу текст, то у меня не вводится больше где-то 10, не идет дальше

Потому что надо добавить стиль ES_AUTOHSCROLL, тогда текст будет сдвигаться если не помещается.
CODE:
#define WS_CHILD 1073741824
#define WS_VISIBLE 268435456
#define WS_BORDER 8388608
#define EM_LIMITTEXT 197
#define ES_AUTOHSCROLL 128

external(INT, "CreateWindow", "CreateWindowExA", "User32.dll" );

int edit1;
createdialog(0);
showdialog(0, "Диалог",100, 100, 300, 300, 1, 1);

loop()sleep(1);

function getmessage(0, WM_CREATE)
{
edit1=CreateWindow(0, "EDIT", "", WS_CHILD | WS_VISIBLE | WS_BORDER | ES_AUTOHSCROLL, 10, 20, 100, 20, gethwnd(0), 0, 0, 0);
sendmessage(EM_LIMITTEXT, 20, 0, formatiw(edit1)); // ограничение количества вводимых символов, 2й параметр, 20 символов
}
 
 Top
Страниц (22): [1] 2 3 4 5 6 7 8 9 » В конец
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« Вопросы и решение проблем »


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




Powered by