我下载了并试了一下,这开始菜单好像是Windows本身的吧,我猜可能用了其它的软件
修改了Windows的资源,我以前用SOFTICE修改了一下,后来Windows出现非法操作,
不知道他是怎么改的,有没有高手能解决此问题???!!!

解决方案 »

  1.   

    确实是高手所编
    它是用vxd技术实现的
    但我想是否可以用钩子注入的方法实现
    没试过
      

  2.   

    技术上没有甚麽,我能实现其中的一部分,但无法完全模仿出来,你下载的程序都是自己写了
    按纽的控件代码你看一下,大家可以共同研究
    procedure TForm1.ShowStartButton(bvisible : boolean);
    var 
      h : hwnd; 
      TaskWindow : hwnd; 
    begin 
      if bvisible then 
      begin 
        h := FindWindowEx(GetDesktopWindow,0,'Button',nil); 
        TaskWindow := FindWindow('Shell_TrayWnd', nil); 
        ShowWindow(h,1); 
        Windows.SetParent(h,TaskWindow); 
      end else 
      begin 
        h := FindWindowEx(FindWindow('Shell_TrayWnd', nil),0,'Button',nil); 
        ShowWindow(h,0);
        Windows.SetParent(h,0); 
      end;
    end;procedure TForm1.Button4Click(Sender: TObject);
    begin
      ShowStartButton(false); // or true to reshow end;procedure TForm1.Button5Click(Sender: TObject);
    begin
    ShowStartButton(true); // or true to reshow end;procedure TForm1.Button6Click(Sender: TObject);
    var 
      b: TButton;  // or another Type of button
      h, Window : hwnd; 
    begin
      Window := FindWindow('Shell_TrayWnd', nil);
      b := TButton.Create(nil);
     b.ParentWindow := handle;
      //b.Parent:=form1;
      b.Glyph.LoadFromfile('f:\start.bmp');
      b.Caption := '';
      b.Width := 51;
      b.font.style := [fsbold];
      b.Visible:=true;
    end; 
      

  3.   

    我觉得可以换一个思路,找到“桌面”这个窗口,隐藏,隐藏工具栏,这时候开始按牛也没有了,然后自己做一个form,上面放一个bitbtn之类的东西,点击弹处另一个menu(最好是一个像菜单的form), 问题基本就解决了。我看美萍使用的是就是这个方法
      

  4.   

    Windows 开始菜单真的这么难替换吗?不知道哪位高手可以把它换掉的,请赐教!如果用钩子,怎么钩呢?(我不会钩子)还有就是怎么才能弹出像 Windows 那样的菜单?
      

  5.   

    同意darrell(horns tiger)的想法,先把开始按键隐藏,然后动态的创建一个bitbtn,让它的父窗口为'Shell_TrayWnd',left和top为0,再加上一个图片,调整大小,最后对这个按键写代码就可以实现了,完全可以达到你的要求
      

  6.   

    怎么不行,明明可以的,我试过的
    procedure TForm1.Button3Click(Sender: TObject);
    var
      b: TButton;
    begin
      h := FindWindowEx(FindWindow('Shell_TrayWnd', nil),0,'Button',nil);
      ShowWindow(h,0);
      b := TButton.Create(Self);
      b.Visible := true;
      b.Width := 50;
      b.Height := 21;
      b.Caption := '我的开始';
      b.ParentWindow := FindWindow('Shell_TrayWnd', nil);
      b.Left := 0;
      b.Top := 0;
    end;
    然后加上自己的处理菜单代码
      

  7.   

    To xzm2000(不不)(每天都要进步):
    怎么加图片啊?还有就是如何添加自己的处理菜单代码呢?
    能不能给个完整例子啊?
      

  8.   

    动态创建一个bitbtn就可以加入图片了,然后加入一个popupmenu
      b := TButton.Create(Self);
      b.glyph.loadfromfile('c:\start.bmp');
      b.onchick := mychick;
      b.Visible := true;
      b.Width := 50;
      b.Height := 21;
      b.Caption := '我的开始';
      b.ParentWindow := FindWindow('Shell_TrayWnd', nil);
      b.Left := 0;
      b.Top := 0;procedure mychick(sender: tobject);
    begin
      popupmenu1.popup(x, y);  //x,y是坐标
    end;
      

  9.   

    b := TButton.Create(Self); -> b := TBitbtn.Create(Self);