怎样让c 窗口置顶在LOL里置顶显示

赞助商链接
本类月下载排行
本类周下载排行
常用软件推荐
简单的游戏置顶器(让任意窗口置顶)是一款用于设置其它游戏或者软件窗口是否置顶的绿色辅助软件。 比如你用网页看电影的时候,又想同时处理其它的事情,你就可以用这个工具设置看电影页面为置顶。 先运行要置顶的程序或游戏,右键单击-置顶,f2刷新、主要用户显示窗口的置顶状态。
&&请点击以下链接下载该软件:&简单的游戏置顶器(让任意窗口置顶)V2.0 绿色版
上一软件:
下一软件:
(评论内容只代表网友观点,与本站立场无关)
为了保证您快速的下载,推荐使用[] 、[] 等专业工具下载.
为确保软件能正常使用,请使用[
]解压本站软件.
目前不少软件都捆绑流氓插件,请在安装的之时务必留意每一个安装步骤.绿色先锋本身是不会捆绑任何插件在软件中的.
该软件为网上收集,若无意中侵犯了您的版权,.我们将在收信后24小时内删除侵权内
本站下载的软件中,部分软件经过压缩加密处理,解压密码为:
感谢您对绿色先锋的支持,请将网站地址放在您的博客,空间等地方,以便我们为您及您的朋友提供更好的服务.
软件按字母排列:
中文按声母搜索:求一段能让新窗口始终置顶的方法。_gtk吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:653贴子:
求一段能让新窗口始终置顶的方法。收藏
具体要求是在一个窗口点击按钮后弹出一个新的窗口。新的窗口始终置顶。鼠标点窗口以外的地方没有反应。今天用GTK3.0里面有个gtk_window_set_keep_above不好使啊~有没有提供思路的~
报考一级消防师要求,学尔森13年考培经验为您解答,更有百度信贷分期付学费.
gtk_widget_set_sensitive?貌似记得像messagedialog有个参数是设置父窗口,还有一个参数是可以设置dialog窗口置顶的,看看devhelp中相关内容吧
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或【原创】让任意窗口快速置顶 - 看雪安全论坛
该主题: "【原创】让任意窗口快速置顶" 因在一定的时间里没有任何回复而自动关闭。如果您还对该主题感兴趣或者想参与对此主题的讨论,请您重新发表一篇相关的新主题。
注册日期: Jan 2012
现金: 101 Kx
致谢数: 17
获感谢文章数:0获会员感谢数:0
, 22:47:43
已解答: 【原创】让任意窗口快速置顶
近来心境不好,&什么东西都学不下,&每天偶尔点开论坛总没耐心看那些好的帖子,&自觉惭愧,&来发个帖聊以自慰罢.
&&&内容很基础,&都是几年前玩剩下的,&比较可笑的是,&自己和几年前想比,&也没什么进步,&大家见笑.
&&&&&&要把窗口置顶,&稍有Win32&编程基础的人就知道&可以&Get&Handle&然后&SendMessage&或者是SetWindowLog,&这里不妨说得更详细点:
&&&&&&窗口:&Windows是以窗口作为主要交互界面的系统,&我们把那个能拖来拖去,&一般带有最大化最小化关闭按钮的大方框叫做窗口,&但是其实窗口的定义可以更广泛一点,&一个按钮是窗口,&一个文本框也是窗口.
&&&&&&父窗口:&如果一个按钮(Button)被放在一个Panel(面板)上,&&&那按钮的父窗口就是Panel,&同样Panel的父窗口是Form,&Form就是我们平时说的窗口了;
&&&&&&顶级窗口:&Form的父窗口是什么?&&有人说是桌面(Desktop),&也有人说没有父窗口,&但是通过实验得知,&它没有父窗口,&没有父窗口的窗口我们叫做顶级窗口,&我们平时说的窗口,&都是指的顶级窗口;
&&&&&&句柄:&Handle,&这个&句柄&绝对是IT界的神翻译,&谁知道句柄是个什么意思?!&句柄是一种特殊的指针,&指向的是内存里的对象,&&通俗得讲它就是一个窗口(事实上远不止窗口)的把手,&你有了这个句柄就能开窗关窗,&改变窗口的状态,&这样的形容虽然不贴切,&但足够生动了吧?
改变窗口的状态?&&对了,&只要我们获得顶级窗口&的&句柄&,改变它的状态,&把&不置顶&改为&置顶&,&就达成目的了.
&&&&&自己做的工具不需要考虑太多,&而且要尽量简单易用,&实现上述的功能只需要几个API(Application&Programmng&Interface自行百度),&甚至连窗口都不需要,&所以决定用C语言.
流程如下:&1.获得顶级窗口的句柄&,&2.改变它的状态.
哪个窗口呢?&你需要指定一个窗口,&&&&怎么指定?
能想到最好的方案是用鼠标指定,&你鼠标放在哪一个窗口,&就是哪一个窗口;
有函数GetCursorPos(),&能够取得鼠标所在的点;
又有函数WindowsFromPoint(),
取得在某点的窗口的句柄;
注意,&取得的是窗口的句柄,&要怎么的得到顶级窗口的句柄呢?&不停地找这个窗口的父窗口,&直到某个窗口的父窗口的句柄为0(不存在),&那就找到了,
有函数GetParent(),&能取得窗口的父窗口.
取得顶级窗口的句柄后,&有函数SetWindowPos,&指定参数HWND,&HWND_TOPMOST,&0,&0,&0,&0,&SWP_NOMOVE&|&SWP_DRAWFRAME&|&SWP_NOSIZE&就能置顶一个窗口.
废话了那么多,&其实核心代码只有6句,加了些修饰如下:
HWND&GetHwnd()
&&&&POINT&p;
&&&&GetCursorPos(&p);
&&&&hwd&=&WindowFromPoint(p);
&&&&while&(GetParent(hwd))
&&&&&&&&hwd&=&GetParent(hwd);
&&&&return&
SetWindowPos(GetHwnd(),HWND_TOPMOST,&0,&0,&0,&0,&SWP_NOMOVE&|&SWP_DRAWFRAME&|&SWP_NOSIZE);
另,&以上函数都包含在Windows.h中,&创建没有窗体的C语言工程,&可以新建Win32工程然后删去所有代码,&使用普通的Main函数即可.
&&&&这个程序执行的时候把当前鼠标所在的窗口置顶之后便退出,&因此我们可以把这个程序放在win&+&R&特地目录下,&给它一个简单的名字,&这样就能快速调用了.
#include&&windows.h&
#include&&string.h&
HWND&GetHwnd()
&&&&POINT&p;
&&&&GetCursorPos(&p);
&&&&hwd&=&WindowFromPoint(p);
&&&&while&(GetParent(hwd))
&&&&&&&&hwd&=&GetParent(hwd);
&&&&return&
int&main(int&argc,&char*&args[])
&&&&if&(argc&&&2)
&&&&&&&&SetWindowPos(GetHwnd(),HWND_TOPMOST,&0,&0,&0,&0,&SWP_NOMOVE&|&SWP_DRAWFRAME&|&SWP_NOSIZE);
&&&&&&&&return&0;
&&&&&&&&if&(!strcmp(&/?&,&args[1]))
&&&&&&&&&&&&MessageBox(0,
&&&&&&&&&&&&&&&&&Availableparameters:\n/?\n/no&param:&stay&on&top.\nother&param:&cancel\n\n&&&&&&&&&&LastAvenger&,
&&&&&&&&&&&&&&&&&Help&,
&&&&&&&&&&&&&&&&MB_OK
&&&&&&&&&&&&&&&&);
&&&&&&&&else
&&&&&&&&&&&&SetWindowPos(GetHwnd(),HWND_NOTOPMOST,&0,&0,&0,&0,&SWP_NOMOVE&|&SWP_DRAWFRAME&|&SWP_NOSIZE);
最佳答案 - 作者:
循环GetParent不一定对,一般情况下是对的,但你看看如果是对话框程序,它也是有父窗口的,只不过是桌面而已,其它程序也有类似的现象
建议你检查窗口是不是子窗口,再GetParent,以保证正确
注册日期: Jun 2011
现金: 222 Kx
致谢数: 46
获感谢文章数:1获会员感谢数:3
, 23:49:33
不错支持一下,窗口的一堆概念至今理解不清楚,焦点,活动,还有z序那些,感觉真难理解,看了老是忘记。
注册日期: Aug 2012
现金: 100 Kx
致谢数: 29
获感谢文章数:1获会员感谢数:3
, 07:57:43
深入浅出好文章
注册日期: Sep 2008
现金: 24 Kx
获感谢文章数:18获会员感谢数:25
, 09:01:06
注册日期: Jan 2012
现金: 101 Kx
致谢数: 17
获感谢文章数:0获会员感谢数:0
, 10:19:41
最初由 dalerkd发布
深入浅出好文章
浅出但不深入...
注册日期: Jan 2012
现金: 101 Kx
致谢数: 17
获感谢文章数:0获会员感谢数:0
, 10:21:37
最初由 fatecaster发布
不错支持一下,窗口的一堆概念至今理解不清楚,焦点,活动,还有z序那些,感觉真难理解,看了老是忘记。
注册日期: May 2004
现金: 177 Kx
获感谢文章数:1获会员感谢数:1
, 09:55:52
循环GetParent不一定对,一般情况下是对的,但你看看如果是对话框程序,它也是有父窗口的,只不过是桌面而已,其它程序也有类似的现象
建议你检查窗口是不是子窗口,再GetParent,以保证正确
注册日期: Jan 2012
现金: 101 Kx
致谢数: 17
获感谢文章数:0获会员感谢数:0
, 19:22:37
最初由 sunbinjin发布
循环GetParent不一定对,一般情况下是对的,但你看看如果是对话框程序,它也是有父窗口的,只不过是桌面而已,其它程序也有类似的现象
建议你检查窗口是不是子窗口,再GetParent,以保证正确
注册日期: Jan 2012
现金: 101 Kx
致谢数: 17
获感谢文章数:0获会员感谢数:0
, 19:29:02
最初由 sunbinjin发布
循环GetParent不一定对,一般情况下是对的,但你看看如果是对话框程序,它也是有父窗口的,只不过是桌面而已,其它程序也有类似的现象
建议你检查窗口是不是子窗口,再GetParent,以保证正确
请问怎么判断他是否为子窗体呢?
注册日期: Feb 2011
现金: 1057 Kx
致谢数: 14
获感谢文章数:0获会员感谢数:0
, 15:39:18
最初由 谷月轩发布
请问怎么判断他是否为子窗体呢?
一般说的子窗口是有WS_CHILD属性的,
给几个链接
.cn/s/blog_48f93b530100eamd.html&
/cswuyg/archive//2582186.html
注册日期: Apr 2011
现金: 1 Kx
获感谢文章数:0获会员感谢数:0
, 15:20:52
多谢楼主分享
该主题: "【原创】让任意窗口快速置顶" 因在一定的时间里没有任何回复而自动关闭。如果您还对该主题感兴趣或者想参与对此主题的讨论,请您重新发表一篇相关的新主题。
您不可以发表主题
您不可以回复帖子
您不可以上传附件
您不可以编辑自己的帖子
论坛论坛启用
用户控制面板
会员在线状态
CrackMe攻击篇,分析文章提交区
『看雪众测/众包』
『求助问答』
『经典问答』
『资料导航』
『软件调试逆向』
『密码学』
『编程技术』
『C32Asm』
『MDebug』
『安全工具开发』
『加壳与脱壳』
『CrackMe&ReverseMe』
『资源下载』
『Android 安全』
『Android 开发』
『iOS安全』
『WEB安全』
『漏洞分析』
『外文翻译』
『招聘专区』
『职业生涯』
『15PB培训』
『麦洛克菲培训』
『茶余饭后』
『安全资讯』
『论坛活动』
6)PEDIY Crackme竞赛2009
7)看雪十周年专版
8)腾讯公司2010软件安全竞赛
9)2011 Exploit Me竞赛
『图书项目版』
《加密与解密(第三版)》
《C++反汇编与逆向分析技术揭秘》
《Android软件安全与逆向分析》
『论坛版务』
所有时间均为北京时间, 现在的时间是 .
&&& 看雪学院()
| 提供带宽资源
|&微信公众帐号:c# winform窗口一直置顶显示在桌面最上方或最底层的方法
字体:[ ] 类型:转载 时间:
winform窗口一直置顶显示在桌面最上方,这样的功能真的很实用的,很多的软件窗口都有这样的功能,本文也来实现一个,感兴趣的你千万不要错过了,希望本文对你有所帮助
一、 在最前面: using System.Runtime.InteropS 在定义部分引入下面两个函数: [DllImport( "user32 ")] private static extern IntPtr FindWindow(string lpClassName,string lpWindowName); [DllImport( "user32 ")] private static extern IntPtr SetParent(IntPtr hWndChild, IntPtr hWndNewParent); 在窗体On_Load事件中添加(Santos的代码): IntPtr hDeskTop=FindWindow( "Progman ", "Program Manager "); SetParent(this.Handle,hDeskTop); 另一个方法可以修改桌面壁纸实现 经测试,win2000--win2003 、xp下嵌入桌面,不支持vista和win7以上系统 二、
代码如下: using S using System.Collections.G ponentM using System.D using System.D using System.T using System.Windows.F using System.Runtime.InteropS namespace ShowInDesk { publicpartialclass Form1 : Form { IntPtr hD publicconstint GW_CHILD =5; public Form1() { InitializeComponent(); this.hDesktop = GetDesktopHandle(DesktopLayer.Progman); EmbedDesktop(this, this.Handle, this.hDesktop); isMouseDown = } public IntPtr GetDesktopHandle(DesktopLayer layer) { //hWnd = new HandleRef(); HandleRef hW IntPtr hDesktop =new IntPtr(); switch (layer) { case DesktopLayer.Progman: hDesktop = Win32Support.FindWindow("Progman", null);//第一层桌面
case DesktopLayer.SHELLDLL: hDesktop = Win32Support.FindWindow("Progman", null);//第一层桌面 hWnd =new HandleRef(this, hDesktop); hDesktop = Win32Support.GetWindow(hWnd, GW_CHILD);//第2层桌面
case DesktopLayer.FolderView: hDesktop = Win32Support.FindWindow("Progman", null);//第一层桌面 hWnd =new HandleRef(this, hDesktop); hDesktop = Win32Support.GetWindow(hWnd, GW_CHILD);//第2层桌面 hWnd =new HandleRef(this, hDesktop); hDesktop = Win32Support.GetWindow(hWnd, GW_CHILD);//第3层桌面
} return hD } publicvoid EmbedDesktop(Object embeddedWindow, IntPtr childWindow, IntPtr parentWindow) { Form window = (Form)embeddedW HandleRef HWND_BOTTOM =new HandleRef(embeddedWindow, new IntPtr(1)); constint SWP_FRAMECHANGED =0x0020;//发送窗口大小改变消息 Win32Support.SetParent(childWindow, parentWindow); Win32Support.SetWindowPos(new HandleRef(window, childWindow), HWND_BOTTOM, 300, 300, window.Width, window.Height, SWP_FRAMECHANGED); } } }
代码如下: using S using System.Collections.G using System.T using System.Runtime.InteropS namespace ShowInDesk { class Win32Support { [DllImport("user32.dll", CharSet = CharSet.Auto)] publicstaticextern IntPtr FindWindow(string className, string windowName); [DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling =true)] publicstaticextern IntPtr GetWindow(HandleRef hWnd, int nCmd); [DllImport("user32.dll")] publicstaticextern IntPtr SetParent(IntPtr child, IntPtr parent); [DllImport("user32.dll", EntryPoint ="GetDCEx", CharSet = CharSet.Auto, ExactSpelling =true)] publicstaticextern IntPtr GetDCEx(IntPtr hWnd, IntPtr hrgnClip, int flags); [DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling =true)] publicstaticexternbool SetWindowPos(HandleRef hWnd, HandleRef hWndInsertAfter, int x, int y, int cx, int cy, int flags); [DllImport("user32.dll")] publicstaticexternint ReleaseDC(IntPtr window, IntPtr handle); } }
代码如下: namespace ShowInDesk { publicenum DesktopLayer { Progman =0, SHELLDLL =1, FolderView =2 } }
三、 入桌面窗口最底层,并提供详细的实现代码供参考。 此类将窗体永远置于窗口最底层。 首先, 调用一些User32.dll的WinAPI函数。
代码如下: internal class User32 { public const int SE_SHUTDOWN_PRIVILEGE =0x13; [DllImport("user32.dll")] public static extern IntPtr FindWindow(string lpClassName, string lpWindowName); [DllImport("user32.dll")] public static extern IntPtr SetParent(IntPtr hWndChild, IntPtr hWndNewParent); [DllImport("user32.dll")] public static externbool SetWindowPos(IntPtr hWnd, int hWndInsertAfter, int X, int Y, int cx, int cy, uint uFlags); }
然后, 在WinForm里面:
代码如下: public MainForm() { InitializeComponent(); try { if (Environment.OSVersion.Version.Major &6) { base.SendToBack(); IntPtr hWndNewParent = User32.FindWindow("Progman", null); User32.SetParent(base.Handle, hWndNewParent); } else { User32.SetWindowPos(base.Handle, 1, 0, 0, 0, 0, User32.SE_SHUTDOWN_PRIVILEGE); } } catch (ApplicationException exx) { MessageBox.Show(this, exx.Message, "Pin to Desktop"); } } private void MainForm_Activated(object sender, EventArgs e) { if (Environment.OSVersion.Version.Major &=6) { User32.SetWindowPos(base.Handle, 1, 0, 0, 0, 0, User32.SE_SHUTDOWN_PRIVILEGE); } } private void MainForm_Paint(object sender, PaintEventArgs e) { if (Environment.OSVersion.Version.Major &=6) { User32.SetWindowPos(base.Handle, 1, 0, 0, 0, 0, User32.SE_SHUTDOWN_PRIVILEGE); } }
以上介绍的就是C#如何让WinForm嵌入桌面窗口最底层,希望对你有所帮助。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具

我要回帖

更多关于 delphi 窗口置顶 的文章

 

随机推荐