paip.提高用户体验----增添开始菜单类似360小助手按钮总结 (补充c925)

作者Attilax ,  EMAIL:1466519819@qq.com 
来源:attilax的专栏
地址:http://blog.csdn.net/attilax

1.加按钮
/
昨日.就是可以找到Shell_TrayWnd ..就是CreateWindowEx fail..今天用API Monitor V2 (Alpha-r5) 跟踪累挂..是个好东东.也能API上断点调试了...
发现CLASS,TITLE是乱码,  我的代码黑头是 (LPCWSTR)"button" ..不个哪更改成 L"button",                   L"atiBtn",一挂噪好兰..阿.原来中个阿..

其实这个按钮不是个扩展..走是个普通窗体..袖管哪个窗体也能了..

2.扩展位置
/
按钮加是加上兰.就是内个位置腾不开..over着了..API Monitor 跟踪累挂360小助手的.好像是有TIMMER 定时 MoveWindow了..走做磊个timmer,定时刷新ReBarWindow32的位置..

3.任务栏结构如下:
// 
Shell_TrayWnd
     |- Button
     |- TrayNotifyWnd
     |        |- TrayClockWClass
     |        \- ToolbarWindow32
     \- ReBarWindow32
              |- MSTaskSwWClass
              |         \- SysTabControl32
              \- ToolbarWindow32

4.源码
--------------------

//AppWnd= FindWindow(L"Notepad",NULL );
    //add satrt menu buttonNULL  CreateWindow  Shell_TrayWnd
find_taskbar:
    HWND WinhandTask=   FindWindow(L"Shell_TrayWnd",NULL);

//WinhandTask= FindWindowEx(WinhandTask, 0,L"Button", NULL);
 qDebug()<<"---ati:WinhandTask-----"<<WinhandTask;

move_toolbar:

DWORD       cs_style=WS_VISIBLE ;  // WS_CHILD | |

HWND  ReBarWin=FindWindowExW (WinhandTask, NULL, L"ReBarWindow32", NULL );
 qDebug()<<"---ati:ReBarWin-----"<<ReBarWin;

// WINBOOL ReBarWinMoveResult=  MoveWindow ( ReBarWin, 0, 0, 0x0000006e,700, TRUE );
//  qDebug()<<"---ati:ReBarWinMoveResultaa-----"<<ReBarWinMoveResult;
WINBOOL  ReBarWinMoveResult=  MoveWindow ( ReBarWin, 0, 0, 0x0000006e,600, TRUE );
 qDebug()<<"---ati:ReBarWinMoveResult-----"<<ReBarWinMoveResult;

ReBarWinMoveResult=  MoveWindow ( ReBarWin, 0, 100, 0x0000006e,600, TRUE );
  qDebug()<<"---ati:ReBarWinMoveResult-----"<<ReBarWinMoveResult;

create_start_menu_button:

//   WS_BORDER;
   int  cs_x= 1;
   int      cs_y= 30;
   int       cs_cx= 45;
   int       cs_cy= 30;

/*
   //WS_EX_APPWINDOW WS_EX_CLIENTEDGE
   //WS_EX_LAYERED  temin effect
   //WS_VISIBLE|WS_OVERLAPPED|WS_SYSMENU|WS_POPUP
   //    WS_CHILD | WS_VISIBLE | WS_BORDER,
   //WS_OVERLAPPED
//   Over lapped
  // 创建一个重叠的窗口,有一个标题栏和一个边框,等同于WS_TILED风格
   //WS_EX_APPWINDOW    当窗口可视时,强制位于任务栏顶层 WS_EX_APPWINDOW
   // | WS_VISIBLE|  WS_OVERLAPPED
   //WS_POPUP     创建pop-up窗口,不能与WS_CHILD风格共用
   //WS_EX_TOPMOST    创建窗口在所有未设置该属性的窗口的上面,并保持这一状态,甚至窗口被停用,添加或删除这一风格,使用SetWindowPos函数
   //WS_EX_TOOLWINDOW
   //WS_EX_LAYERED  WS_CLIPSIBLINGS
   */
   HWND mybtnc922= CreateWindowEx(   WS_EX_TOPMOST|WS_EX_TOOLWINDOW  ,
                                L"button",
                                L"atiBtn",
                         WS_VISIBLE|WS_POPUP,
                                  cs_x,
                                  cs_y,
                                  cs_cx,
                                  cs_cy,
                                 WinhandTask,
                                  NULL,
                                   (HINSTANCE)  0x00400000,
                                  NULL);
