Как я могу запустить Delphi 7 из EXE-файла, написанного на Delphi XE? - PullRequest
5 голосов
/ 15 мая 2011

Я занимаюсь некоторой автоматизацией сборки и хотел бы запустить Delphi 7 IDE из приложения, которое я пишу, с использованием Delphi XE.

Моя Delphi 7 IDE находится по адресу:

'C:\Program Files\Borland\Delphi7\Bin\delphi32.exe'

еще делает:

ShellExecute( Handle, 'Open', 'C:\Program Files\Borland\Delphi7\Bin\delphi32.exe', '', '', sw_ShowNormal );

в конечном итоге попадает в Delphi 7 IDE, но только после множества ошибок отсутствующих пакетов.

Выполнение:

ShellExecute( Handle, 'Open', 'C:\windows\notepad.exe', '', '', sw_ShowNormal );

рабочий файлоткрытие Блокнота.

У меня также есть пакетный файл с именем «Delphi7IDE.bat», который открывает Delphi 7 при нажатии на пакетный файл, но делает:

ShellExecute( Handle, 'Open', 'C:\sys\batch\Delphi7IDE.bat', '', '', sw_ShowNormal );

выдает те же ошибки, что и выше.

Я пытался использовать директой, как указано в ярлыке меню Delphi 7 (т.е. вызывать:

ShellExecute( Handle, 'Open', 'C:\Program Files\Borland\Delphi7\Bin\delphi32.exe', '', 'C:\Program Files\Borland\Delphi7\Projects\', sw_ShowNormal );"

, но это выдает ту же ошибку (и этого следует ожидать, потому чтоВ приведенном выше примере пакетного файла нет фиксированного каталога, и он работает нормально при нажатии).

Есть несколько ошибок, но один из примеров - this one

Что я делаю не так, пожалуйста?

Ответы [ 3 ]

3 голосов
/ 16 мая 2011

Теперь я думаю, что понял. Delphi 7 старый. Windows Vista (или 7) является новой. Вы запускаете delphi32.exe как администратор, для совместимости, не так ли? То есть, если вы щелкнете правой кнопкой мыши delphi32.exe (или ярлык), вы выбрали «Запускать эту программу как администратор »на вкладке« Совместимость ». Если вы запускаете delphi32.exe как администратор, все в порядке, но если вы этого не сделаете, вы получите все эти ошибки при запуске.

И теперь, когда вы ShellExecute delphi32.exe из вашего приложения Delphi, delphi32.exe наследует привилегии вашего приложения Delphi. Скорее всего, это работает без каких-либо повышенных привилегий, как и delphi32.exe.

Решение: щелкните правой кнопкой мыши свое приложение Delphi (скажем, Project1.exe), выберите вкладку «Совместимость» и установите флажок «Запускать программу от имени администратора».

2 голосов
/ 15 мая 2011

Возможно, вы неправильно указали рабочий каталог.Щелкните правой кнопкой мыши значок «Delphi 7» в меню «Пуск» и Ctrl + C рабочий каталог этого ярлыка.Используйте эту строку в качестве параметра Directory для ShellExecute.

. У меня нет ни одной системы Delphi 7 для экспериментов, но на моей виртуальной машине WIndows 95, на которой установлен Delphi 4,действительно является указанным рабочим каталогом:

Свойства ярлыка Delphi 4 в Windows 95 http://privat.rejbrand.se/delphi4wd.png

1 голос
/ 18 мая 2011

Это может вас заинтересовать: http://msdn.microsoft.com/en-us/library/ms682431(v=vs.85).aspx А вот пример Delphi по использованию функции: http://www.delphi3000.com/articles/article_4176.asp

...