如何用自己的菜单替换程序的系统菜单,就象winamp3 一样,在任务栏上是自己的菜单?

解决方案 »

  1.   

    unit Unit1; interface uses 
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, 
      StdCtrls, Buttons; type 
      TForm1 = class(TForm) 
        BitBtn1: TBitBtn; 
        procedure FormCreate(Sender: TObject); 
      private 
        procedure WMSysCommand(VAR Message: TWMSysCommand); message WM_SYSCOMMAND; 
        { Private-Deklarationen } 
      public 
        { Public-Deklarationen } 
      end; var 
      Form1: TForm1; implementation 
      uses Unit2; {$R *.DFM} procedure TForm1.WMSysCommand(var Message: TWMSysCommand); 
    begin 
      Inherited; 
      IF Message.CmdType = $F200  THEN form2.showmodal 
    end; procedure TForm1.FormCreate(Sender: TObject); 
    var s : string; 
    begin 
      s := '&Copyright...'; 
      AppendMenu(GetSystemMenu(Handle, False), MF_STRING, $F200, PChar(s)); 
    end; end.
      

  2.   

    你可以取得系统菜单的局柄还控制,好久不玩这些东西了好像是
    getsystemMenu不保证对!现在使用Linux不好测试!
      

  3.   

    GetSystemMenu获得句柄
    AppendMenu添加菜单到系统菜单
    ModifyMenu修改
    然后定义菜单事件
      

  4.   

    我用
        DestroyMenu(getsystemmenu(application.handle,false));
        SetMenu(getsystemmenu(application.handle,false),MainPopupMenu.Handle);可以用自己的MainPopupMenu,替换掉系统菜单,但是不能接收任何的消息,请问怎么办?如何使这个菜单生效?
      

  5.   


    这个问题在N(N>6)个月前已进行过深入探讨~
    因为现在CSDN没能了查询功能,我也就找不出来了~提示:
    1、不是单纯使用GetSystemMenu, AppendMenu等函数可以实现的~~
    2、也不是Inherited WM_SYSCOMMAND这个消息~
      

  6.   

    http://kingron.myetang.com/document/delphi/wjjsoft_223.html