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

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

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

> Без описания
asterka
Отправлено: 27 Мая, 2023 - 22:57:37
Post Id



Пользователь
Прохожий


Покинул форум
Сообщений всего: 16
Дата рег-ции: Апр. 2023  
Репутация: 0




Привет. При использовании runpython он почему-то не хочет запускаться. Зависает на секунд восемь и вылетает. Я пробовал заново скачивать Kibor, отключал антивирус и запускать Kibor от имени администратора. Не помогает. Использую Windows 11 Pro. В чём может быть проблема?


Как проверяю запуск (Отобразить)
 
 Top
Kibor
Отправлено: 28 Мая, 2023 - 10:18:33
Post Id



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


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




Запустите питон сам по себе. Возможно нет нужных dll
 
 Top
Zireael
Отправлено: 28 Мая, 2023 - 20:28:44
Post Id



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


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




Этот код выполнится?
Код запускает интерпретатор, передает такой код:
CODE:
x = 123
y = 40
print(x+y)

и получает ответ 163.
CODE:
#define STARTF_USESHOWWINDOW 1
#define STARTF_USESTDHANDLES 256
#define SW_HIDE 0
#define INFINITE -1
#define NULL 0
external(INT, "CreatePipe", "CreatePipe", "kernel32.dll");
external(VOID, "GetStartupInfo", "GetStartupInfoA", "kernel32.dll");
external(INT, "CreateProcess", "CreateProcessA", "kernel32.dll");
external(INT, "PeekNamedPipe", "PeekNamedPipe", "kernel32.dll");
external(INT, "ReadFile", "ReadFile", "kernel32.dll");
external(INT, "WriteFile", "WriteFile", "kernel32.dll");
external(INT, "TerminateProcess", "TerminateProcess", "kernel32.dll");
external(INT, "WaitForSingleObject", "WaitForSingleObject", "kernel32.dll");
external(INT, "CloseHandle", "CloseHandle", "kernel32.dll");

string path_python=pathfolder()+"python\python.exe -i";
int hReadPipe1, hWritePipe1, hReadPipe2, hWritePipe2;
char pi[16];
char W_buff[10000];
string Rez;

int readed;
int PythonbytesAvail;
int lBytesWrite;
string COMMAND;

