Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2003.10.23;
Скачать: [xml.tar.bz2];

Вниз

Программное закрытие окна   Найти похожие ветки 

 
RSN   (2003-08-17 22:18) [0]

Создаю процесс с использованием arj, zip и т.д. Как после его завершения програмно закрыть окно (Сеанс завершен) - arj.
В свойствах это достигается путем установки галочки "Закрывать окно по завершении работы".


 
Дмитрий В. Белькевич   (2003-08-18 01:24) [1]

Как вариант - запускать не arj непосредственно, а создавать на него ярлык, где поставить галку "закрывать после завершения". И уже этот ярлык запускать. У меня именно так некоторые батники запускаются.


 
Song   (2003-08-18 08:58) [2]

Универсальная для dos и win32 процессов:

Procedure TZakazCard.CrProcess(FileName, S, Dir, WindowName: String);
Var SeInfo:TShellExecuteInfo;
ExitCode: DWord;
Begin
FillChar(SEInfo,SizeOf(SEInfo),0);
With SEInfo Do
Begin
cbSize:=SizeOf(TShellExecuteInfo);
fmask:=SEE_MASK_NOCLOSEPROCESS;
Wnd:=Application.Handle;
lpFile:=PChar("""+FileName+""");
lpParameters:=PChar(S);
lpDirectory:=nil;
nShow:=SW_HIDE;
End;
IF ShellExecuteEx(@SEInfo) then
Repeat
Application.ProcessMessages;
GetExitCodeProcess(SEInfo.hProcess,ExitCode);
Until (FindWindow(nil,PChar(WindowName))<>0) or
(ExitCode<>STILL_ACTIVE) or (Application.Terminated) else
Begin
ProgressForm.Close;
NewSp5Form.MakeSound(400,100);
MessageDlg("Ошибка создания внешнего процесса. Код ошибки: ZakazCardUnitx171: ""+SysErrorMessage(GetLastError)+"".",mtError,[mbAbort],0);
End;
CloseHandle(SEInfo.hProcess);
IF FindWindow(nil,PChar(WindowName))<>0 then
Begin
SendMessage(FindWindow(nil,PChar(WindowName)),WM_CLOSE,0,0);
While FindWindow(nil,PChar(WindowName))<>0 Do Application.ProcessMessages;
End;
End;


Использование:

CrProcess(...,"(Сеанс завершен) - Arj");


P.S. Выкинь лишнее.


 
nikus   (2003-08-18 14:12) [3]

Запускай процесс через CreateProcess, а не WinExec/ShellExecute. Тогда никаких окон типа "Сеанс завершён..." по идее быть не должно.

Когда-то писал консольную прогу для конвертации архивов, и в ней юзал такую функцию, быть может, поможет...

function RunAndWait(cmdline : string) : DWord;
var si : Startupinfo; pi : Process_Information;
begin
ZeroMemory(@si,sizeof(si));
si.cb:=SizeOf(si);
si.wShowWindow := SW_HIDE;
si.hStdInput := GetStdHandle(STD_INPUT_HANDLE);
si.hStdOutput := GetStdHandle(STD_OUTPUT_HANDLE);
si.dwFlags := STARTF_USESHOWWINDOW or STARTF_USESTDHANDLES or
STARTF_FORCEONFEEDBACK;
if not CreateProcess(nil, PChar(cmdline), nil,
nil, False, 0, nil, nil, si, pi) then exit;
WaitForSingleObject(pi.hProcess, INFINITE);
GetExitCodeProcess(pi.hProcess, result);
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
end;


Процесс архивации отображается в том же консольном окне, а сама программа останавливается до завершения архивации.


 
Song   (2003-08-18 14:34) [4]

2nikus © (18.08.03 14:12) [3]
Запусти arj в твоём варианте, комп никогда не выйдет из WaitForSingleObject(pi.hProcess, INFINITE);


 
BillyJeans   (2003-08-19 10:37) [5]

используй arj32.exe



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2003.10.23;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.01 c
14-74419
VID
2003-10-05 22:27
2003.10.23
HTTP прокси сервера не дают никакой разницы...


1-74152
Xtz
2003-10-10 19:12
2003.10.23
Люди хелпаните плизз .Вопрос по TreeView


1-74177
Slym
2003-10-10 08:06
2003.10.23
Как и откуда вытащить все имена процедур, функций и констант VBA


3-74090
Nick2050
2003-10-01 14:23
2003.10.23
Помогите с TQuery.UpdateCashe


3-74085
Gennadiy
2003-10-01 16:14
2003.10.23
Как вставить данные одновременно в главную и подчиненную таблицы





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский