我写的一个记录关机时间的程序。
只想在关机前运行一下,把时间记录下来就可以了。不想常驻内存。
我的程序塞进到哪儿可以实现啊? 
最好是类似于注册表里的RUN项一样。 自动在开机是启动。
当然可以塞在某个后台exe里就最好了。跟病毒一样。 呵呵 有点异想天开了。

解决方案 »

  1.   

    不是,写个API钩子,接管系统的ExitWindowsEx这个函数,把入口改成你的,然后在你的程序中执行关机操作。
      

  2.   

    呵呵,这个没玩过。 是要写个全局的Dll嘛? 然后在DLL里写记录关机的东东?
      

  3.   

    拦截 WM_QUERYENDSESSION 消息
    void __fastcall TForm1::WndProc(Messages::TMessage & Message)
    {
        TForm::WndProc(Message);
        if(Message.Msg==WM_QUERYENDSESSION)
        {
            Message.Result=0;//好像返回0才是禁止关机吧。
        }
        
    }
      

  4.   

    应该按: prettywolf(多情自古空余恨,此恨绵绵无绝期) ( ) 的方法。怎么做就不知道了
      

  5.   

    拦截 WM_QUERYENDSESSION 消息
      

  6.   

    有一点要求是要说明的,免的各位看错题意。
    1. 用WM_QUERTENDSESSION 消息来实现是很简单的事。
       但前提是你要有一个窗口程序要一直在机子上运行。
       而我现在的要求是程序或进程在开机时记录时间,然后就退出了。2. 前面有人说到了用hook 。 但是在我的程序没有运行的时候,由谁来加载我的钩子啊?
    (我想一般是全局DLL 才能截取所有消息。由谁加载是个问题。)3. 写API钩子,接管系统的ExitWindowsEx这个函数,把入口改成自己的。 
      这个有点不明白:
      我该如何去接管系统的ExitWindowEx这个函数呢?这方面的资料好像很少啊。
     
    希望大家讨论讨论。
      
      

  7.   

    其实这件事应该在组策略里做的。开始/运行打 gpedit.msc"本地计算机"策略/计算机配置/Windows设置/脚本(启动/关闭)/关机做一个脚本,.bat .cmd .vbs .js 都可以,调用你的程序就可以了。
      

  8.   

    呵呵, 要得就是这个了。 
    用windows这么多年,还从来不知道还有一个"组策略"这个东东。