当点击 右下角的三角形时 任务栏刷新后  就重新排版了 按钮就看不见或者看不全了 可以进行定时设置(有更好的方法请告诉我一声··)

    bool ReBarWinMoveResult = Win32.MoveWindow(ReBarWindow32, rc_temp.X + rect.X, 0, rc_temp.Width - rect.Width, rc_temp.Height, true);

private void Form1_Load(object sender, EventArgs e){IntPtr Shell_TrayWnd = Win32.FindWindow("Shell_TrayWnd", null);IntPtr ReBarWindow32 = Win32.FindWindowEx(Shell_TrayWnd, IntPtr.Zero, "ReBarWindow32", null);Rectangle rect = new Rectangle(50,0,100,30);uint style = (uint)(Aid.Win32.WindowStyles.WS_CHILD | Aid.Win32.WindowStyles.WS_VISIBLE | Aid.Win32.WindowStyles.WS_CLIPSIBLINGS); IntPtr hwnd = Win32.CreateWindowEx(0, "Button","测试按钮",style,rect.X, rect.Y, rect.Width, rect.Height,Shell_TrayWnd,IntPtr.Zero,IntPtr.Zero,0);Rectangle rc_temp = getREC(ReBarWindow32);bool ReBarWinMoveResult = Win32.MoveWindow(ReBarWindow32, rc_temp.X + rect.X, 0, rc_temp.Width - rect.Width, rc_temp.Height, true);}public Rectangle getREC(IntPtr intptr){Rectangle rc_temp = new Rectangle();Win32.GetWindowRect(intptr, ref rc_temp);rc_temp.Size = new Size(rc_temp.Width - rc_temp.X, rc_temp.Height - rc_temp.Top);return rc_temp;}

win32.cs

