delphi – 我的应用程序是如何启动的?

如何确定我的应用程序是否由用户启动?例如,如果双击Exe,或右键单击>从Windows资源管理器中打开

我需要一个函数来确定上面的内容,例如:

function AppWasExecutedByUser: Boolean;
begin
  //
end;

procedure TForm1.OnCreate(Sender: TObject);
begin
  if AppWasExecutedByUser then
    ShowMessage('User opened the exe by double clicking in Windows')
  else
    ShowMessage('Application was opened some other way');
end;

欣赏你的想法.

谢谢.

最佳答案
如果您将应用程序与文件扩展名相关联,则可以使用paramcount = 1,并且可以在paramstr(1)中读取打开的文件.

如果您打开应用程序本身,双击或打开可执行文件将具有相同的效果:paramcount = 0.实际上,Windows资源管理器使用相同的参数调用ShellApi.所以没有办法识别它.

在这两种情况下,paramstr(0)将始终包含完整的可执行路径.

即使您创建了快捷方式链接,并添加了参数,双击或右键单击“打开”也会产生相同的结果.

转载注明原文:delphi – 我的应用程序是如何启动的? - 代码日志