Страница 2 из 2

Re: AProcess.Options + [poWaitOnExit]

Добавлено: 06.04.2012 23:21:03
B4rr4cuda
Ну, например, так:

Код: Выделить всё

while AProcess.Running do begin 
  if application.terminated then
     Halt
  else
    Application.ProcessMessages;
end;

Re: AProcess.Options + [poWaitOnExit]

Добавлено: 06.04.2012 23:37:55
vitaly_l
B4rr4cuda писал(а):  if application.terminated then Halt

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

Re: AProcess.Options + [poWaitOnExit]

Добавлено: 07.04.2012 01:24:13
B4rr4cuda
Как программисты отключили крестик???

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

омфг. я так больше не могу, он взрывает мне мозг..

Re: AProcess.Options + [poWaitOnExit]

Добавлено: 07.04.2012 02:23:01
Ism
Ну коли речь пошла об извращениях можно при начале процесса устанавливать фокус на какойто кнопке , а при потере фокуса все рубить и закрывать приложение, про нажатии на кнопку закрытия фокус будет теряться и все сработает

Re: AProcess.Options + [poWaitOnExit]

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

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

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

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

.

Re: AProcess.Options + [poWaitOnExit]

Добавлено: 07.04.2012 11:01:45
Ism
В вашем случае проще запустить процесс и отцепить его от программы, то есть при дезактивации Tproocess процесс продолжит выполняться. А при закрытии программы убивать его консольной командой taskkill
Или сделать две программы , вторая будет управляться через pipe
Ну или TThread

Re: AProcess.Options + [poWaitOnExit]

Добавлено: 07.04.2012 11:46:41
vitaly_l
Ism писал(а):Ну или TThread

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

Это класс! Спасибо! Это мне подходит; т.к. прерывать процесс мне не нужно. (мне нужно прервать между процессами)
Как отцепить процес? Как называется функция? Ключевые слова для поиска какие?...

Re: AProcess.Options + [poWaitOnExit]

Добавлено: 07.04.2012 12:31:55
Ism
в 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;