如何从Delphi XE编写的EXE文件中启动Delphi 7?

Bri*_*ost 5 delphi shellexecute

我正在做一些构建自动化,并希望从我正在使用Delphi XE编写的应用程序中运行Delphi 7 IDE.

我的Delphi 7 IDE位于:

'C:\Program Files\Borland\Delphi7\Bin\delphi32.exe'
Run Code Online (Sandbox Code Playgroud)

还在做:

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

最终进入Delphi 7 IDE,但只有在很多丢失的包错误之后.

这样做:

ShellExecute( Handle, 'Open', 'C:\windows\notepad.exe', '', '', sw_ShowNormal );
Run Code Online (Sandbox Code Playgroud)

工程文件打开记事本.

我还有一个名为'Delphi7IDE.bat'的批处理文件,当我点击批处理文件时打开Delphi 7,但是:

ShellExecute( Handle, 'Open', 'C:\sys\batch\Delphi7IDE.bat', '', '', sw_ShowNormal );
Run Code Online (Sandbox Code Playgroud)

产生与上述相同的错误.

我尝试使用我的Delphi 7菜单快捷方式中指定的directoy(即调用:

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

但这会产生相同的错误(这是可以预料到的,因为上面的批处理文件示例没有固定的目录,单击时运行正常).

有多个错误,但一个示例是 这个

我做错了什么?

And*_*and 3

现在我想我明白了。Delphi 7 已经很旧了。Windows Vista(或7)是新的。为了兼容性,您以管理员身份运行delphi32.exe,不是吗?也就是说,如果您右键单击delphi32.exe(或快捷方式),则您已在“兼容性”选项卡中选择了“以管理员身份运行此程序”。如果您delphi32.exe以管理员身份运行,一切都很好,但如果您不这样做,您将在启动过程中收到所有这些错误。

现在,当您ShellExecute delphi32.exe从 Delphi 应用程序中delphi32.exe 继承您的 Delphi 应用程序的权限时。这很可能在没有任何提升权限的情况下运行,因此也会如此delphi32.exe

解决方案:右键单击您的 Delphi 应用程序(Project1.exe例如),选择“兼容性”选项卡,然后单击“以管理员身份运行此程序”复选框。