Y yysun Unregistered / Unconfirmed GUEST, unregistred user! 1998-09-30 #1 Win95/Win98关闭时,如果我的程序是开着的,下次系统启动时, 如何让我的程序自动启动并恢复以前的状态(例如打开某些文件)呢?
X XiePro Unregistered / Unconfirmed GUEST, unregistred user! 1998-09-30 #2 如需自动启动程序,请将你的程序放在WIN95/98的“启动”程序组中。 恢复状态可在程序启动后将打开的文件名或其他状态信息记录在INI文件或注册表 中。具体使用方法见DELPHI的Help/Examples/Regini目录。
如需自动启动程序,请将你的程序放在WIN95/98的“启动”程序组中。 恢复状态可在程序启动后将打开的文件名或其他状态信息记录在INI文件或注册表 中。具体使用方法见DELPHI的Help/Examples/Regini目录。
Y yysun Unregistered / Unconfirmed GUEST, unregistred user! 1998-09-30 #3 谢谢,XiePro, 我的前提是“Win95/Win98关闭时,如果我的程序是开着的 ...", 而不是每次都自动启动啊。
赵 赵建东 Unregistered / Unconfirmed GUEST, unregistred user! 1998-10-01 #4 很抱歉,我对Windows系统还不熟悉,不知如何利用系统关机这个事件,能利用是上策 变通的办法是: 在你的程序打开后,在注册表或程序配置文件写一个"开"标记,程序正常关闭把它 置关. 而你的程序放在程序放在WIN95/98的“启动”程序组中,启动时首先检查上次开关 标记,如是标记=False,你的程序则马上退出, =True,恢复上次的.....
很抱歉,我对Windows系统还不熟悉,不知如何利用系统关机这个事件,能利用是上策 变通的办法是: 在你的程序打开后,在注册表或程序配置文件写一个"开"标记,程序正常关闭把它 置关. 而你的程序放在程序放在WIN95/98的“启动”程序组中,启动时首先检查上次开关 标记,如是标记=False,你的程序则马上退出, =True,恢复上次的.....
D dwwang Unregistered / Unconfirmed GUEST, unregistred user! 1998-10-01 #5 我想老孙的意思是它的程序要象Win95的Folder一样, 可以开机后自动恢复状态。 如果是这个意思的话,恕我直言,你的建议是个典型 的逻辑陷阱,无论如何也行不通的。
L liwei Unregistered / Unconfirmed GUEST, unregistred user! 1998-10-01 #6 在注册表中有一个键,叫RUNONCE, 意思即为:只运行一次, 你可先用 REGEDIT找出该键, 然后在你的程序中将你的程序路径名写进该键值, 当正常退出时删除此键, 否则保留. 则下次再启用机器时, 你的程序会被运行,运行后系统自动删去该键. WINDOWS的FOLDER就是用的这个方法.
在注册表中有一个键,叫RUNONCE, 意思即为:只运行一次, 你可先用 REGEDIT找出该键, 然后在你的程序中将你的程序路径名写进该键值, 当正常退出时删除此键, 否则保留. 则下次再启用机器时, 你的程序会被运行,运行后系统自动删去该键. WINDOWS的FOLDER就是用的这个方法.
L littlegrass Unregistered / Unconfirmed GUEST, unregistred user! 1998-10-01 #7 ; 首先,在程序刚运行时,在注册表HKEY_LOCAL_MACHINE /SOFTWARE/Microsoft/Windows/CurrentVersion/Run中设置 为自动启动; 然后,在程序结束时设置成两种退出方式: 一、由用户选择退出菜单或按钮来结束程序; 二、由Windows95系统关闭时自动结束程序; 对于第一种方式,程序先应删除自动启动设置,然后再 结束运行。可放在退出菜单或按钮OnClick事件; 对于第二种方式,则不删除自动启动设置,立即结束程序。
; 首先,在程序刚运行时,在注册表HKEY_LOCAL_MACHINE /SOFTWARE/Microsoft/Windows/CurrentVersion/Run中设置 为自动启动; 然后,在程序结束时设置成两种退出方式: 一、由用户选择退出菜单或按钮来结束程序; 二、由Windows95系统关闭时自动结束程序; 对于第一种方式,程序先应删除自动启动设置,然后再 结束运行。可放在退出菜单或按钮OnClick事件; 对于第二种方式,则不删除自动启动设置,立即结束程序。
X XiePro Unregistered / Unconfirmed GUEST, unregistred user! 1998-10-01 #8 WIN95/98的“启动”程序组是建立在目录“[WINDOWS]/Start Menu/Programs/ 启动/”上的,即系统启动时自动运行此目录下的程序或快捷方式。 所以你可以在自己的程序启动后(MainForm.OnCreate事件),进入上述路径建立 或拷贝一个快捷方式;在程序关闭时(MainForm.OnClose事件)删除之。
WIN95/98的“启动”程序组是建立在目录“[WINDOWS]/Start Menu/Programs/ 启动/”上的,即系统启动时自动运行此目录下的程序或快捷方式。 所以你可以在自己的程序启动后(MainForm.OnCreate事件),进入上述路径建立 或拷贝一个快捷方式;在程序关闭时(MainForm.OnClose事件)删除之。
C CJ Unregistered / Unconfirmed GUEST, unregistred user! 1998-10-10 #9 1 先截取ONCLOSE事件, 2 包程序状态加入INI文件或者REGISTRY,可以用TINIFILE,TREGISTRY 3 加入启动 4 自动移出启动
D dwwang Unregistered / Unconfirmed GUEST, unregistred user! 1998-10-11 #10 咦?yysun,你没有看见tqz自问自答的问题中有一个提醒你注意吗? 不过他那个问题说Delphi对这个EndSession Message Bypass掉了, 我不知道什么意思,应该是可以接收到这个Message的。 见下面这段例子: TForm1 = class(TForm) ... procedure EndSMsg(var T : TMessage);message WM_QUERYENDSESSION; ... end; procedure TForm1.EndSMsg(var T : TMessage); begin // return false if you want to cancel logoff or shutdown T.result := true; if T.lparam <> ENDSESSION_LOGOFF then begin //shutting down end else begin //loging off end; end; 这样再结合liwei说的RUNONCE的方法,应该就万无一失了。
咦?yysun,你没有看见tqz自问自答的问题中有一个提醒你注意吗? 不过他那个问题说Delphi对这个EndSession Message Bypass掉了, 我不知道什么意思,应该是可以接收到这个Message的。 见下面这段例子: TForm1 = class(TForm) ... procedure EndSMsg(var T : TMessage);message WM_QUERYENDSESSION; ... end; procedure TForm1.EndSMsg(var T : TMessage); begin // return false if you want to cancel logoff or shutdown T.result := true; if T.lparam <> ENDSESSION_LOGOFF then begin //shutting down end else begin //loging off end; end; 这样再结合liwei说的RUNONCE的方法,应该就万无一失了。
T tqz Unregistered / Unconfirmed GUEST, unregistred user! 1998-10-11 #11 我的意思是说在Windows 关闭时,OnClose事件不会被调用,因为FormClose事件 没有调用。不是WM_ENDSESSION 消息没有反应。 我想应该在WM_ENDSESSION 的消息处理中写登记表(RunOnce),因为收到WM_QUERYENDSESSION 不代表windows一定会退出。
我的意思是说在Windows 关闭时,OnClose事件不会被调用,因为FormClose事件 没有调用。不是WM_ENDSESSION 消息没有反应。 我想应该在WM_ENDSESSION 的消息处理中写登记表(RunOnce),因为收到WM_QUERYENDSESSION 不代表windows一定会退出。