如何判断程序是开机自动运行的,还是用户双击运行的?(100分)

  • 主题发起人 主题发起人 ericyin
  • 开始时间 开始时间
E

ericyin

Unregistered / Unconfirmed
GUEST, unregistred user!
我有一个程序,安装后加在了注册表的.../microsoft/windows/run里了,也就是会一开机
就运行(当然,用户也可以选择不让它开机就启动,如果他愿意)
但是它也应当允许用户自己通过双击图标的方式打开。

我想让程序可以判断,它自己是怎么被运行的:是自动运行的?还是用户自己打开的

谢谢!!
 
請問如此設計是什么目的呢﹖
 
小師妹问的好,
问君何所欲
问君何所求
 
吾亦无所欲
吾亦无所求

没人知道吗?
 
带参数,写入到注册表时带参数


程序里判断若有参数,就。。。

双击运行是不可以带参数的

:-)
 
俺有一个办法,哈哈哈,很经典的想法
另外写一个程序,一开始就隐藏起来,一直监听你的程序
如果有用户双击,则记录双击时间以及次数等等你所要得到的参数~
 
“带参数,写入到注册表时带参数
程序里判断若有参数,就。。。
双击运行是不可以带参数的”
听上去可以啊。可怎么写呢?我是菜鸟

另外,我的程序好像不需要参数,怎么样写一个实际上不起作用的参数啊?
 
随便带一个1啊

怎么带参数,你看注册表里别人是怎么带参数的嘛

跟我操作

打开注册表,搜索 .exe 能找到很多,我们就且先看

HKEY_CLASSES_ROOT/.htm/OpenWithList/记事本/shell/edit/command
下有一个
C:/WINNT/Notepad.exe %1

你为什么不试试写入一个
myhello C:/Project1.exe helloworld 呢

程序:
procedure TForm1.FormCreate(Sender: TObject);
begin
Self.Caption := ParamStr(1);
end;

我重启动了,呆会再来告诉你结果
 
哈,我回来了,重启后,生效了

ParamStr(1)就是你的参数

写注册表时带参数,你别再问我怎么写注册表,我是手工写的

 
有道理,gz
 
我到是有个想法就是不太精确
程序启动时可以取一下时间嘛,gettickcount,通过这个值可以大致判断程序是在系统启动
多长时间以后被执行的,如在一定的范围的内可以默认做随机启动的,
不知可否
 
接受答案了.
 
后退
顶部