Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> блокировка сообщения системы (перенаправление выво 
:(
    Опции темы
Kim
Дата 27.10.2005, 09:00 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Народ, подсобите плиз кто чем может... запарился уже...
В общем, есть такая ситуевинка. Имеется мой проект (на дельфи), который принимает исходники других проектов (не важно, каким образом принимает). Например, эти проекты тоже писаны на дельфи. Присылаемые проекты (будем называть их ПП) компилируются и запускаются. Важное условие: исходники ПП не должны меняться! Они запускаются так, как есть... При запуске юзается функция CreateProcess. Но там (в ПП) может быть что угодно. И бывает, что они вылетают с run-time error'ом. В этом случае появляется радостное окошко от "умной" винды о том, что "приложение выполнило ... и должно быть закрыто". А вот этого-то как раз и не надо. Потому как пока руками не будет нажата кнопка Terminate на сообщении процесс ПП не может быть закрыт даже TerminateProcess. А надо, чтобы проект работал корректно... Перенаправление вывода ничего не дает... все равно вываливается это окошко smile
Просьба предложить решение, где не пришлось бы программно искать окошко этого сообщения и программно же нажимать кнопочку... хотелось бы корректное решение...
//вынь 2к3 (в идеале - должно работать на любой выне)
//дельфи7

  Вверх
_hunter
Дата 27.10.2005, 11:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 9
Всего: 98



полностью отключи уведомление об ошибках и программа будет спокойно умирать...


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Kim
Дата 27.10.2005, 12:50 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











какие это опции компилятора?
  Вверх
_hunter
Дата 27.10.2005, 13:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 9
Всего: 98



это опции системы smile


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Kim
Дата 27.10.2005, 14:29 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











смешно... а какие именно?.. ты не мог бы не давать столь туманных объяснений?..
какую конкретно службу необходимо завалить?
  Вверх
_hunter
Дата 27.10.2005, 14:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 9
Всего: 98



ну, батенька, свою систему ( на уровне трех кликов мышой ) надо бы знать...

System Properties->Advanced->Error Reporting


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Kim
Дата 27.10.2005, 15:13 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Знаешь... фишка вот в чем... отключил эту опцию... а дальше откомпилил и запустил следующий код:
{$APPTYPE CONSOLE}
var
f, g: text;
a, b: longint;
x: real;
begin
a:=1;
b:=0;
x:=a/b;
x:=x;
writeln(x);
end.

и у меня опять вылезла эта фигня... smile
  Вверх
_hunter
Дата 27.10.2005, 15:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 9
Всего: 98



тогда DEBUG_PROCESS к dwCreationFlags добавь


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Kim
Дата 27.10.2005, 16:10 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











То есть мой процесс становится дебаггером этого нового процесса?
а как обрабатывать события? например, возникает это событие... как мне узнать, что именно ран-тайм эррор, а не просто повесилась прога?
если не сложно - пару строк кода...
  Вверх
_hunter
Дата 27.10.2005, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 9
Всего: 98



ого куда мы заехали... smile ( а как мило все начиналось... просто не видеть сообщения об ошибках... )
http://msdn.microsoft.com/library/default....s_main_loop.asp


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Kim
Дата 27.10.2005, 16:55 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











крута. Биг сенкс. Вот это реальная помощь... только остался один вопрос: у меня процессу выделяется не больше определенного интервала времени. И я вызываю WaitForSingleObject. Если он превышает интервал, то приложение снимается. Достаточно ли будет просто заменить эту функцию на WaitForDebugEvent?

и еще в догон: (чтоб понаглеть ;) ) Есть ли возможность ограничить ПП в ресурсах? например, не более определенного объема памяти, доступ - только к определенным к папкам и т.д...?
  Вверх
_hunter
Дата 27.10.2005, 17:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 9
Всего: 98



нет. потому как WaitForDebugEvent может как сработать несколько раз так и не сработать ни разу. так что лучше два потока стартануть ( оно и не особо накладно ).

для ограничения доступа можно использовать CreateProcessAsUser ( и, соответственно, создать пользователя с правом доступа только к определенным папкам )
а вот с объемом памяти все гараздо интереснее: как система должна себя вести при превышении лимита? просто не давать памяти? так программа завернется. самой закрывать? поэтому тут придется самому монитор писать ( еще оди поток, в котором раз в н секунд делаем снимок ( CreateToolhelp32Snapshot ) ) и закрывать программу по превышению лимита


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Darhazer
Дата 27.10.2005, 18:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 429
Регистрация: 28.9.2005
Где: HellCity (Sofia, Bulgaria)

Репутация: нет
Всего: 29



А почему не пользуете try...except

Код

var
f, g: text;
a, b: longint;
x: real;

begin

a:=1;
b:=0;
try
x:=a/b;
x:=x;
except
exit
end;

writeln(x);

end.


Это сообщение отредактировал(а) Darhazer - 27.10.2005, 18:08


--------------------
I'm a wheel, I'm a wheel, I can roll, I can feel
But you can't stop me turning
'Cause I'm the sun, I'm the sun, I can move, I can run
But you'll never stom me burning
PM MAIL WWW ICQ YIM   Вверх
Kim
Дата 27.10.2005, 18:20 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Нет, здесь логика работы очень жесткая: превысил ПП лимит времени (т.е. сработал WaitForSingleObject один раз), или вызван эксепшн (т.е. сработал WaitForDebugEvent один раз), или превышен лимит памяти - проект сразу должен быть завален...
И еще... WaitForSingleObject мне и нужен-то был для установления лимита времени. По идее то же самое умеет и WaitForDebugEvent... вот только передаст ли он управление при завершении процесса так же, как и WaitForSingleObject? Если да - то тогда просто тупо его заменить и все...
  Вверх
Kim
Дата 27.10.2005, 18:21 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Darhazer, потому, что это проверяющая система. Она смотрит, правильно ли ТЫ написал исходник ;)
  Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: WinAPI и системное программирование"
Snowybartram
MetalFanbems
PoseidonRrader
Riply

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • 99% ответов по WinAPI можно найти в MSDN Library, оставшиеся 1% здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.0771 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.