Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.05.2009, 23:01   #1
Veiron
Форумчанин
 
Аватар для Veiron
 
Регистрация: 01.12.2007
Сообщений: 346
По умолчанию Два неубиваемых exe'шника

Смысл в том, что в одной папке например есть два исполняемых файла a.exe и b.exe, с помощью автозагрузки они оба запускаются, и нужно сделать так, что бы каждый процесс a и b следили друг за другом и при случае не обнуружения второго первый его автоматически запускал.

Т.е. например если пользователь выключил процесс a.exe, процесс b.exe его заного запускает и наоборот.
Win 10 x64 | VS 2015 | MSSQL 2014
autovestitv.ru
Veiron вне форума Ответить с цитированием
Старый 18.05.2009, 23:16   #2
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
По умолчанию

Можете сделать так:
Код:
(Программа a)
Uses
   ShellApi;
Procedure TForm1.Timer1Timer(Sender: TObject);
Var
H: HWND;
Begin
H:=FindWindow(Nil, 'Заголовок проги b');
If H<>0 Then
Exit;
ShellExecute(Application.Handle, 'Open', Pchar('Путь к проге b') ,Nil, Nil, SW_SHOWDEFAULT);
End;
Аналогично делается в программе b, только измените заголовок на заголовок программы a и путь к a программе.
Всегда рад помочь!
Terran вне форума Ответить с цитированием
Старый 21.05.2009, 21:30   #3
Air
Участник клуба
 
Аватар для Air
 
Регистрация: 30.04.2007
Сообщений: 1,307
По умолчанию

Имя окна может измениться если у пользователя проблемы со шрифтами, добавь проверку по имени процесса. Если не в памяти, то запустить.
И не забудь, что пользователь может переименовать a.exe и b.exe, поставь постоянную проверку имён, чтоб проги знали, что грузить в следующий раз.
А что бы убить их, достаточно закрыть одновременно. (ну или почти одновременно)
Всё гениальное - просто!
Air вне форума Ответить с цитированием
Старый 21.05.2009, 23:08   #4
Alter
Старожил
 
Аватар для Alter
 
Регистрация: 06.08.2007
Сообщений: 2,183
По умолчанию

А если их вдвоём сразу завершить, оно успеет сработать? Например AnVir Task Manager может сразу несколько процессов завершать.
Alter вне форума Ответить с цитированием
Старый 21.05.2009, 23:18   #5
Air
Участник клуба
 
Аватар для Air
 
Регистрация: 30.04.2007
Сообщений: 1,307
По умолчанию

если проверка стоит на 1-10 мкс то может и не успеет.
P.S. можно сделать 3 проги для уверенности
Всё гениальное - просто!
Air вне форума Ответить с цитированием
Старый 22.05.2009, 01:14   #6
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

А лучше 5 Делать что-то "по таймеру" не самое лучшее решение, практически всегда есть способ отследить нужный момент для выполнения действия.

CreateProcess -> WaitForSingleObject -> GetExitCodeProcess
пример тут http://programmersforum.ru/showthread.php?t=44773
пыщь
JTG вне форума Ответить с цитированием
Старый 22.05.2009, 13:16   #7
Veiron
Форумчанин
 
Аватар для Veiron
 
Регистрация: 01.12.2007
Сообщений: 346
По умолчанию

Сейчас с этим загвоздка произошла но вроде справлюсь, смысл в том что в автозапуск поставил эти два файла и после загрузки системы они сами себя начинают грузить по нескольку раз а там еще и таймер короче переполнение памяти и комп в паралич, надо наверно один процесс поставить на автозагрузку.

Очень хочется конечно без таймеров, но пока нужно быстрое решение, по тому как компьютеры слабые. Пользователь наврятли найдет эти два exe'шника, сделал их системно скрытыми.

ShellExecute заменил на WinExec что бы работало даже при отсутствии DirectX.

Но там без таймера все равно не получится (кажется), т.к. первая "главная" программа каждые 0,5с. ищет "третий" процесс и убивает его, если он есть.
Win 10 x64 | VS 2015 | MSSQL 2014
autovestitv.ru
Veiron вне форума Ответить с цитированием
Старый 22.05.2009, 13:21   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
если проверка стоит на 1-10 мкс то может и не успеет
Зато какие тормоза будут ))))))))

ИМХО, плохая идея... Наступал я уж на эти грабли...
выход такой:
1. Либо службу делать
2. Либо запускать процессы с правами, запрещающими их закрывать кому-попало и не попало
Цитата:
Пользователь наврятли найдет эти два exe'шника, сделал их системно скрытыми.
Не смеши... Найдут... Наступал я на эти грабли уже, и посему прятал Экзешник в папку, которую пользователь открыть по доступам не мог.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 22.05.2009, 16:37   #9
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

Цитата:
Сообщение от Veiron Посмотреть сообщение
ShellExecute заменил на WinExec что бы работало даже при отсутствии DirectX.
Убило под стул
Выкинь таймеры и смотри код в примере выше
пыщь
JTG вне форума Ответить с цитированием
Старый 22.05.2009, 18:29   #10
Veiron
Форумчанин
 
Аватар для Veiron
 
Регистрация: 01.12.2007
Сообщений: 346
По умолчанию

Цитата:
Сообщение от JTG Посмотреть сообщение
Убило под стул
Выкинь таймеры и смотри код в примере выше
Учитывая, что код здесь только один, именно в нем и заменял Шел на Вин, ибо там (на рабочих машинках) напрочь извыкарежен DirectX и Шел процедуры на них не работают.

Цитата:
Сообщение от Stilet Посмотреть сообщение
выход такой:
1. Либо службу делать
2. Либо запускать процессы с правами, запрещающими их закрывать кому-попало и не попало

Не смеши... Найдут... Наступал я на эти грабли уже, и посему прятал Экзешник в папку, которую пользователь открыть по доступам не мог.
1. Службу делать, там к сожалению обойти это просто.
2. Вариант с правами неубиваемог процесса это вообще идеально, но как так запускать, темболее программно не знаю.

Все эти люди как на ладони и более того советуются со мной как это сломать не подозревая, что разговаривают с создателем чудофишки, так, что любой косяк я могу найти почти оперативно и внести изменения в конструкцию программной системы, хотя напряжно об этом думать, по этому приходится все расчитывать на два шага вперед и на не грамотность пользователей .
Win 10 x64 | VS 2015 | MSSQL 2014
autovestitv.ru
Veiron вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Два форума NITRO2025 О форуме и сайтах клуба 3 19.05.2009 16:52
Два вопроса Никки Общие вопросы Delphi 2 19.01.2008 21:39
два TMediaPlayer и два AVI-файла zeleniy Компоненты Delphi 0 01.06.2007 14:14
Два в одном ZhekON Общие вопросы Delphi 1 01.03.2007 23:54
Два в одном шолku Общие вопросы Delphi 4 17.12.2006 12:05