窗体句柄问题

问题描述

C#中一个窗体实例之前怎么获取当前windows运行的主程序的句柄。。我想做一个仿win7的放大镜..放大镜放大的同时还能点击放大镜后面的窗体。。求指教

解决方案

解决方案二:
privateboolhaveMainWindow=false;privateIntPtrmainWindowHandle=IntPtr.Zero;privateintprocessId=0;privatevoidWindow_Loaded(objectsender,RoutedEventArgse){///初始化录音句柄等processId=Process.GetCurrentProcess().Id;BaseData.hwnd=GetMainWindowHandle(processId);}privateIntPtrGetMainWindowHandle(intprocessId){if(!haveMainWindow){this.mainWindowHandle=IntPtr.Zero;this.processId=processId;User32API.EnumThreadWindowsCallbackcallback=newUser32API.EnumThreadWindowsCallback(this.EnumWindowsCallback);User32API.EnumWindows(callback,IntPtr.Zero);GC.KeepAlive(callback);haveMainWindow=true;}returnthis.mainWindowHandle;}privateboolEnumWindowsCallback(IntPtrhandle,IntPtrextraParameter){intnum;User32API.GetWindowThreadProcessId(newHandleRef(this,handle),outnum);if((num==this.processId)&&this.IsMainWindow(handle)){this.mainWindowHandle=handle;returnfalse;}returntrue;}privateboolIsMainWindow(IntPtrhandle){return(!(User32API.GetWindow(newHandleRef(this,handle),4)!=IntPtr.Zero)&&User32API.IsWindowVisible(newHandleRef(this,handle)));}

解决方案三:
调用GetMainWindowHandle(processId);就能获取该程序句柄
解决方案四:
调用这个函数还是会取到当前的应该程序。。。我的意思是在我运行程序之前调用windows正在运行的主程序
解决方案五:
getforegroundwindow

时间: 2024-10-30 17:10:10

窗体句柄问题的相关文章

vs2012-windows 64位系统自带的notepad,其窗体句柄应该是64位的还是32位的?

问题描述 windows 64位系统自带的notepad,其窗体句柄应该是64位的还是32位的? 大家好,我在64位系统上,用vs2012的spy++(64位)查看系统自带的notepad的窗体句柄.本来以为会看到64位的句柄.但是实际上是32位的.另外,里面看到的所有窗体的句柄都是32位的.想问下为什么? 解决方案 还是32位的.即便是x64程序,仍然使用win32 api.windows考虑了向前兼容性和32bit/64bit程序混合运行的情况,所以绝大部分x64下的api接口没有变化. 解

duilib底层机制剖析:窗体类与窗体句柄的关联

转载请说明原出处,谢谢~~         看到群里朋友有人讨论WTL中的thunk技术,让我联想到了duilib的类似技术.这些技术都是为了解决c++封装的窗体类与窗体句柄的关联问题.         这里是三篇关于thunk技术的博客,不懂的朋友可以先看一下: WTL学习之旅(三)WTL中 Thunk技术本质(含代码)深入剖析WTL-WTL框架窗口分析 (5)学习下 WTL 的 thunk         我这里直接引用其他博客的一部分文字来说明窗体类与窗体句柄关联的重要性和相关的问题,然后

已知窗体句柄,也知道要找的控件名称"RichEditComponent"如何得到他的句柄?求教

问题描述 已知窗体句柄,也知道要找的控件名称"RichEditComponent"如何得到他的句柄?求教希望给点代码谢谢!!! 解决方案 解决方案二:有了窗体句柄,就能找到其中的控件了,找到了控件,就能找到控件的句柄了.代码做过的不知放哪里了,去问问度娘,那也有解决方案三:用.net语法就行解决方案四:我就是用vb.net开发啊解决方案五:刚回答一个类似问题,可能对你有用.http://topic.csdn.net/u/20120520/21/7f1fee22-e18b-46ec-94

请求帮助 在net中如何根窗体句柄去查找所有控件的句柄啊

问题描述 在net中如何根窗体句柄去查找所有控件的句柄啊vb6做出来了,NET做不出来啊 解决方案 解决方案二:EnumChildWindows解决方案三:递归调用EnumChildWindows.解决方案四:还是没有办法实现啊给出我的代码,朋友帮我修改一下谢谢ImportsSystem.Runtime.InteropServicesImportsSystem.NetImportsSystem.IOImportsSystem.TextPublicClassForm3PrivateConstWM_

如何禁止一个窗体被激活,或者如何获取上一次激活的窗体句柄?

问题描述 如何禁止激活一个指定的窗体,包括但不限于:鼠标点击使其激活.键盘Alt+Tab使其激活.使用Form1.Activate().SendMessage等等如何获取上一次激活的窗体句柄,比如Form1被激活了,要获取在Form1激活之前,激活的窗体句柄.ps:以上"激活"的意思是指前台活动窗口,用GetForegroundWindow可以获取 解决方案 解决方案二:enablewindow(false)解决方案三:大神快来快来解决方案四:有人会吗?解决方案五:你先告诉我们,是想在

新手请教关于窗体句柄的疑问

问题描述 我是刚开始学习C#,所以很多东西不太懂,下面是我遇到的问题publicIntPtrMouseNowPosition(intx,inty){IntPtrOriginalHandle;//声明保存原始句柄的变量OriginalHandle=((IntPtr)WindowFromPoint(x,y));//获取包含鼠标原始位置的窗口的句柄CurrentHandle=OriginalHandle;//设置当前句柄while(OriginalHandle!=((IntPtr)0))//循环判断鼠

C#根据句柄改变窗体控件值

原文:C#根据句柄改变窗体控件值 需求是这样,有个程序界面我们需要通过自己的程序持续输入数据,界面如图. 可以获得控件的句柄而用钩子写入值.这里需要用到spy++工具.在VS的工具下有个spy++工具,打开如下图 通过这个工具可以获得窗体的句柄,当然这里获得的句柄只能用于测试,因为.net开发的程序窗体每次打开句柄都会变,都需要重新获得.这个工具的用处在于找一个控件的前一句柄控件和后一句柄控件. 一.引用 //寻找目标进程窗口 [DllImport("USER32.DLL")] pub

Windows中不规则窗体的编程实现

一.序言 在绝大多数的Windows应用程序中,其窗体都是使用的正规正矩的矩形窗体,例如我们常用的,"记事本","扫雷",等等.矩形窗体,具有编程实现简单,风格简洁的优点,所以在普通文档应用程序和简单小游戏中使用足矣.但在某些娱乐游戏程序中使用就略显呆板些了,这时若用不规则窗体替代原先的矩形窗体,将会使这类程序更添情趣.典型的例子有windows 自代的Media Player,新版本的Media Player有个控制面板的选项,选中这些面板,播放器就以选中的面板形

C语言API编写窗体界面和按钮

        最近有个同学的程序需要用对话框的方式实现,但前面都是通过黑框形式完成的,老师突然让增加一个界面,本来准备采用MFC完成的,但后来一想,该程序核心东西是体现在它的算法上,控制台的程序并非不好.转念一想,如果使用MFC这样的方法好像需要再倒腾一遍,想到了大一在"C语言能干大事"中的东西,所以就准备采用这种形式直接完成,投机取巧的方法.         主要是通过调用Windows API界面的CreateWindows函数完成,同时也能创建按钮,把参数设置为button,如