Delphi - Режим совместимости с XP

Ответить
Аватара пользователя
treehel

Delphi - Режим совместимости с XP

Сообщение treehel »

Попросил друга написать небольшую утилитку для запуска знаменитого BOA Soft PostInstaller с нужными мне параметрами. Получилось вот что:





Код:

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

program CMD;
{$R 'run.res' 'run.rc'}
uses
  Forms,
  Windows,
  SysUtils;
begin
WinExec(pchar(ExtractFilePath(Application.exename)+'Presetup.exe /ini:PS_EN.INI /altskin:"\skin\SKIN_EN.INI"'),SW_HIDE);  
end.

Проблема в том, что под XP код шикарно работает, а под Vista/7 запускается только если установить режим совместимости с XP. Поскольку софт должен распространяется дальше, это не вариант. Можно ли в самом коде программы указать режим совместимости с XP и, например, запрос прав админа?



Спасибо )
Аватара пользователя
Admiral

Re: Delphi - Режим совместимости с XP

Сообщение Admiral »

treehel вот эту строчку WinExec(pchar(ExtractFilePath(Application.exename)+'Presetup.exe /ini:PS_EN.INI /altskin:"\skin\SKIN_EN.INI"'),SW_HIDE); необходимо заменить примерно на такую конструкцию



Код:

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

STARTUPINFO cif = {0};
PROCESS_INFORMATION pi;
CreateProcess(NULL, pchar(ExtractFilePath(Application.exename)+'Presetup.exe /ini:PS_EN.INI /altskin:"\skin\SKIN_EN.INI"', NULL, FALSE, NULL, NULL, NULL, NULL, &cif, &pi);
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);

Примерно, потому что здесь код С, в Делфи аналогичные конструкции (только синтаксис немного отличен).

И запуск будет производится как в ХР так и Севен.
Ответить

Вернуться в «Программирование и базы данных»