class Win32{[DllImport("user32.dll", EntryPoint = "FindWindow")]public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);[DllImport("user32.dll", EntryPoint = "FindWindowEx")]public static extern int FindWindowEx(int hWnd1, int hWnd2, string lpsz1, string lpsz2);[DllImport("user32.dll", EntryPoint = "FindWindowEx")]public static extern IntPtr FindWindowEx(IntPtr hWnd1, IntPtr hWnd2, string lpsz1, string lpsz2);[DllImport("user32.dll", EntryPoint = "SendMessage")]public static extern int SendMessage(int hwnd, int wMsg, int wParam, ref int lParam);[DllImport("user32.dll", EntryPoint = "SendMessage")]public static extern int SendMessage(int hwnd, int wMsg, string wParam, string lParam);[DllImport("user32.dll", CharSet = CharSet.Auto)]public static extern int GetClassName(IntPtr hWnd, StringBuilder lpClassName, int nMaxCount);[DllImport("user32.dll")][return: MarshalAs(UnmanagedType.Bool)]public static extern bool GetWindowRect(IntPtr hWnd, ref RECT lpRect);[StructLayout(LayoutKind.Sequential)]public struct RECT{public int Left; //最左坐标public int Top; //最上坐标public int Right; //最右坐标public int Bottom; //最下坐标}//获取窗口标题[DllImport("user32", SetLastError = true)]public static extern int GetWindowText(IntPtr hWnd, //窗口句柄StringBuilder lpString, //标题int nMaxCount //最大值);[DllImport("user32.dll")]public static extern IntPtr SetParent(IntPtr cilHwin, IntPtr parHwin);[DllImport("user32.dll")]public static extern IntPtr GetParent(IntPtr chiHwin);//[DllImport("user32.dll")]//public static extern bool GetWindowRect(IntPtr Hwin, ref Rectangle rect);[DllImport("user32.dll", EntryPoint = "GetWindowRect")]public static extern IntPtr GetWindowRect(IntPtr hwnd, ref Rectangle lpRect);//IntPtr inp = IntPtr.Zero;[DllImport("user32.dll")]public extern static IntPtr GetDesktopWindow();[DllImport("user32.dll")]public extern static bool SetLayeredWindowAttributes(IntPtr hwnd, uint crKey, byte bAlpha, uint dwFlags);public static uint LWA_COLORKEY = 0x00000001;public static uint LWA_ALPHA = 0x00000002;public static uint WS_EX_LAYERED = 0x80000;[DllImport("user32.dll")]public extern static uint SetWindowLong(IntPtr hwnd, int nIndex, uint dwNewLong);[DllImport("user32.dll")]public extern static uint GetWindowLong(IntPtr hwnd, int nIndex);public enum WindowStyle : int { GWL_EXSTYLE = -20 }public enum ExWindowStyle : uint { WS_EX_LAYERED = 0x00080000 }[DllImport("user32.dll", CharSet = CharSet.Auto)]public static extern IntPtr CreateWindowEx(int dwExStyle,                                //窗口的扩展风格string lpszClassName,                         //指向注册类名的指针string lpszWindowName,                        //指向窗口名称的指针int style,                                    //窗口风格int x,                                        //窗口的水平位置int y,                                        //窗口的垂直位置int width,                                    //窗口的宽度int height,                                   //窗口的高度IntPtr hWndParent,                            //父窗口的句柄IntPtr hMenu,                                 //菜单的句柄或是子窗口的标识符IntPtr hInst,                                 //应用程序实例的句柄[MarshalAs(UnmanagedType.AsAny)] object pvParam//指向窗口的创建数据); [DllImport("user32.dll", CharSet = CharSet.Auto)]public static extern IntPtr CreateWindowEx(uint dwExStyle,                                //窗口的扩展风格string lpszClassName,                         //指向注册类名的指针string lpszWindowName,                        //指向窗口名称的指针uint style,                                    //窗口风格int x,                                        //窗口的水平位置int y,                                        //窗口的垂直位置int width,                                    //窗口的宽度int height,                                   //窗口的高度IntPtr hWndParent,                            //父窗口的句柄IntPtr hMenu,                                 //菜单的句柄或是子窗口的标识符IntPtr hInst,                                 //应用程序实例的句柄[MarshalAs(UnmanagedType.AsAny)] object pvParam//指向窗口的创建数据);[DllImport("user32.dll", CharSet = CharSet.Auto)]public static extern IntPtr CreateWindowEx(string lpszClassName,                         //指向注册类名的指针string lpszWindowName,                        //指向窗口名称的指针uint style,                                    //窗口风格int x,                                        //窗口的水平位置int y,                                        //窗口的垂直位置int width,                                    //窗口的宽度int height,                                   //窗口的高度IntPtr hWndParent,                            //父窗口的句柄IntPtr hMenu,                                 //菜单的句柄或是子窗口的标识符IntPtr hInst,                                 //应用程序实例的句柄[MarshalAs(UnmanagedType.AsAny)] object pvParam//指向窗口的创建数据);[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]public struct CREATESTRUCT{/// <summary>/// 指向将被用于创建窗口的数据的指针。 /// </summary>public IntPtr lpCreateParams;/// <summary>/// 指向将被用于创建窗口的数据的指针。 /// </summary>public IntPtr hInstance;/// <summary>/// 指向将被用于创建窗口的数据的指针。 /// </summary>public IntPtr hMenu;/// <summary>/// 指向将被用于创建窗口的数据的指针/// </summary>public IntPtr hwndParent;public int cy;public int cx;public int y;public int x;/// <summary>/// 指定了新窗口的风格。/// </summary>public uint style;/// <summary>/// 指向一个以null结尾的字符串,指定了新窗口的名字。 /// </summary>public string lpszName;/// <summary>/// 指向一个以null结尾的字符串,指定了新窗口的Windows类名(一个WNDCLASS结构;更多的信息参见Win32 SDK文档)/// </summary>public string lpszClass;/// <summary>/// 指向一个以null结尾的字符串,指定了新窗口的Windows类名(一个WNDCLASS结构;更多的信息参见Win32 SDK文档)/// </summary>public int dwExStyle;}[System.Runtime.InteropServices.DllImportAttribute("user32.dll", EntryPoint = "MoveWindow")]public static extern bool MoveWindow(System.IntPtr hWnd, int X, int Y, int nWidth, int nHeight, bool bRepaint);public enum WindowStyles : uint{WS_OVERLAPPED = 0x00000000,WS_POPUP = 0x80000000,WS_CHILD = 0x40000000,WS_MINIMIZE = 0x20000000,WS_VISIBLE = 0x10000000,WS_DISABLED = 0x08000000,WS_CLIPSIBLINGS = 0x04000000,WS_CLIPCHILDREN = 0x02000000,WS_MAXIMIZE = 0x01000000,WS_BORDER = 0x00800000,WS_DLGFRAME = 0x00400000,WS_VSCROLL = 0x00200000,WS_HSCROLL = 0x00100000,WS_SYSMENU = 0x00080000,WS_THICKFRAME = 0x00040000,WS_GROUP = 0x00020000,WS_TABSTOP = 0x00010000,WS_MINIMIZEBOX = 0x00020000,WS_MAXIMIZEBOX = 0x00010000,WS_CAPTION = WS_BORDER | WS_DLGFRAME,WS_TILED = WS_OVERLAPPED,WS_ICONIC = WS_MINIMIZE,WS_SIZEBOX = WS_THICKFRAME,WS_TILEDWINDOW = WS_OVERLAPPEDWINDOW,WS_OVERLAPPEDWINDOW = WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX,WS_POPUPWINDOW = WS_POPUP | WS_BORDER | WS_SYSMENU,WS_CHILDWINDOW = WS_CHILD,//Extended Window StylesWS_EX_DLGMODALFRAME = 0x00000001,WS_EX_NOPARENTNOTIFY = 0x00000004,WS_EX_TOPMOST = 0x00000008,WS_EX_ACCEPTFILES = 0x00000010,WS_EX_TRANSPARENT = 0x00000020,//#if(WINVER >= 0x0400)WS_EX_MDICHILD = 0x00000040,WS_EX_TOOLWINDOW = 0x00000080,WS_EX_WINDOWEDGE = 0x00000100,WS_EX_CLIENTEDGE = 0x00000200,WS_EX_CONTEXTHELP = 0x00000400,WS_EX_RIGHT = 0x00001000,WS_EX_LEFT = 0x00000000,WS_EX_RTLREADING = 0x00002000,WS_EX_LTRREADING = 0x00000000,WS_EX_LEFTSCROLLBAR = 0x00004000,WS_EX_RIGHTSCROLLBAR = 0x00000000,WS_EX_CONTROLPARENT = 0x00010000,WS_EX_STATICEDGE = 0x00020000,WS_EX_APPWINDOW = 0x00040000,WS_EX_OVERLAPPEDWINDOW = (WS_EX_WINDOWEDGE | WS_EX_CLIENTEDGE),WS_EX_PALETTEWINDOW = (WS_EX_WINDOWEDGE | WS_EX_TOOLWINDOW | WS_EX_TOPMOST),//#endif /* WINVER >= 0x0400 *///#if(WIN32WINNT >= 0x0500)WS_EX_LAYERED = 0x00080000,//#endif /* WIN32WINNT >= 0x0500 *///#if(WINVER >= 0x0500)WS_EX_NOINHERITLAYOUT = 0x00100000, // Disable inheritence of mirroring by childrenWS_EX_LAYOUTRTL = 0x00400000, // Right to left mirroring//#endif /* WINVER >= 0x0500 *///#if(WIN32WINNT >= 0x0500)WS_EX_COMPOSITED = 0x02000000,WS_EX_NOACTIVATE = 0x08000000//#endif /* WIN32WINNT >= 0x0500 */}//public const int LWA_ALPHA = 0x2;//public const int LWA_COLORKEY = 0x1;//[DllImport("user32", EntryPoint = "SetWindowLong")]//public static extern uint SetWindowLong(//IntPtr hwnd,//int nIndex,//uint dwNewLong//);//[DllImport("user32", EntryPoint = "GetWindowLong")]//public static extern uint GetWindowLong(//IntPtr hwnd,//int nIndex//);[DllImport("user32", EntryPoint = "SetLayeredWindowAttributes")]public static extern int SetLayeredWindowAttributes(IntPtr hwnd,int crKey,int bAlpha,int dwFlags);}

在任务栏中添加控件 如360小助手、QQ桌面小助手相关推荐

