Главная страница
    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.45 MB
Время: 0.04 c
14-1130034733
Form1.Canvas..........
2005-10-23 06:32
2005.11.13
Лицензионные проги


4-1126241076
Фагот
2005-09-09 08:44
2005.11.13
Перехват клавиш в консольном приложении


2-1130323509
SamProf
2005-10-26 14:45
2005.11.13
Как забить THread?


14-1129747692
ArtemESC
2005-10-19 22:48
2005.11.13
Delphi environment


14-1129631221
DelphiN!
2005-10-18 14:27
2005.11.13
Как правильно оценить стоимость программы





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский