Пожалуйста, выделяйте текст программы тегом [сode=pas] ... [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.
Следующие вопросы задаются очень часто, подробно разобраны в FAQ и, поэтому, будут безжалостно удаляться: 1. Преобразовать переменную типа String в тип PChar (PAnsiChar) 2. Как "свернуть" программу в трей. 3. Как "скрыться" от Ctrl + Alt + Del (заблокировать их и т.п.) 4. Как запустить программу/файл? (и дождаться ее завершения) 5. Как перехватить API-функции, поставить hook? (перехват сообщений от мыши, клавиатуры - внедрение в удаленное адресное прстранство) ... (продолжение следует) ... Внимание: Попытки открытия обсуждений реализации вредоносного ПО, включая различные интерпретации спам-ботов, наказывается предупреждением на 30 дней. Повторная попытка - 60 дней. Последующие попытки - бан. Мат в разделе - бан на три месяца... Полезные ссылки: MSDN LibraryFAQ разделаПоиск по разделуКак правильно задавать вопросы Выразить свое отношение к модераторам раздела можно здесь:Rouse_, Krid
Привет всем!!!! У меня такая проблема: Пытаюсь открыть файл с использованием CreateProcess(), т. к. необходимо знать когда будет завершен процесс. Просмотрел кучу литературу, толком ничего не описано. В результате кое что получилось, файл открывается но вылетает ошибка. Пожалуйста объясните как правильно это сделать (желательно с исходником). За ранее спасибо!!!
CODE
procedure TForm1.ExecAndWait(FileName:String); var Rslt: LongBool; StartUpInfo: TStartUpInfo; ProcessInfo: TProcessInformation; App:PChar; CmdLine: ShortString; begin FillChar(StartupInfo, SizeOf(TStartupInfo), #0); with StartupInfo do begin cb:=SizeOf(TStartupInfo); dwFlags :=STARTF_USESHOWWINDOW; wShowWindow :=SW_SHOWNORMAL; end; FindExecutable(PChar(FileName),nil,App); CmdLine:=App+' "'+ Filename + '"'; Rslt:=CreateProcess(nil, PChar(String(CmdLine)), nil, nil, False, CREATE_DEFAULT_ERROR_MODE or NORMAL_PRIORITY_CLASS, nil, nil, StartupInfo, ProcessInfo); if Rslt then begin WaitForSingleObject(ProcessInfo.hProcess, INFINITE); ShowMessage('Файл закрыт!!!!'); CloseHandle(ProcessInfo.hProcess); CloseHandle(ProcessInfo.hThread); end else ShowMessage('Ошибка!!'); end;