procedure TForm1.WMEndSession(var Message: TWMEndSession);
var
 Reg: TRegistry;
begin
 Reg := TRegistry.Create;
 try
   Reg.RootKey := HKEY_CURRENT_USER;
   if Reg.OpenKey('\Software\Microsoft\Windows\CurrentVersion\RunOnce', 
True)
   then Reg.WriteString('MyApp','"' + ParamStr(0) + '"');
 finally
   Reg.CloseKey;
   Reg.Free;
   inherited;
 end;
end;
procedure TForm3.CheckBox1Click(Sender: TObject);  begin
   TForm3.WMEndSession();  //这里实参该是什么?
  end;

解决方案 »

  1.   

    声明变量
    var 
      WMEndSession: TWMEndSession;
    这样使用
      with WMEndSession do
      begin
        Msg := WM_ENDSESSION;
        EndSession := true;
      end;
      WMEndSession(WMEndSession);
    其实WMEndSession的成员也可以不赋值,因为你代码里面没有使用。
      

  2.   

    ghostmirror(mirror) :WM_ENDSESSION与TWMEndSession的类型不同.编译不能通过.里面不带参数也不行.
      

  3.   

    如果是对消息进行操做的话..那应该是这样的...
    procedrue WMENDSession(var Msg:TWMEndSession);message WM_ENDSESSION;
    begin 
       ....//你的实现代码..如果要取消默认的操作的话..不要加inherited
    end;调用的话只要真接调就可以了..
      

  4.   

    多谢大家帮忙,问题我已经解决了.因为后面没有调用WMEndSeesion过程,所以就干脆不用了.散分给大家