if (StartPython())//Запустить интерпретатор python и наладить с ним связь PIPE
{
PythonbytesAvail=0;
while(PythonbytesAvail==0)
{
if (PeekNamedPipe(hReadPipe1, NULL, 0, NULL, address(#PythonbytesAvail), NULL)==0)
{
messagebox ("error 1");
goto er;
}
sleep(1);
}

messagebox ("0 прочитаем "+format(PythonbytesAvail));//Читать сколько байт

ReadFile(hReadPipe1, address(#W_buff[0]), PythonbytesAvail , address(#readed), 0);//Читаем
W_buff[PythonbytesAvail]=0;
messagebox (format(#W_buff[0]));//вывод ответа
////////////////////////////


//Отправляем команду
COMMAND="x = 123";
WriteFile(hWritePipe2,COMMAND+"^n", size(COMMAND+"^n"), address(#lBytesWrite), 0);
messagebox ("Отправили "+COMMAND);

//Отправляем команду
COMMAND="y = 40";
WriteFile(hWritePipe2,COMMAND+"^n", size(COMMAND+"^n"), address(#lBytesWrite), 0);
messagebox ("Отправили "+COMMAND);

//Отправляем команду
COMMAND="print(x+y)";
WriteFile(hWritePipe2,COMMAND+"^n", size(COMMAND+"^n"), address(#lBytesWrite), 0);
messagebox ("Отправили "+COMMAND);

PythonbytesAvail = 0;
while(PythonbytesAvail==0)
{
if (PeekNamedPipe(hReadPipe1, NULL, 0, NULL, address(#PythonbytesAvail), NULL)==0)
{
messagebox ("error 2");
goto er;
}
sleep(1);
}

messagebox ("1 прочитаем "+format(PythonbytesAvail));//Читать сколько байт
//Считываем ответ
ReadFile(hReadPipe1, address(#W_buff[0]), PythonbytesAvail , address(#readed), 0);//Читаем
W_buff[PythonbytesAvail]=0;
messagebox (format(#W_buff[0]));//вывод ответа
////////////////////////////


ClosePython();//Завершить работу с каналом и интерпретатором
}


er:;


function StartPython()
{
int ret;

//SECURITY_ATTRIBUTES
char sa[12];
initialarray(#sa[0], 0);
writeaddress(sizearray(sa), address(#sa[0]));
writeaddress(0, address(#sa[4]));
writeaddress(1, address(#sa[8]));

ret=CreatePipe(address(#hReadPipe1),address(#hWritePipe1),address(#sa[0]),0);
if (ret==0)return 0;
ret=CreatePipe(address(#hReadPipe2),address(#hWritePipe2),address(#sa[0]),0);
if (ret==0)return 0;

//STARTUPINFO
char si[68];
initialarray(#si[0], 0);
GetStartupInfo(address(#si[0]));
writeaddress(sizearray(si), address(#si[0]));
writeaddress(STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES, address(#si[44]));
writeaddress(SW_HIDE, address(#si[48]));
writeaddress(hReadPipe2, address(#si[56]));
writeaddress(hWritePipe1, address(#si[60]));
writeaddress(hWritePipe1, address(#si[64]));

//PROCESS_INFORMATION
initialarray(#pi[0], 0);
ret=CreateProcess(0,path_python,0,0,1,0,0,0,address(#si[0]),address(#pi[0]));
if (ret==0)return 0;

return 1;
}


function ClosePython()
{
TerminateProcess(addressi(address(#pi[0])), 0);
WaitForSingleObject(addressi(address(#pi[0])), INFINITE);
CloseHandle(addressi(address(#pi[0])));
CloseHandle(addressi(address(#pi[4])));
CloseHandle(hReadPipe1);
CloseHandle(hWritePipe1);
CloseHandle(hReadPipe2);
CloseHandle(hWritePipe2);
}
 
 Top
asterka
Отправлено: 28 Мая, 2023 - 22:14:29
Post Id



Пользователь
Прохожий


Покинул форум
Сообщений всего: 16
Дата рег-ции: Апр. 2023  
Репутация: 0




 Kibor пишет:
Запустите питон сам по себе. Возможно нет нужных dll

Установил питон. Попробовал запустить питон в кибор. Не запускается.

 Zireael пишет:
Этот код выполнится?

Запустил ваш код. Ничего не происходит. Никаких сообщений. Кибор не виснет, ctrl+shift+z работает.

У меня есть второй пк с Windows 10. Там всё хорошо работает. А тут почему-то никак.
 
 Top
Zireael
Отправлено: 28 Мая, 2023 - 22:24:20
Post Id



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


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




Включите отладку (галка под меню в кибор) и запустите скрипт. Какие строки выполняются?

Проблема в Win11, некоторые функции возможно были изменены/исправлены. При этом написать об изменениях видимо не посчитали нужным.

(Отредактировано автором: 28 Мая, 2023 - 22:24:47)

 
 Top
asterka
Отправлено: 29 Мая, 2023 - 07:35:28
Post Id



Пользователь
Прохожий


Покинул форум
Сообщений всего: 16
Дата рег-ции: Апр. 2023  
Репутация: 0




 Zireael пишет:
Включите отладку (галка под меню в кибор) и запустите скрипт.


Бесконечный повтор этой строчки:

CODE:
if ( PeekNamedPipe ( hReadPipe1 , NULL , 0 , NULL , address ( # PythonbytesAvail ) , NULL ) == 0 )
sleep ( 1 )


CODE: (Отобразить)
 
 Top
Zireael
Отправлено: 29 Мая, 2023 - 11:39:03
Post Id



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


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




Хотя бы понятно какая функция не работает. У меня нет win11, так что проверить не смогу что именно не работает. Это уже если Kibor разберётся и исправит.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« Вопросы и решение проблем »


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




Powered by