007wan |
Отправлено: 02 Мая, 2019 - 09:21:16
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
Перенесено из темы "Версия 2.07 Отправка сообщений мыши в неактивные и свернутые окна. Работа мыши в фоновом режиме" Zireael , В чем ошибка? Часть кода (Отобразить)CODE:
char Time[100];
char Date[100];
int Year, Month, DayOfWeek, Day, Hour, Minute, Second, Milliseconds;
loop()
{
getlocaltime(Year, Month, DayOfWeek, Day, Hour, Minute, Second, Milliseconds);
Strftime(address(#Time[0]), sizearray(Time), "[%X] - ", Hour, Minute, Second, Day, Month, Year);
Strftime(address(#Date[0]), sizearray(Date), "*%d.%m.%y*", Hour, Minute, Second, Day, Month, Year);
}
function Log(string s)
{
int count;
int Size[2];
new char c[size(s)+1];
strcpy(#c[0], s);
GetTextExtentPoint32(DC_Listbox1, address(#c[0]), sizearray(c), address(#Size[0]));
if(Listbox1_TextLength < Size[0])
{
Listbox1_TextLength = Size[0];
sendmessage(LB_SETHORIZONTALEXTENT, Size[0], 0, formatiw(Object_Listbox1));
}
sendmessage(LB_ADDSTRING, 0, address(#c[0]), formatiw(Object_Listbox1));
count = sendmessage(LB_GETCOUNT, 0, 0, formatiw(Object_Listbox1));
if(format(#Load_Checkbox2[0]) == "1")
{
sendmessage(LB_SETTOPINDEX, count-1, 0, formatiw(Object_Listbox1));
}
//SendMessage(Object_Listbox1, LB_GETTEXT, count-1, address(#Text_Listbox1[0]));
//WritePrivateProfileString ("Default"+format(count), "Object_Listbox1", format(#Text_Listbox1[0]), temp_fold+"Log.txt");
delete c;
}
CREATE_TIMER(2, 1000)
{
Game = window (-1, "GeckoFPSandboxChildWindow", window ("моеокно", "MozillaWindowClass", -1));
if (Game != 0)
{
if(SettingGame == 0)
{
Log(format(#Time[0])+"Идет настройка бота...");
if(findimage(1, #Image_0[0][0], -1, #Image_x[0], #Image_y[0], 0, 0, Game.widthclient, Game.heightclient, Game) > 0)
{
Log(format(#Time[0])+"Обнаружена Image_0.bmp в координатах "+format(Image_x[0])+", "+format(Image_y[0]));
if(format(#Load_Checkbox1[0]) == "1")
{
}
else
{
mouse(LEFT, Image_x[0], Image_y[0], 1, Game);
mouse(LEFT, Image_x[0], Image_y[0], 1, Game);
mouse(LEFT, Image_x[0], Image_y[0], 1, Game);
sleep(500);
Log(format(#Time[0])+"Ищу точку отсчета.");
mousetransfer(LEFT, 200, 100, 845, 450, 0.02, 1, Game);
mousetransfer(LEFT, 200, 100, 845, 450, 0.02, 1, Game);
mousetransfer(LEFT, 200, 100, 845, 450, 0.02, 1, Game);
mousetransfer(LEFT, 200, 100, 845, 450, 0.02, 1, Game);
mousetransfer(LEFT, 200, 100, 845, 450, 0.02, 1, Game);
mousetransfer(LEFT, 573, 454, 194, 133, 0.02, 1, Game);
mousetransfer(LEFT, 701, 198, 333, 459, 0.02, 1, Game);
mousetransfer(LEFT, 819, 535, 342, 273, 0.02, 1, Game);
mousetransfer(LEFT, 943, 610, 443, 351, 0.02, 1, Game);
}
SettingGame = 1;
Log(format(#Time[0])+"Бот настроен.");
}
else
{
StopScript("Не удается найти Image_0.bmp");
}
}
}
else
{
StopScript("Ошибка в работе. Окно игры не найдено.");
}
}
(Добавление)
Zireael , Заострю внимание на этом куске кода:
CODE:
Log(format(#Time[0])+"1");//изменю 1
mousetransfer(LEFT, 200, 100, 845, 450, 0.02, 1, Game);//3
mousetransfer(LEFT, 200, 100, 845, 450, 0.02, 1, Game);//4
mousetransfer(LEFT, 200, 100, 845, 450, 0.02, 1, Game);//5
mousetransfer(LEFT, 200, 100, 845, 450, 0.02, 1, Game);//6
mousetransfer(LEFT, 200, 100, 845, 450, 0.02, 1, Game);//7
mousetransfer(LEFT, 573, 454, 194, 133, 0.02, 1, Game);//8
mousetransfer(LEFT, 701, 198, 333, 459, 0.02, 1, Game);//9
mousetransfer(LEFT, 819, 535, 342, 273, 0.02, 1, Game);//10
mousetransfer(LEFT, 943, 610, 443, 351, 0.02, 1, Game);//11
Log(format(#Time[0])+"2");//добавлю еще текст 2
//где 1 и 2 сразу выполняются, но врем их совершенно одинаковое
Проблема в том, что код выполняет последовательно, но по скорости получается другое. я пронумеровал .
В лог записывает:
Цитата:
время+текст1
тоже самое время+текст2
(Добавление)
Но время-то находится в loop
(Добавление)
Отсюда и вывод: если использовать функции send- и mouse в таймере между функциями( в данном случаи Log), то время будет оставаться практически одинаковым(Отредактировано автором: 02 Мая, 2019 - 09:22:19) |
|
|
Zireael |
Отправлено: 02 Мая, 2019 - 09:42:25
|
Эксперт
Покинул форум
Сообщений всего: 4465
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Перенесено из темы "Версия 2.07 Отправка сообщений мыши в неактивные и свернутые окна. Работа мыши в фоновом режиме" Какое отношение эти вопросы имеют к названию темы?
Цитата: В чем ошибка?
Вот это ошибка:
Цитата: Но время-то находится в loop
Сначала надо узнать время, а потом выводить его в лог.
Цитата: getlocaltime(Year, Month, DayOfWeek, Day, Hour, Minute, Second, Milliseconds); // получить дату и время
Strftime(address(#Time[0]), sizearray(Time), "[%X] - ", Hour, Minute, Second, Day, Month, Year);
Log(format(#Time[0])+"1" );
// тут какой-то код
getlocaltime(Year, Month, DayOfWeek, Day, Hour, Minute, Second, Milliseconds); // снова получить дату и время
Strftime(address(#Time[0]), sizearray(Time), "[%X] - ", Hour, Minute, Second, Day, Month, Year);
Log(format(#Time[0])+"2" ); |
|
|
Zireael |
Отправлено: 17 Мая, 2019 - 12:22:33
|
Эксперт
Покинул форум
Сообщений всего: 4465
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: ждать, пока запустится
CODE:win w;
createdialog(0);
showdialog(0, "Диалог",100, 100, 300, 300, 1, 1);
while(window("Диалог")==0)sleep(10); // ждать когда повявится окно 'Диалог'
w=window("Диалог");
messagebox(w.name); |
|
|
Kibor |
Отправлено: 17 Мая, 2019 - 12:36:04
|
Эксперт
Просматривает форум
Сообщений всего: 8218
Дата рег-ции: Март 2013
Откуда: Одесса
Репутация: 357
|
007wan ,
Так сейчас надо получать указатель при создание диалога.
CODE:win w;
createdialog(0);
//////////
showdialog(0, "Диалог", 58, 234, 250, 300, 1, 1);
//////////
setwindowparam(w);//Обновляет информацию в структуре win по указателю win после открытия окна
messagebox (w.name);
loop() sleep(10);//Убрать после теста
function getmessage(0, WM_CREATE)
{
w=formatiw(gethwnd(0));//узнаем указатель по HWND
}
|
|
|
|