我有一个程序,安装后加在了注册表的...\microsoft\windows\run里了,也就是会一开机
就运行(当然,用户也可以选择不让它开机就启动,如果他愿意)
但是它也应当允许用户自己通过双击图标的方式打开。我想让程序可以判断,它自己是怎么被运行的:是自动运行的?还是用户自己打开的谢谢!!

解决方案 »

  1.   

    写注册表...\microsoft\windows\run时加上一个命令行参数,运行时检查这个参数。
      

  2.   

    比如金山词霸启动时运行的参数是 -s -nosplash
    自己点击运行的就是没参数的,
    程序就知道怎么启动的了。带-s他就不会关闭。
      

  3.   

    直接把参数写上就行了:
    [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run]
    MyRun="E:\Tools\TextView.exe" "E:\Tools\Readme.txt"
    判断时用ParamCount和ParamStr.
    如果要查找是否有指定参数时用FindCmdLineSwitch。
    如:FindCmdLineSwitch('nosplash',['-','\','/'], True)
      

  4.   

    写带参数的exe也并不是多难的事,给你个小例子吧:program xxxx;uses
      Forms,
      Sysutils,
      Registry,
      windows,
      Unit_xxxx in 'Unit_xxxx.pas' {Frm_update};{$R *.RES}begin
      Application.Initialize;
      {参数:r 添加注册表项}  case ParamCount of
        0:
          begin
            Application.CreateForm(TFrm_xxxx, Frm_xxxx);
          end;
        1:
          begin
            if lowercase(paramstr(1)) = 'r' then
            begin
              with TRegistry.Create do
              begin
                RootKey := HKEY_LOCAL_MACHINE;
                CloseKey;
                OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion\Run', true);
                WriteString('xxxx', application.ExeName);
                Free;
              end;
            end;
          end;
      end;
      Application.Run;end.
      

  5.   

    http://www.delphibbs.com/delphibbs/dispq.asp?lid=1730025
      

  6.   

    blueshrimp(天空还下着沙我就是啊,你两边拿分啊,赚了   :)