Delphi 我的申请是如何启动的?

Delphi 我的申请是如何启动的?,delphi,Delphi,如何确定我的应用程序是否由用户启动?例如,如果双击Exe,或右键单击>从Windows资源管理器打开 我需要一个函数来确定上面的内容,比如: function AppWasExecutedByUser: Boolean; begin // end; procedure TForm1.OnCreate(Sender: TObject); begin if AppWasExecutedByUser then ShowMessage('User opened the exe by d

如何确定我的应用程序是否由用户启动?例如,如果双击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)
始终包含完整的可执行路径


即使您创建了一个快捷链接并添加了一个参数,双击或右键单击+打开也会得到相同的结果。

为什么需要这个?这是一个不同寻常的要求。大多数应用不需要也不关心它们是如何启动的。