AProcess.Options + [poWaitOnExit]

Форум для изучающих FPC и их учителей.

Модератор: Модераторы

Re: AProcess.Options + [poWaitOnExit]

Сообщение B4rr4cuda » 06.04.2012 23:21:03

Ну, например, так:
Код: Выделить всё
while AProcess.Running do begin
  if application.terminated then
     Halt
  else
    Application.ProcessMessages;
end;
Аватара пользователя
B4rr4cuda
энтузиаст
 
Сообщения: 693
Зарегистрирован: 28.12.2007 07:48:35

Re: AProcess.Options + [poWaitOnExit]

Сообщение vitaly_l » 06.04.2012 23:37:55

B4rr4cuda писал(а):  if application.terminated then Halt

Идея класная, но это: увы, к сожалению - не работает...
Должна же быть какая-то функция, типа: Крестик.onMouseDown... или Крестик.onClick... Или я чего-то непонимаю???
Как программисты отключили крестик??? Значит - есть функция... Спасите - помогите... :roll: ПОЖАЛУЙСТА <-- Волшебное слово :cry: .
Как крестик в системе называется???
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: AProcess.Options + [poWaitOnExit]

Сообщение B4rr4cuda » 07.04.2012 01:24:13

Как программисты отключили крестик???

OMFG
vitaly_l писал(а):Как крестик в системе называется???

омфг. я так больше не могу, он взрывает мне мозг..
Аватара пользователя
B4rr4cuda
энтузиаст
 
Сообщения: 693
Зарегистрирован: 28.12.2007 07:48:35

Re: AProcess.Options + [poWaitOnExit]

Сообщение Ism » 07.04.2012 02:23:01

Ну коли речь пошла об извращениях можно при начале процесса устанавливать фокус на какойто кнопке , а при потере фокуса все рубить и закрывать приложение, про нажатии на кнопку закрытия фокус будет теряться и все сработает
Ism
энтузиаст
 
Сообщения: 908
Зарегистрирован: 06.04.2007 17:36:08

Re: AProcess.Options + [poWaitOnExit]

Сообщение vitaly_l » 07.04.2012 09:36:44

B4rr4cuda писал(а):я так больше не могу, он взрывает мне мозг..

(Oh My Fucking God)... Извините ради Бога, уважаемый B4rr4cuda... Я не хотел взорвать Ваш мозг...
Ism писал(а):Ну коли речь пошла об извращениях можно при начале процесса устанавливать фокус на какойто кнопке

Я, примерно так, при помощи Esc - останавливаю процесс... Однако Ваш вариант сработает и при простом нажатии на форму...
Суть в том что, запускаются несколько процессов подряд и между ними можно прервать(при желании)...
Просто Halt делать нельзя, т.к. то что в Process - останется висеть в тасклисте и памяти... (очевидно поэтому отключили крестик)...

Вопрос остаётся в силе:
Как вызвать функции типа: "СистемныйКрестик".onMouseDown.?. или "СистемныйКрестик".onClick.?. (если такие есть)

.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: AProcess.Options + [poWaitOnExit]

Сообщение Ism » 07.04.2012 11:01:45

В вашем случае проще запустить процесс и отцепить его от программы, то есть при дезактивации Tproocess процесс продолжит выполняться. А при закрытии программы убивать его консольной командой taskkill
Или сделать две программы , вторая будет управляться через pipe
Ну или TThread
Ism
энтузиаст
 
Сообщения: 908
Зарегистрирован: 06.04.2007 17:36:08

Re: AProcess.Options + [poWaitOnExit]

Сообщение vitaly_l » 07.04.2012 11:46:41

Ism писал(а):Ну или TThread

У TThread будут теже возможности, что и у TProcess: Какой смысл менять шило на мыло?? (кстати, там - тоже заблокируется крестик)...
Ism писал(а):запустить процесс и отцепить его от программы, то есть при дезактивации Tproocess процесс продолжит выполняться.

Это класс! Спасибо! Это мне подходит; т.к. прерывать процесс мне не нужно. (мне нужно прервать между процессами)
Как отцепить процес? Как называется функция? Ключевые слова для поиска какие?...
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: AProcess.Options + [poWaitOnExit]

Сообщение Ism » 07.04.2012 12:19:00

в windows я делаю "cmd /k "notepad" "
и тогда Tprocess.Active:=false процесс остается работать.

Добавлено спустя 12 минут 55 секунд:
Внимание, для Lazarus 0.9.30.4 fpc 2.6.0 делать так , старый метод через commandline не поддерживается, хотя и работает

Process1.Active:=false;
Process1.ShowWindow:=swoHIDE;
Process1.Executable:='cmd';
Process1.Parameters.Clear;
Process1.Parameters.Add('/k');
Process1.Parameters.Add('notepad.exe');
Process1.Execute;
Sleep(1000);
Process1.Active:=false;
Ism
энтузиаст
 
Сообщения: 908
Зарегистрирован: 06.04.2007 17:36:08

Пред.

Вернуться в Обучение Free Pascal

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 12

Рейтинг@Mail.ru