Есть полноценно работающий скрипт бота. Появилась необходимость вставить в него, в определенном месте, запуск стороннего файла, в графической оболочке которого, надо нажать некоторые кнопки, чтоб он выполнил необходимую задачу в нужное время при появлении тригерного изображения.
Проблема в том, что, когда произвожу его запуск, функции, которые должны выполнять разного рода действия, не видят окно с программой вызываемой этим файлом. Ведь как я понимаю, надо создать еще одну переменную, аналогичную W_kib и назначить ей значение конрола, с которым будет происходить работа. Методом тыка, перепробовал все! И запускал процесс, в его свойствах прописывал, что указатель на контрол будет записываться в переменную W_kib1 (параллельно с W_kib, в которой указатель на основное окно для работы скрипта) и, соответственно в блоках кодах, вместо W_kib прописывал W_kib1... Ну и подобные, всякие манипуляции, которые, как мне кажется, являются кандидатами на решение. К сожалению, у меня нет достаточного количества знаний программирования, чтоб интуитивно понять механизм проблемы, приходится тыркаться, как слепой котенок.
Объясните пожалуйста, как реализовать данную задачу.
1. Fen - 05 Октября, 2024 - 11:52:10 - перейти к сообщению
2. Kibor - 08 Октября, 2024 - 12:56:38 - перейти к сообщению
Мало указать другую переменную. Надо в нее получить указатель на окно.
Опишите полностью действия и что за окно.
Опишите полностью действия и что за окно.
3. Fen - 13 Октября, 2024 - 15:02:02 - перейти к сообщению
Да вот, мне бы, как раз и хотелось узнать последовательность действий для реализации того, что я описал. Ну если быть точнее, то: выполняется последовательность блоков в визуальном редакторе и, предположим выскакивает капча, которая определившись функцией FindImage, запускает процесс виндовс (тут мне тоже не совсем понятно, что прописывать в свойствах функции StartProcess). Он имеет графическую оболочку, в которой надо нажать некоторые кнопки. Или конкретно написать название программы и как ее видит Кибор? Весь остальной код выполняется в режиме "Фоновый по указателю" и работает с эмулятором LDPlayer.
4. Kibor - 26 Ноября, 2024 - 01:37:47 - перейти к сообщению
Использовал ChatGPT.
Скормил ему вопрос с шапки темы, попросив написать код для Кибор.
Немного напутал, добавил функцию которой нет, перепутал тип переменной, переменой и код конечно можно получше сделать, но смысл в принципе похож..
Отправил в ChatGPT
Получил ответ
Скормил ему вопрос с шапки темы, попросив написать код для Кибор.
Немного напутал, добавил функцию которой нет, перепутал тип переменной, переменой и код конечно можно получше сделать, но смысл в принципе похож..
Отправил в ChatGPT
CODE:
Есть полноценно работающий скрипт бота. Появилась необходимость вставить в него, в определенном месте, запуск стороннего файла, в графической оболочке которого, надо нажать некоторые кнопки, чтоб он выполнил необходимую задачу в нужное время при появлении тригерного изображения.
Проблема в том, что, когда произвожу его запуск, функции, которые должны выполнять разного рода действия, не видят окно с программой вызываемой этим файлом. Ведь как я понимаю, надо создать еще одну переменную, аналогичную W_kib и назначить ей значение конрола, с которым будет происходить работа. Методом тыка, перепробовал все! И запускал процесс, в его свойствах прописывал, что указатель на контрол будет записываться в переменную W_kib1 (параллельно с W_kib, в которой указатель на основное окно для работы скрипта) и, соответственно в блоках кодах, вместо W_kib прописывал W_kib1... Ну и подобные, всякие манипуляции, которые, как мне кажется, являются кандидатами на решение. К сожалению, у меня нет достаточного количества знаний программирования, чтоб интуитивно понять механизм проблемы, приходится тыркаться, как слепой котенок.
Объясните пожалуйста, как реализовать данную задачу.
напиши код для Кибор
Проблема в том, что, когда произвожу его запуск, функции, которые должны выполнять разного рода действия, не видят окно с программой вызываемой этим файлом. Ведь как я понимаю, надо создать еще одну переменную, аналогичную W_kib и назначить ей значение конрола, с которым будет происходить работа. Методом тыка, перепробовал все! И запускал процесс, в его свойствах прописывал, что указатель на контрол будет записываться в переменную W_kib1 (параллельно с W_kib, в которой указатель на основное окно для работы скрипта) и, соответственно в блоках кодах, вместо W_kib прописывал W_kib1... Ну и подобные, всякие манипуляции, которые, как мне кажется, являются кандидатами на решение. К сожалению, у меня нет достаточного количества знаний программирования, чтоб интуитивно понять механизм проблемы, приходится тыркаться, как слепой котенок.
Объясните пожалуйста, как реализовать данную задачу.
напиши код для Кибор
Получил ответ
CODE:
Вот пример кода для Кибор (Cybor) с описанием шагов, который выполняет запуск стороннего приложения, ожидает появления окна, а затем переключается на него для выполнения действий:
// Основной код
int W_kib = window("Название основного окна", "Класс основного окна", -1); // Основное окно игры
if (W_kib == 0)
{
messagebox("Основное окно не найдено!");
end();
}
// Запуск стороннего приложения
int W_external = run("C:\\Путь\\к\\программе.exe", ""); // Указываем путь к программе
if (W_external < 0)
{
messagebox("Не удалось запустить стороннюю программу!");
end();
}
// Ожидание появления окна программы
int timeout = 10000; // Максимальное время ожидания (в мс)
int elapsed = 0;
while (elapsed < timeout)
{
W_external = window("Название окна программы", "Класс окна программы", -1);
if (W_external != 0)
{
break; // Если окно найдено, выходим из цикла
}
sleep(500); // Задержка перед следующим поиском
elapsed += 500;
}
if (W_external == 0)
{
messagebox("Окно программы не найдено!");
end();
}
// Переключение на стороннюю программу
activate(W_external);
sleep(1000); // Небольшая задержка для стабильности
// Выполнение действий в окне программы
key(TAB); // Например, переключение между элементами
sleep(200);
key(ENTER); // Подтверждение
sleep(200);
// Возвращение к основному окну
activate(W_kib);
sleep(1000); // Небольшая задержка для стабильности
Пояснение:
Получение идентификатора окна:
Используется window("Название окна", "Класс окна", -1), чтобы получить дескриптор окна.
Вместо "Название окна" и "Класс окна" нужно указать конкретные данные окна программы. Узнать их можно, наведя курсор на окно и нажав комбинацию CTRL + SHIFT + S (если поддерживается Кибор).
Запуск стороннего приложения:
Команда run() запускает программу по указанному пути.
Если запуск не удался, возвращается отрицательное значение, и об этом сообщается.
Ожидание появления окна:
Программа ждет, пока появится окно стороннего приложения, с помощью цикла while.
Активное взаимодействие:
После активации окна (activate(W_external)), действия выполняются с помощью функций, например, key() для эмуляции нажатий клавиш или mousemove()/mouse() для эмуляции действий мыши.
Возврат в основное окно:
По завершении работы со сторонним приложением переключаемся обратно на основное окно игры с помощью activate(W_kib).
Дополнительные рекомендации:
Проверьте, что идентификаторы окон уникальны. Если окна программы имеют одинаковые названия, используйте их классы или другие отличительные признаки.
Если необходимо обрабатывать сразу несколько окон, создавайте для каждого свою переменную дескриптора и переключайтесь между ними.
Если будут вопросы по доработке, уточняйте детали, и я помогу!
// Основной код
int W_kib = window("Название основного окна", "Класс основного окна", -1); // Основное окно игры
if (W_kib == 0)
{
messagebox("Основное окно не найдено!");
end();
}
// Запуск стороннего приложения
int W_external = run("C:\\Путь\\к\\программе.exe", ""); // Указываем путь к программе
if (W_external < 0)
{
messagebox("Не удалось запустить стороннюю программу!");
end();
}
// Ожидание появления окна программы
int timeout = 10000; // Максимальное время ожидания (в мс)
int elapsed = 0;
while (elapsed < timeout)
{
W_external = window("Название окна программы", "Класс окна программы", -1);
if (W_external != 0)
{
break; // Если окно найдено, выходим из цикла
}
sleep(500); // Задержка перед следующим поиском
elapsed += 500;
}
if (W_external == 0)
{
messagebox("Окно программы не найдено!");
end();
}
// Переключение на стороннюю программу
activate(W_external);
sleep(1000); // Небольшая задержка для стабильности
// Выполнение действий в окне программы
key(TAB); // Например, переключение между элементами
sleep(200);
key(ENTER); // Подтверждение
sleep(200);
// Возвращение к основному окну
activate(W_kib);
sleep(1000); // Небольшая задержка для стабильности
Пояснение:
Получение идентификатора окна:
Используется window("Название окна", "Класс окна", -1), чтобы получить дескриптор окна.
Вместо "Название окна" и "Класс окна" нужно указать конкретные данные окна программы. Узнать их можно, наведя курсор на окно и нажав комбинацию CTRL + SHIFT + S (если поддерживается Кибор).
Запуск стороннего приложения:
Команда run() запускает программу по указанному пути.
Если запуск не удался, возвращается отрицательное значение, и об этом сообщается.
Ожидание появления окна:
Программа ждет, пока появится окно стороннего приложения, с помощью цикла while.
Активное взаимодействие:
После активации окна (activate(W_external)), действия выполняются с помощью функций, например, key() для эмуляции нажатий клавиш или mousemove()/mouse() для эмуляции действий мыши.
Возврат в основное окно:
По завершении работы со сторонним приложением переключаемся обратно на основное окно игры с помощью activate(W_kib).
Дополнительные рекомендации:
Проверьте, что идентификаторы окон уникальны. Если окна программы имеют одинаковые названия, используйте их классы или другие отличительные признаки.
Если необходимо обрабатывать сразу несколько окон, создавайте для каждого свою переменную дескриптора и переключайтесь между ними.
Если будут вопросы по доработке, уточняйте детали, и я помогу!
5. Zireael - 26 Ноября, 2024 - 02:22:27 - перейти к сообщению
Цитата:
Использовал ChatGPT.
Для того кто не знает синтаксис кибор или хоть какой-то язык программирования полученный код это китайская грамота. Исправить ошибки не смогут.
Для того кто знает это не актуально.
6. Kibor - 26 Ноября, 2024 - 02:26:17 - перейти к сообщению
Zireael пишет:
Для того кто не знает синтаксис кибор или хоть какой-то язык программирования полученный код это китайская грамота. Исправить ошибки не смогут.
Для того кто знает это не актуально.
Для того кто знает это не актуально.
Тут 4 ошибки
int W_kib
elapsed += 500;
"C:\\Путь\\к\\программе.exe"
end();
Остальное верно. И логично в принципе и с пояснениями. Думаю полезно.
7. konctantin777 - 08 Декабря, 2024 - 12:44:47 - перейти к сообщению
Kibor пишет:
Как пользоваться чатом правильно для реальной пользы
Пишет, что тема не существует..