Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 05.10.2007, 01:17
s.Mobi s.Mobi вне форума
Прохожий
 
Регистрация: 02.09.2007
Сообщения: 14
Репутация: 10
Вопрос Нужно закрыть свое приложение и только потом запустить другое - как?

Народ, опять прошу совета - есть такая задача - нужно по нажатию клавиши в моей программе закрыть приложение и только после этого запустить другую программу - обе программы используют одно железо и обе в монопольном доступе потому иначе никак - как это можно сделать? Вариант с WinExec в обработчике FormDestroy не прокатывает ибо форма еще не закрыта, аппаратное устройство "не отпущщено"... Подскажите, плиз, как решить траблу?

Последний раз редактировалось s.Mobi, 05.10.2007 в 01:24.
Ответить с цитированием
  #2  
Старый 05.10.2007, 02:43
Аватар для zip000
zip000 zip000 вне форума
Начинающий
 
Регистрация: 24.07.2007
Сообщения: 194
Репутация: 25
По умолчанию

Попробуй запускать прогу в разделе finalization юнита с формой.
__________________
Не профи, но и не чайник . D6 - лучше не придумали. Пока.
Ответить с цитированием
  #3  
Старый 05.10.2007, 10:42
Аватар для 4kusNick
4kusNick 4kusNick вне форума
Местный
 
Регистрация: 06.09.2006
Адрес: Россия, Санкт-Петербург
Сообщения: 444
Репутация: 550
По умолчанию

Создай батник. Перед выходом его запускай. В нём сделай, чтобы была задержка\пауза на выполнение где-нить секунду, и не забудь прописать в нем, чтобы он себя потом удалил.
__________________
THE CRACKER IS OUT THERE
Ответить с цитированием
  #4  
Старый 05.10.2007, 11:08
s.Mobi s.Mobi вне форума
Прохожий
 
Регистрация: 02.09.2007
Сообщения: 14
Репутация: 10
По умолчанию

Вариант с батником напрашивается сам собой но не хотелось этого делать... Может есть более красивый метод?
Ответить с цитированием
  #5  
Старый 05.10.2007, 12:01
Spider13 Spider13 вне форума
Прохожий
 
Регистрация: 03.10.2007
Сообщения: 20
Репутация: 10
По умолчанию

Вообщето нету, можеш создать конешно еще одну программу, которая будет ждать завершения другой, и получает код завершения, если он напрмер равен 200 то запускаетьс другая программа....
лучше в конце основоного begin'a пропиши строку запука другого приложения, тогда не должно быть конфлтикта в оборудовании
Ответить с цитированием
  #6  
Старый 05.10.2007, 13:10
AlexSku AlexSku вне форума
Специалист
 
Регистрация: 07.05.2007
Адрес: Москва
Сообщения: 884
Репутация: 21699
По умолчанию

Цитата:
обе программы используют одно железо
Первая программа должна отвязаться от железа, потом запустить вторую программу и завершиться.
Ответить с цитированием
  #7  
Старый 05.10.2007, 15:33
Аватар для zip000
zip000 zip000 вне форума
Начинающий
 
Регистрация: 24.07.2007
Сообщения: 194
Репутация: 25
По умолчанию

s.Mobi в модуле с формой в конце добавь
Код:
initialization

finalization
  WinExec(PChar(Application.ExeName), SW_SHOWNORMAL);
Этот код (в секции finalization) вызывается уже когда форма удалена.
__________________
Не профи, но и не чайник . D6 - лучше не придумали. Пока.
Ответить с цитированием
  #8  
Старый 05.10.2007, 18:08
s.Mobi s.Mobi вне форума
Прохожий
 
Регистрация: 02.09.2007
Сообщения: 14
Репутация: 10
По умолчанию

Таки "ек"... Железо не отпускается.... Похоже что придется через батник делать, хоть и очень не хотелось...
Ответить с цитированием
  #9  
Старый 05.10.2007, 18:25
Аватар для mav_c
mav_c mav_c вне форума
Активный
 
