Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.11.13;
Скачать: CL | DM;

Вниз

Запуск закрытие приложений   Найти похожие ветки 

 
illy   (2005-09-10 21:12) [0]

Привет всем!
Народ я наверное торможу.
Ниже приведен код процедуры. Она должна запускать приложение, в общем в таком виде как она сейчас все работает, но есть строка она выделенная. В принципе она здесь не нужна, так как путь читается из файла в переменную Patch_, В переменную N читается имя файла без расширения, но казус в том что без этой строки процедура не работает , MessageBox выдает ошибку : "Ошибка при инициализации приложения (0xc0000142). Для выхода из приложения нажмите кнопку "ОК".", просветите пожалуйста?

procedure TMainForm.StartProgram(var Msg: TMessage);
var
ini: TIniFile;
Name, Patch_, s, N: string;
i,count,StartX_: integer;
StartInfo: TStartupInfo;
ProcInfo: TProcessInformation;
begin
s:= "";
StartInfo.cb := sizeof(StartInfo);
Name:= MainDirPatch+"IS.ini";
if FileExists(Name) then
 begin
  ini:= TIniFile.Create(Name);
  try
   count:= ini.ReadInteger("RunProgram","Count",0);
   if count <> 0 then
    for i:= 0 to count - 1 do begin
     StartX_:= ini.ReadInteger("RunProgram","StartX_"+IntToStr(i), 0);
     if StartX_ =  Msg.WParam then begin
      Patch_:= ini.ReadString("RunProgram","Patch_"+IntToStr(i), s);
//---------------------------------------------------------------------
      N:= ini.ReadString("RunProgram","Name_"+IntToStr(i), s);
//---------------------------------------------------------------------
      if (not CreateProcess(nil, PChar(Patch_), nil, nil,
                            false, NORMAL_PRIORITY_CLASS,
                            nil, nil, StartInfo, ProcInfo))
      then MessageBox(0,PChar("Ошибка"+SysErrorMessage(GetLastError())),
                      "Ошыбка", 16);
     end;
    end;
  finally
   ini.Free;
  end;
 end;
end;


 
psa247 ©   (2005-09-11 10:55) [1]


> if FileExists(Name) then
>  begin
>   ini:= TIniFile.Create(Name);

Прочитай доку по ИНИ-файлам. FileExists(Name)-здесь тебе это не нужно

> MainDirPatch

Слеш тут есть?
Мессадж у тебя вылетает как результат if (not CreateProcess
Причем здесь строка N?


 
illy   (2005-09-11 12:36) [2]


> Прочитай доку по ИНИ-файлам. FileExists(Name)-здесь тебе
> это не нужно

Вот это то как раз и несущественно.


> Слеш тут есть?



function MainDirPatch;
begin
Result:= ExtractFilePath(Application.ExeName);
end;

> Причем здесь строка N?

Вот я и спрашиваю?

Вообще здесь не важно какая строка, любое присваение даже левое, но без нее не работает. Че за глюк?
И еще. В проседуре CreateProcess получаю хендл процесса. Програму должна закрывать другая процудура, CloseHandl не работает, TerminateProcess закрывает, но в хелпе написано что ето грубо.А есть ли вариант понежнее?



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

Текущий архив: 2005.11.13;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.031 c
6-1122979880
Readen
2005-08-02 14:51
2005.11.13
IdHTTP: ContentRangeStart и ContentRangeEnd


14-1129810870
wHammer
2005-10-20 16:21
2005.11.13
Как перевести исходники с версии 6 на версию 5


2-1129830465
Vitaly00
2005-10-20 21:47
2005.11.13
Загрузка текстового файла в listview, где ошибка?


2-1130136258
F1
2005-10-24 10:44
2005.11.13
Блокировка кнопки закрытия модального окна.


9-1120178057
Strech
2005-07-01 04:34
2005.11.13
Edit в DirectX