//    CreateWindowEx (    WS_EX_CLIENTEDGE,
//                        L"button",
//                       L"contrl title",
//                        WS_VISIBLE  ,
//                        200,
//                        50,
//                        160,
//                        70,
//                        AppWnd,
//                        NULL ,
//                        NULL,
//                        NULL
//                        );
qDebug()<<"---ati:mybtnc922-----"<<mybtnc922;
 qDebug()<<"---ati:WS_VISIBLE-----"<<(int)WS_VISIBLE;

//SetParent(mybtnc922,WinhandTask);

//move_btn:
// WINBOOL  mybtnc922_move_btn_result=  MoveWindow ( mybtnc922, 5, 60, 45,30, TRUE );
//  qDebug()<<"---ati:move_btn-----"<<mybtnc922_move_btn_result;

//move_btn2:
//    mybtnc922_move_btn_result=  MoveWindow ( mybtnc922, 10, 60, 45,30, TRUE );
//  qDebug()<<"---ati:move_btn-----"<<mybtnc922_move_btn_result;

//  ReBarWinMoveResult=  MoveWindow ( ReBarWin, 0, 100, 0x0000006e,600, TRUE );
//qDebug()<<"---ati:ReBarWinMoveResult-----"<<ReBarWinMoveResult;

///end start menu btn
 qDebug()<<GetLastError();

create_start_menu_button_End:

timer_4_refresh_taskbar:
 QTimer* timer=new QTimer();
 taskbar* taskbarCls=new taskbar();

QObject:: connect(timer,SIGNAL(timeout()),taskbarCls,SLOT(refresh_taskbar()));
     timer->start(200);

参考:
paip.提高用户体验----增添开始菜单类似360小助手按钮总结
WinAPI  FindWindow、FindWindowEx - 查找窗口 - 万一 - 博客园.htm
VC++ 高手进 :findwindow函数怎么获取不到这个窗口?_百度知道.htm
用C++ Builder在Windows“开始”按钮上绘图 - CSDN论坛 - CSDN.NET.htm
C# CreateWindowEx创建按钮事件 - CSDN论坛 - CSDN.NET.htm
CreateWindowEx_百度百科.htm
CreateWindowEx函数 作用翻译 (一)_idol_新浪博客.htm.lnk
CreateWindowEx函数 作用翻译 (二)_idol_新浪博客.htm
关于CreateWindowEx的显示问题 - CSDN论坛 - CSDN.NET.htm
如何用CreateWindowEx创建一个BUTTON(VC,Win32)_百度知道.htm
FindWindow返回句柄失败, GetLastError()却返回0!!!! 易语言俱乐部 - 易语言汉语编程官方论坛.htm
HOW TO:将程序窗口嵌入到任务栏中 - Alexis·M - 博客频道 - CSDN.NET.htm

D:\Program Files\360\360Safe\SoftMgr\SML\SoftMgrLite.exe