  1. VS2010向工具箱中添加控件解决 Microsoft Communications Control,未能实例化 设计时授权

    第一步是Visual Studio 2010中添加注册控件的方法 在VC6.0中添加ADO Data Control等控件是很很方便的,"Project" --> " ...

  2. (VC2005)MFC中添加控件的成员变量.

    VC 2005 中添加控件的成员变量. 方法一:使用变量添加向导. 右击控件->Add Variable (打开了 Add Member Variable Wizard)  -> 输入Va ...

  3. .NET中添加控件数组

    作者:cuike519的专栏   http://blog.csdn.net/cuike519/ 添加控件数组 在.NET里面我好像没有找到有关于控件数组的说明,但是前两天偶在网上看到了一篇关于如何在. ...

  4. VS2008向工具箱中添加控件解决 未能实例化 设计时授权

    VS2010同理 VS2008向工具箱中添加串口控件,步骤为工具--选择工具箱项,在出现的选择工具箱项窗体中选择COM组件勾选Microsoft Communications Control, ver ...

  5. Android 中动态的向布局中添加控件

    先看一下效果图: 注: 这里使用的是一个自定义的布局文件,你可以向这个布局文件中添加任何控件,它也会动态的依据控件 的大小,动态的排列控件的分布 注:这里使用到的更新界面的方法:http://blog ...

