原文:wpf C# 操作DirectUI窗口 SendMessage+MSAA 最近做一个抓取qq用户资料的工具,需要获取qq窗口上的消息,以前这种任务是用句柄获取窗口中的信息,现在qq的窗口用的是DirectUI,只有窗口句柄,没有控件句柄,句柄这条路走不通了.不过较新版的qq的部分控件实现了微软的IAccessible接口(称为Microsoft Active Accessibility技术,简称MSAA),可以用另一套函数获取qq窗口的信息.不过要对窗口进行输入还是要靠句柄,上面说过,Di…
控件向父窗体发送自定义消息,父窗体定义处理此消息的函数   效果描述: 指定哪个类添加自定义消息:(当然这个类必须是CmdTarget的子类,不然不能处理消息) 添加消息 实现消息函数:(wParam和lParam程序员可以自行设计传什么值) SendMessage参数解析(SendMessageA是单字节类型函数,SendMessageW是双字节) 1:接受此消息的 “窗口”  ,我这个地方是父窗口 2:消息名,如WM_USER+4或是 WM_MYMESSAGE 3:处理此消息的函数的wPar…
场景 :需要开发一个通讯组件 流程为:界面-开启接收服务-通过发送组件发送信息到 其他客户端和服务端 接受服务接收其他客户端发送的消息 需要传递给对应组件或者界面 因此会出现类库重复引用问题.因为采用消息队列,和数据库中转来传递消息需要每个组件知道太多其他组件的业务,并且耗损性能和时间更多一下因此都被排除掉.最后采用Windows API传递消息 后续如果有更好地办法再继续更新上来 由于项目进程间和线程间需要进行通讯,因此通过api调用windows底层消息传递   [DllImport("Us…
控件向父窗体发送自定义消息,父窗体定义处理此消息的函数  程序源代码(整个工程)下载:http://download.csdn.net/detail/qq2399431200/6274793 效果描述: 指定哪个类添加自定义消息:(当然这个类必须是CmdTarget的子类,不然不能处理消息) 添加消息 实现消息函数:(wParam和lParam程序员可以自行设计传什么值) SendMessage参数解析(SendMessageA是单字节类型函数,SendMessageW是双字节) 1:接受此消息…
原文:WPF 程序如何跨窗口/跨进程设置控件焦点 WPF 程序提供了 Focus 方法和 TraversalRequest 来在 WPF 焦点范围内转移焦点.但如果 WPF 窗口中嵌入了其他框架的 UI(比如另一个子窗口),那么就需要使用其他的方法来设置焦点了. 一个粗略的设置方法是,使用 Win32 API: SetFocus(hwnd); 1 传入的是要设置焦点的窗口的句柄. 参考资料 winapi - Win32: C++: How do I re-focus on Parent Wind…
1. 判断窗口是否存在 private bool IsWindowExist(IntPtr handle) { ) != IntPtr.Zero) && IsWindowVisible(new HandleRef(this, handle))); } [DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)] public static extern IntPtr GetWindow(H…
原文:利用SendMessage实现窗口拖动 利用SendMessage实现窗口拖动                                            周银辉 想想以前用跟踪鼠标位移的方式来实现窗口拖动的方式还真有些傻, 后来, .Net3.0以来的Window类内置了DragMove方法, 似乎让我们方便的不少, 但, 最近这个方法也不能满足需求了, 因为我需要DragMove过程中向外发事件来通知我"拖动开始了"和"拖动结束了", 可惜的是W…
原文:WPF 使用 AppBar 将窗口停靠在桌面上,让其他程序不占用此窗口的空间(附我封装的附加属性) 本文介绍如何使用 Windows 的 AppBar 相关 API 实现固定停靠在桌面上的特殊窗口. 本文内容 停靠窗口 AppBar 如何使用 如何还原 附源码 停靠窗口 你可能并不明白停靠窗口是什么意思. 看下图,你可能使用过 OneNote 的停靠窗口功能.当打开一个新的 OneNote 停靠窗口之后,这个新的 OneNote 窗口将固定显示在桌面的右侧,其他的窗口就算最大化也只会占据剩…
Qt开发:Windows 下进程间通信的可行桥梁:窗体消息 注:窗体消息仅适用于有窗口的进程,如果没有窗口是无法收到窗体消息的(哪怕是隐形的都可以),比如Qt中如果需要使用WindowsMessage只需要类继承QWidget或者QMainWindow等窗口即可. 在说起如何使用Qt窗体消息,我们先要说说窗体消息到底是什么. 如果你有看过一本书叫做Windows高级编程,那下面的内容应该都不用看了,我这里就简单概述一下窗体消息. 在Windows下的应用程序中,其实我们可以很简单地发现,一般的应…
#define WM_ERASEBKGND                   0x0014 Parameters wParam A handle to the device context. // 设备上下文的句柄 lParam This parameter is not used. Return value Type: LRESULT An application should return nonzero if it erases the background; otherwise, it…