paip.提高用户体验----增添开始菜单类似360小助手按钮总结 (补充c925)相关推荐

  1. 网站哪些功能可以提高用户体验度?

    点击下方"青年码农"关注 回复"源码"可获取软件,源码等资料 ​ 网站用户体验是指用户在使用网站时所感受到的感觉和情感.它包括用户与网站的互动.使用过程中的舒适 ...

  2. 微信小程序开发11 数据预取:合理缓存提高用户体验

    你好,我是俊鹏,今天我带你学习怎么通过微信提供的数据预取能力,提高小程序的用户体验. 数据预取也叫数据预加载,顾名思义,这项能力能提前加载未来要使用的数据,然后缓存到本地.这样一来,你在使用这些数据时 ...

  3. 软件测试人员如何去分析及提高用户体验?

    用户体验就是一种用户在使用产品时所建立起来的心理感受.心理感受是纯主观性的,也就带有一定的不确定因素,不过,在界定用户基本确定的情况下,其用户体验的共性是能够通过良好的设计来实现的.用户体验的本质,就 ...

  4. 巧用Ajax的beforeSend 提高用户体验--防止重复数据

    巧用Ajax的beforeSend 提高用户体验 jQuery是经常使用的一个开源js框架,其中的$.ajax请求中有一个beforeSend方法,用于在向服务器发送请求前执行一些动作. 具体可参考j ...

  5. 前端如何实现图片懒加载(lazyload) 提高用户体验

    定义 图片懒加载又称图片延时加载.惰性加载,即在用户需要使用图片的时候加载,这样可以减少请求,节省带宽,提高页面加载速度,相对的,也能减少服务器压力. 惰性加载是程序人性化的一种体现,提高用户体验,防 ...

  6. 中山网络推广浅谈网站提高用户体验要做好的5点!

    中山网络推广表示,企业做网站优化的很大一部分目的是为了能更好地营销.销售自己的产品,而实现销售的工作就需要有客户,所以网站在优化时做好用户体验也非常重要,那么该怎样才能提高用户体验呢?下面中山网络推广 ...

  7. paip.提升用户体验--提升java的热部署热更新能力

    paip.提升用户体验--提升java的热部署热更新能力 想让java做到php那么好的热部署能力  "fix online"/在线修复吗??直接在服务器上修改源码生效,无需重启应 ...

  8. 手机uc怎么放大页面_手机网站怎样做可以提高用户体验度?——竹晨网络

    目前,手机已经占据了人们大多数的闲暇时间,互联网的流量开始逐渐向移动端倾斜,重视移动端的用户体验,就可以给客户端增加很多意想不到的功能.但是还是有很多公司和站长不知道手机网站应该怎么建才能符合用户的使 ...

  9. 图解浏览器缓存,教你提高用户体验

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由前端林子发表于云+社区专栏 浏览器缓存,是浏览器端保存数据,用于快速读取或避免重复资源请求的优化机制,有效的缓存使用可以避免重复的网络 ...

  10. UX最佳实践:提高用户体验影响力的艺术

    <UX最佳实践:提高用户体验影响力的艺术> 基本信息 原书名:UX Best Practices How to Achieve More Impact with User Experien ...

最新文章

  1. 代码和XIB结合开发
  2. MSC EASY5 2020中文版
  3. Java关键字(二)——native
  4. Tensorflow利用函数修饰符@tf.custom_gradients自定义函数梯度
  5. ajax改变div内容,jquery ajax双击div可直接修改div中的内容
  6. 杭电5256 序列变换(LIS)
  7. iOS视频采集实战(AVCaptureSession)
  8. Asp.net can do Native Code also can do it(updated)
  9. Android项目文件的目录结构(1)
  10. 基于Matlab App Designer的语音信号分析与处理(三):App的设计
  11. 计算机光盘无法格式化,win10无法格式化dvd光盘
  12. uniapp实现贪吃蛇小游戏
  13. 2011年北邮各组组线
  14. AirPods pro 连接Macbook pro左耳无声音
  15. 阮一峰:炫耀从来不是我的动机,好奇才是(图灵访谈)
  16. ISCC2022-MISC-降维打击
  17. 数据结构课程设计(部分选题)
  18. iptable使用笔记
  19. Tita OKR分享:如何用OKR开周会?
  20. 梳理PSS和SSS的位置

热门文章

  1. find和xargs的使用
  2. linux下磁盘分区方法详解
  3. 【云栖精选】6篇深度!解除MySQL数据同步疑惑+Docker技术示例
  4. 怎样正确的使用Cookie的Path详细解析
  5. 设计模式17---设计模式之模板方法模式(Template Method)(行为型)
  6. python之sqlalchemy的使用
  7. 011 使用AOP操作注解
  8. 分享升级架构师路上的体会,兼说我为什么有挣钱紧迫感
  9. 单源最短路(spfa+Dijkstra)附数据
  10. html5 sessionStorage 与 localStorage存储