Регистрация: 26.03.2007
Адрес: Москва
Сообщения: 287
Репутация: 30
По умолчанию

Цитата:
Сообщение от s.Mobi
Таки "ек"... Железо не отпускается.... Похоже что придется через батник делать, хоть и очень не хотелось...
А ты стартуй вторую программу, а она пусть ждет в цикле когда первый проццесс будет погублен. Потом цепляйся к "железу"
__________________
---------------------------------------------
Программирование - не профессия, а стиль жизни
Ответить с цитированием
  #10  
Старый 05.10.2007, 18:46
Аватар для 4kusNick
4kusNick 4kusNick вне форума
Местный
 
Регистрация: 06.09.2006
Адрес: Россия, Санкт-Петербург
Сообщения: 444
Репутация: 550
По умолчанию

Батник - наиболее рациональный выход из ситуации, как мне видится - никаких доп прог писать не надо и ресурсы системные сэкономит батник.
__________________
THE CRACKER IS OUT THERE
Ответить с цитированием
  #11  
Старый 05.10.2007, 19:03
Аватар для mav_c
mav_c mav_c вне форума
Активный
 
Регистрация: 26.03.2007
Адрес: Москва
Сообщения: 287
Репутация: 30
По умолчанию

Цитата:
Сообщение от 4kusNick
Батник - наиболее рациональный выход из ситуации, как мне видится - никаких доп прог писать не надо и ресурсы системные сэкономит батник.
Батник хорошо!!! Классно! Но не совсем красиво!
__________________
---------------------------------------------
Программирование - не профессия, а стиль жизни
Ответить с цитированием
  #12  
Старый 05.10.2007, 21:04
Аватар для 4kusNick
4kusNick 4kusNick вне форума
Местный
 
Регистрация: 06.09.2006
Адрес: Россия, Санкт-Петербург
Сообщения: 444
Репутация: 550
По умолчанию

mav_c, ну хотя, ты прав, можно ведь так сделать:
Запускаем из себя второе приложение, а в нем уже есть код проверки занятости ресурсов в цикле, как только ресурсы освободились (закрылась копия программы) - выходим из цикла и загружаемся дальше.
__________________
THE CRACKER IS OUT THERE
Ответить с цитированием
  #13  
Старый 05.10.2007, 21:51
s.Mobi s.Mobi вне форума
Прохожий
 
Регистрация: 02.09.2007
Сообщения: 14
Репутация: 10
По умолчанию

Таак.... а можно поподробнее, желательно с примером... Про проверку освобождения ресурсов...
Ответить с цитированием
  #14  
Старый 06.10.2007, 13:43
Аватар для 4kusNick
4kusNick 4kusNick вне форума
Местный
 
Регистрация: 06.09.2006
Адрес: Россия, Санкт-Петербург
Сообщения: 444
Репутация: 550
По умолчанию

Все зависит от того, как ты к ним подключаешься. Можно процедуру подключения впихнуть в блок try...except,а если это ф-я, то можно смотреть возвращаемое значение.

Кстати, наверняка должна быть возможность отключиться от железа вручную, без закрытия формы. Ведь подумай сам, при закрытии формы как-то железо освобождается. Я понимаю, что при закрытии формы винда сама освобождает память, чистит мусор за нами, отключает железо и т.д., но ведь КАК-ТО она отключает нас от железа, верно?

По-этому, расскажи к какому типу железяки мы коннектимся, как это происходит и есть ли какой-либо набор ф-ий\процедур\инструкций для работы с этой железякой?
__________________
THE CRACKER IS OUT THERE

Последний раз редактировалось 4kusNick, 06.10.2007 в 13:48.
Ответить с цитированием
  #15  
Старый 06.10.2007, 14:41
Аватар для Winny
Winny Winny вне форума
Продвинутый
 
Регистрация: 26.05.2007
Адрес: Планета земля, Россия, Москва
Сообщения: 620
Репутация: 30
По умолчанию

Может тайна кроется в реестре? Или в системных файлах?
__________________

Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 03:05.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025