如何识别我的应用程序是否由用户启动?例如,如果双击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;
欣赏你的想法。
感谢。
答案 0 :(得分:5)
这样做的唯一方法是让您的应用从将命令行参数传递到您的应用的快捷方式启动。直接单击该文件不会传递任何参数。
答案 1 :(得分:4)
如果您将应用程序与文件扩展名相关联,则可以paramcount=1
,并且可以在paramstr(1)
中阅读已打开的文件。
如果您打开应用程序本身,双击或打开可执行文件将具有相同的效果:paramcount=0
。实际上,Windows资源管理器使用相同的参数调用ShellApi。所以没有办法识别它。
在这两种情况下,paramstr(0)
将始终包含完整的可执行文件路径。
即使您创建快捷方式链接并添加参数,双击或右键单击+打开也会产生相同的结果。