这个程序是如何把自己放进taskbar中的呢?
谁能讲讲原理
http://www.atmaxsoft.com/download.html
最好制作一个demo

解决方案 »

  1.   

    用第三方空件或自己写代码都可以啊
    const
      WM_NID=WM_USER+1000;NotifyIcon: TNotifyIconData;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
      Action := caFree;
      Shell_NotifyIcon(NIM_DELETE,@NotifyIcon);
    end;procedure TForm1.FormCreate(Sender: TObject);
    begin
      with NotifyIcon do
      begin
        cbSize:=SizeOf(TNotifyIconData);
        Wnd:=Handle;   //指向当前窗体Form1的句柄
        uID:=1;
        uFlags := NIF_MESSAGE or NIF_ICON or NIF_TIP;
        uCallBackMessage:=WM_NID;
        hIcon:=Application.Icon.Handle;
      end;
      //把设置好的变量NotifyIcon加入到系统中以便处理
      Shell_NotifyIcon(NIM_ADD,@NotifyIcon);
    end;
      

  2.   

    http://www.microsoft.com/msj/1199/bandobj/bandobj.aspx
      

  3.   


    感觉和这个toolbar不是一回事,这个search bar肯定不能移到最右边
      

  4.   

    给你提供一个思路,我没有再往下研究,不过这个方法肯定行:procedure TForm1.Button5Click(Sender: TObject);
    var
      frm2 : TForm2;
      wnd  : HWND;
      Rect : TRect;
    begin
      // 找到任务栏窗体句柄
      wnd := FindWindow('Shell_TrayWnd', nil);
     // 得到托盘区的窗口句柄
      wnd := FindWindowEx(wnd, 0, 'TrayNotifyWnd', nil);
      // 得到托盘区的大小
      GetWindowRect(wnd, Rect);
      // 以托盘窗口句柄为父句柄创建 TForm2
      frm2 := TForm2.CreateParented(wnd);
      // 设置 frm2 在 托盘区的显示
      SetWindowPos(frm2.Handle, 0, 0, 3,  50, Rect.Bottom - Rect.Top - 6, SWP_SHOWWINDOW + SWP_NOACTIVATE);
    end;
    这里没法上传本地的截图,你按照上面的代码执行一下,就能看到效果。TForm2 可以是空窗体,或者放个 TLabel,改变下颜色,这样明显些。
      

  5.   

    9楼的方法可以一试不过用spy++可以看到,那个软件的窗体的父窗体是任务栏而不是托盘区
      

  6.   

    你到以下地址去找找,可能找得到你需要的答案。
    http://iinsnian.cnblogs.com/
    这个地址里介绍了很多DELPHI的技巧,不知道你的运气好不好。
      

  7.   

    Adayuer办法可行呀,怎么不去在深入做一下,不要一下就否定
      

  8.   

    哈,有点意思,真TMD有创意不过这东东肯定不是托盘图标应该托盘上的时钟是一个类型的的来着
      

  9.   

    9楼的方法不行吗?不可能的,这就是窗体句柄与大小的问题,至Rect,你应该相应的缩小一点,这样效果才好些.
      

  10.   


    I think first of all you need to unlock the taskbar
    then... will check it later