日期:2014-05-17  浏览次数:21497 次

如何在任务栏上增加一个类似于开始按钮的按钮,可参考360软件小助手或QQ桌面小助手
本帖最后由 Gary87517 于 2013-01-21 16:13:41 编辑
RT,研究了很久无果。
我要做的这个软件类似于360软件小助手、QQ桌面小助手。

托盘图标完全满足不了我现在做的这个软件。


这个按钮并不是什么WIN7上的“将此程序锁定到任务栏”这么简单。
他完完全全是另外一个开始按钮,因为他的位置在开始按钮和其他“将此程序锁定到任务栏”的图标之间的一个按钮
求高手解答。

------解决方案--------------------
关注下。八成就是一个API的事,但不知道就是不知道= = 我觉得扒翻windows7开发接口会有收获。。。
------解决方案--------------------
引用:
5楼的也不是我想要的。难道就没有人用过这2款软件?

我感觉思路应该是获取到系统Menu的句柄(GetSystemMenu)
然后在这个Menu上增加按钮


你感觉那个啥呢,不如看msdn的帮助吧。。。
------解决方案--------------------
本帖最后由 bdmh 于 2013-01-23 14:04:21 编辑
下面是一段delphi代码,你在c# 中引入api 即可

procedure TForm1.Button1Click(Sender: TObject);
var
  i:HWND;
  cs:CREATESTRUCT;
begin
//  i := FindWindowEx(FindWindow('Shell_TrayWnd', nil), 0, 'Button', nil);
  i := FindWindow('Shell_TrayWnd', nil);//这里可以通过FindWindowEx找到开始按钮,并得到他的按钮区域( GetWindowRect ),并以此来指定新按钮的区域
cs.lpszClass:= 'Button';
cs.lpszName:= '我的按钮';
cs.style:= WS_CHILD or WS_VISIBLE or WS_BORDER;
cs.hMenu:= 0;
cs.hwndParent:= i;
cs.lpCreateParams:= nil;
cs.x:= 100;
cs.y:= 0;
cs.cx:= 20;
cs.cy:= 30;
cs.hInstance:= 0;
i := CreateWindow(cs.lpszClass,
   cs.lpszName,
   cs.style,
   cs.x,
   cs.y,
   cs.cx,
   cs.cy,
   cs.hwndParent,
   cs.hMenu,
   cs.hInstance,
   cs.lpCreateParams);
end;

就是右边这个白色的