007wan |
Отправлено: 03 Июня, 2019 - 10:34:38
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
Раньше такой ошибки не было. Ошибка заключается в следующем: запускается диалог(стоит 4 парам) и есть WM_CLOSE0- диалог. Жму крестик: Окно исчезает и появляется, опять повторяю раза 3-4 и программа вылетает.
WM_CLOSE (Отобразить)CODE:function getmessage(0, WM_CLOSE)
{
//EndTask(formatwi(MainWindow), 0, 1);
Stop_Script();
destroydialog(0);//для эффектного исчезания окна
close();
}
Stop_Script (Отобразить)CODE:function Stop_Script(string Message)
{
GetWindowText(Object_Button1, address(#Text_Button1[0]), sizearray(Text_Button1));
GetWindowText(Object_Button2, address(#Text_Button2[0]), sizearray(Text_Button2));
if(format(#Text_Button1[0]) == "Остановить")
{
if (Message != "" || Message != "0")
{
Add_Log(Message, 1, 1);
}
SetWindowTextA(Object_Button1, "Запустить");
EnableWindow(Object_Button2, 0);
Setting_Game = 0;
transparency(100, Browser);
if(format(#Text_Button2[0]) == "Отключить визуальное окно")
{
SetWindowTextA(Object_Button2, "Получить изображение из игры");
disablevisualwindow(0);
resettextout(1);
}
}
disabletimer(2);
goto global Interrupt_Timer;
}
(Добавление)
Ошибка:
Цитата: Сигнатура проблемы:
Имя события проблемы: APPCRASH
Имя приложения: Kibor.exe
Версия приложения: 5.2.7.0
Отметка времени приложения: 5cf419e2
Имя модуля с ошибкой: StackHash_882c
Версия модуля с ошибкой: 0.0.0.0
Отметка времени модуля с ошибкой: 00000000
Код исключения: c0000005
Смещение исключения: 00000037
Версия ОС: 6.1.7601.2.1.0.256.1
Код языка: 1049
Дополнительные сведения 1: 882c
Дополнительные сведения 2: 882c599231b483f8fdd9418d72c3a64d
Дополнительные сведения 3: 385e
Дополнительные сведения 4: 385e3d10137598c70ce2d9fe099bd2c7
Ознакомьтесь с заявлением о конфиденциальности в Интернете:
(для просмотра ссылки Вам необходимо авторизоваться)
Если заявление о конфиденциальности в Интернете недоступно, ознакомьтесь с его локальным вариантом:
C:\Windows\system32\ru-RU\erofflps.txt
|
|
|
Zireael |
Отправлено: 03 Июня, 2019 - 10:45:30
|
Эксперт
Покинул форум
Сообщений всего: 4461
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: Окно исчезает и появляется
До этих строк:
Цитата: destroydialog(0);//для эффектного исчезания окна
close();
даже не дойдёт, т. к. сначала будет переход в функцию Stop_Script(), из которой переход к метке goto global Interrupt_Timer.
Цитата: программа вылетает
Включить отладку и посмотреть на какой строке вылет. |
|
|
007wan |
Отправлено: 03 Июня, 2019 - 10:49:29
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
Zireael , Ай, спасибо.
Тогда добавил переменную Timer, что бы вызывать функцию без или с переходом на глобальную меткуStop_Script (Отобразить)CODE:function Stop_Script(string Message, int Timer)
{
GetWindowText(Object_Button1, address(#Text_Button1[0]), sizearray(Text_Button1));
GetWindowText(Object_Button2, address(#Text_Button2[0]), sizearray(Text_Button2));
if(format(#Text_Button1[0]) == "Остановить")
{
if (Message != "0")
{
Add_Log(Message, 1, 1);
}
SetWindowTextA(Object_Button1, "Запустить");
EnableWindow(Object_Button2, 0);
Setting_Game = 0;
transparency(100, Browser);
if(format(#Text_Button2[0]) == "Отключить визуальное окно")
{
SetWindowTextA(Object_Button2, "Получить изображение из игры");
disablevisualwindow(0);
resettextout(1);
}
}
disabletimer(2);
if (Timer != 0)
{
goto global Interrupt_Timer;
}
} Вызывать теперь буду таким образом: Цитата: Stop_Script(0, 0)
(Добавление)
Kibor пишет: Почему не запустите отладчик и не найдете строку из за которой ошибка? Честно говоря мне он не удобен. Строки быстро летят и я запутываюсь сильно, даже ограничение в паузе тоже не помогает, т.к замедляется сам диалог и даже бывает кнопку не нажать, а когда ускоряю время, то от диалога нужно долго отклика ждать. Я не привык к такому, оба окна мешаются бывает нужно одновременно оба, а когда смотришь в отладку, то не понимаешь, т.к диалог сделал меньше, да и цифры летят быстро. Порой кажется, что тут чего-то не хватает в удобстве, но не знаю чего именно, хотя всё работает как нужно. Да и таймеры, loop мешаются, из-за них не успевает найти нужную строчку, даже в паузой запутываешься. Всё как-то монотонно. |
|
|
Kibor |
Отправлено: 03 Июня, 2019 - 10:59:56
|
Эксперт
Просматривает форум
Сообщений всего: 8217
Дата рег-ции: Март 2013
Откуда: Одесса
Репутация: 357
|
007wan пишет: Честно говоря мне он не удобен. Строки быстро летят и я запутываюсь сильно, даже ограничение в паузе тоже не помогает, т.к замедляется сам диалог и даже бывает кнопку не нажать, а когда ускоряю время, то от диалога нужно долго отклика ждать. Я не привык к такому, оба окна мешаются бывает нужно одновременно оба, а когда смотришь в отладку, то не понимаешь, т.к диалог сделал меньше, да и цифры летят быстро. Порой кажется, что тут чего-то не хватает в удобстве, но не знаю чего именно, хотя всё работает как нужно. Да и таймеры, loop мешаются, из-за них не успевает найти нужную строчку, даже в паузой запутываешься. Всё как-то монотонно.
Там с головой хватает что бы разобраться где вылетела программа.
Естественно строки летят. Они показывают ход программы.
Вам не надо строки читать. Надо запустить отладчик, отключить вывод в реальном времени и свернуть его. После вылета кибор в отладчике последняя строка которая к вылету привела. |
|
|
Zireael |
Отправлено: 12 Июля, 2019 - 01:58:39
|
Эксперт
Покинул форум
Сообщений всего: 4461
Дата рег-ции: Нояб. 2017
Репутация: 585
|
CODE:#define WS_CHILD 1073741824
#define WS_VISIBLE 268435456
#define WS_BORDER 8388608
#define LBS_NOTIFY 1
external(INT, "CreateWindow", "CreateWindowExA", "User32.dll" );
int list;
createdialog(0);
showdialog(0, "Диалог",300, 300, 300, 300, 4, 1);
loop()sleep(10);
function getmessage(0, WM_COMMAND)
{
messagebox("Событие");
}
function getmessage(0, WM_CLOSE)
{
messagebox("Закрыть");
}
function getmessage(0, WM_CREATE)
{
list=CreateWindow(0, "LISTBOX", "", LBS_NOTIFY | WS_BORDER | WS_CHILD | WS_VISIBLE, 10, 10, 150, 250, gethwnd(0), 0, 0, 0);
}
Запустить код, нажать на список. Сообщение "Событие" появится 2 раза, вместо 1. После пробуем закрыть диалог крестиком, WM_CLOSE не вызовется. |
|
|
|