Zireael |
Отправлено: 15 Декабря, 2020 - 10:46:07
|
Эксперт
Покинул форум
Сообщений всего: 4461
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: getcursor - Определение типа курсора.
тут пара вопросов. Нет нигде читабельного описания этой функции. В описании на сайте, термины которые вообще далеко от понимания.
Какие термины? Идентификатор это просто число, узнать можно в шпионе. Он меняется при перезапуске приложения.
CODE:win w = window (-1, "MozillaWindowClass", -1); // указатель на окно
if (w) // если окно найдено
{
attach(w, 1); // присоединить
loop() // цикл
{
int h_cursor=getcursor(); // получить идентификатор курсора
if (h_cursor==65567) // если он равен 65567
{
// выполнить эту часть кода
textout(0, 0, 0, "Курсор в виде руки", 1);
}
if (h_cursor==65539) // если он равен 65539
{
// выполнить эту часть кода
textout(0, 0, 0, "Обычный курсор", 1);
}
sleep(100);
}
}
else messagebox("Окно не найдено"); |
|
|
Zireael |
Отправлено: 16 Декабря, 2020 - 01:01:47
|
Эксперт
Покинул форум
Сообщений всего: 4461
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: каким образом будет работать ехе вариант скрипта? ответ-ни каким.
Запуск с exe ничем не отличается от запуска с редактора.
Цитата: Или мне надо значение курсора каждый раз самостоятельно узнавать в шпионе?
Его точно также можно получить в скрипте. |
|
|
Zireael |
Отправлено: 16 Декабря, 2020 - 03:37:42
|
Эксперт
Покинул форум
Сообщений всего: 4461
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: одновременно найти следующие 2 картинки
Поочереди.
Цитата: и одновременное оооочень быстрое реагирование на изменения любой из них.
Даже при поиске их не одновременно это быстрее, чем среагирует человек. |
|
|
Zireael |
Отправлено: 17 Декабря, 2020 - 02:15:39
|
Эксперт
Покинул форум
Сообщений всего: 4461
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: Обязательно ли присоединять окно при каждом опросе?
Нет, после блока Старт блок кода, в нём присоединить.
Цитата: возможно далее по скрипту делать еще один опрос идентификатора и присваивать ему другую переменную, и уже их сравнивать?
Так и надо сделать. Можно и без переменной.
CODE:int h_cursor=getcursor(); // это после блока Старт
if (h_cursor==getcursor()) // в нужном месте скрипта сравнить |
|
|
Zireael |
Отправлено: 19 Декабря, 2020 - 12:31:41
|
Эксперт
Покинул форум
Сообщений всего: 4461
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: Возможно ли сделать так чтоб при изменении цены например, прямоугольник с цифрами выделялся на определенное время цветом, при снижении допустим розовым (прозрачным) при повышении зеленым (прозрачным).
code (Отобразить)CODE:#define WS_EX_LAYERED 524288
#define PS_SOLID 0
#define LWA_ALPHA 2
#define GWL_EXSTYLE -20
#define GWL_STYLE -16
external(INT, "SetLayeredWindowAttributes", "SetLayeredWindowAttributes", "User32.dll" );
external(INT, "SetWindowLong", "SetWindowLongA", "User32.dll" );
external(INT, "GetDC", "GetDC", "User32.dll");
external(INT, "Rectangle", "Rectangle", "Gdi32.dll");
external(INT, "CreatePen", "CreatePen", "Gdi32.dll");
external(INT, "SelectObject", "SelectObject", "Gdi32.dll");
external(INT, "CreateSolidBrush", "CreateSolidBrush", "Gdi32.dll");
int color1=65280; // цвет1
int color2=255; // цвет2
int trasp=127; // прозрачность от 0 до 255
int coord[4]={100, 100, 400, 300} // координаты прямоугольника
int HDC, startX, startY, endX, endY, pen1, pen2, brush1, brush2;
int h_window;
int flag=0;
createdialog(2);
// скрипт
loop()
{
textbkcolor(rgb(0, 255, 0), 0);
textout (0, 0, 0, "Escape - скрыть прямоугольник", 0);
textout (1, 0, 20, "Z - изменить цвет", 0);
if (getkeystate(90)) // если нажата клавиша Z
{
while (getkeystate(90))sleep(10); // ждать когда будет отжата клавиша Z
showdialog(2, "Диалог", coord[0], coord[1], coord[2] - coord[0], coord[3] - coord[1], 1, 1);
if (flag==0)flag=1;
else flag=0;
update(formatiw(h_window));
}
if (getkeystate(27)) // если нажата Esc
{
while (getkeystate(27))sleep(10);
hidedialog(2); // скрыть диалог
}
sleep(10);
}
function getmessage(2, WM_CREATE)
{
h_window = gethwnd(2);
SetWindowLong(h_window, GWL_EXSTYLE, WS_EX_LAYERED);
SetWindowLong(h_window, GWL_STYLE, 0);
SetLayeredWindowAttributes(h_window, 0, 127, LWA_ALPHA);
HDC=GetDC(h_window);
pen1 = CreatePen(PS_SOLID, 1, color1);
pen2 = CreatePen(PS_SOLID, 1, color2);
brush1 = CreateSolidBrush(color1);
brush2 = CreateSolidBrush(color2);
showdialog(2, "Диалог", coord[0], coord[1], coord[2] - coord[0], coord[3] - coord[1], 1, 1);
}
function getmessage(2, WM_PAINT)
{
if (flag==0) // если флаг равен 0
{
SelectObject(HDC, pen1); // выбрать ручку
SelectObject(HDC, brush1); // выбрать кисть
Rectangle(HDC, 0, 0, coord[2] - coord[0], coord[3] - coord[1]); // нарисовать прямоугольник
}
if (flag==1) // если флаг равен 1
{
SelectObject(HDC, pen2); // выбрать ручку
SelectObject(HDC, brush2); // выбрать кисть
Rectangle(HDC, 0, 0, coord[2] - coord[0], coord[3] - coord[1]); // нарисовать прямоугольник
}
}
Цитата: как сделать на экране игры(допустим) , появление надписи над или под искомым изображением
textout. |
|
|
|