  6. FastReport安装包下载、安装、去除使用限制以及工具箱中添加控件

    场景 FastReport .NET 2019是一款适用于Windows Forms, ASP.NET和MVC框架的功能齐全的报表分析解决方案.可用在Microsoft Visual Studio 2 ...

  7. js 对表格的动态操作(动态添加行,删除该行,在指定位置添加控件)

    ***************************************************************** js动态添加表的列,并在列中添加控件的方法<html> ...

  8. VS2010/MFC编程入门之五十三(Ribbon界面开发:为Ribbon Bar添加控件)

    前面一节中鸡啄米为大家简单介绍了如何创建Ribbon样式的应用程序框架,本节教程就来初步讲讲怎样为Ribbon Bar添加Ribbon控件. VS2010为Ribbon界面开发提供了Ribbon De ...

  9. WP8.1学习系列(第二十章)——添加控件和处理事件

    先决条件 添加控件 设置控件的名称 设置控件属性 创建事件处理程序 新控件 总结 相关主题 通过使用如按钮.文本框和组合框等控件,你可以创建应用的 UI. 下面将显示如何将控件添加到应用.处理控件时, ...

  10. html地图缩放比例,百度地图之添加控件——比例尺、缩略图、平移缩放

    地图控件概述 百度地图上负责与地图交互的UI元素称为控件.百度地图API中提供了丰富的控件,您还能够经过Control类来实现自定义控件.javascript 地图API中提供的控件有:css Con ...

最新文章

  1. python分治算法_python算法实现-分治法
  2. 图片不能置于底层怎么办_PPT中常遇到的图片问题和解决方案
  3. C中计算程序运行时间差(毫秒级)
  4. 用友u8年度账文件服务器错误,用友u8erp软件出纳管理模块年度数据结转常见问题...
  5. 【极客思考】计算机网络:Wireshark抓包分析TCP中的三次握手与四次挥手
  6. 新款iPhone SE预购好于预期,新款iPhone SE Plus可能要因此延迟了
  7. Python内置函数filter, map, reduce
  8. 【面试题总结】1、统计字符串中某个单词出现的次数(1-C++实现)
  9. 基于MyScript的C#版本手写板 准确的识别中文
  10. 关于 Sensor flicker/banding现象的解释
  11. MySQL面试问题包含答案仅参考
  12. MySQL的学习笔记(超详细超完整)
  13. 嵌入式的应用领域有哪些呢?
  14. 98、网管型和非网管型交换机有什么区别
  15. linux shell 判断一个文件是不是链接文件
  16. 机器人教育发展_机器人教育为什么火?本文带您了解未来机器人教育的发展趋势...
  17. JAVA——多线程【线程终止、中断、插队】
  18. python简单加密算法_如何制作一个简单的加密/解密程序?
  19. yesterday is a doog day+margesort到底应该怎么写+quicksort到底应该怎么写啊+冒泡到底应该怎么写+ I am a student
  20. java采购管理系统设计_Java毕业设计——采购管理系统的设计参考

热门文章

  1. 用C++实现随机分组
  2. Openstack+Opencontrail安装与部署初级教程
  3. Android 多国语言
  4. 阿里云首席安全研究员吴翰清:我人生的两次选择
  5. ppt放映显示备注 投影不显示
  6. crmeb 一号通使用方法
  7. 群体智能优化算法介绍
  8. 毕业之后才知道的——知网查重原理以及降重举例
  9. snmp中的MIB主要节点含义
  10. Elasticsearch - unmapped_type容错【某个不存在的字段、查询某个没有默认值的字段】