如何在其他程序的窗口上创建按钮并使之能响应
如何在其他程序的窗口上创建按钮并使之能响应
源代码下载
环境:Windows NT/2000 实现方法:采用将动态连接库注入到其他进程中的方法来实现。 为了便于选择窗口,我借用了另一个程序"2000下显示带*号"来选择窗口。 |
图一 将动态连接库注入其他进程的代码如下: |
BOOL WINAPI RT_CTRL_BTN(LPCSTR lpszLibFile, HWND hWnd, DWORD dwID, LPRECT pRtBtn, LPCTSTR szCaptionBtn) { try { DWORD dwProcessID; GetWindowThreadProcessId(hWnd, &dwProcessID); HANDLE hProcess = OpenProcess( PROCESS_CREATE_THREAD | PROCESS_VM_OPERATION | PROCESS_VM_WRITE | PROCESS_VM_READ, FALSE, dwProcessID ); if (!hProcess){ return FALSE; } INJECT_DLL InjectInfo; InjectDLL_Info(&InjectInfo, lpszLibFile, hWnd, dwID, pRtBtn, szCaptionBtn); LPBYTE lpThreadAddr=(LPBYTE)::VirtualAllocEx(hProcess, NULL, MAXINJECTSIZE, MEM_COMMIT, PAGE_EXECUTE_READWRITE); LPINJECT_DLL param = (LPINJECT_DLL) VirtualAllocEx( hProcess, 0, sizeof(INJECT_DLL), MEM_COMMIT, PAGE_READWRITE ); WriteProcessMemory(hProcess, lpThreadAddr,&RemoteControlThread, MAXINJECTSIZE, 0); WriteProcessMemory( hProcess, param, &InjectInfo, sizeof(InjectInfo), 0 ); DWORD dwThreadId; HANDLE hThread = ::CreateRemoteThread(hProcess,NULL,0, (unsigned long (__stdcall *)(void *))lpThreadAddr, param, 0, &dwThreadId); if (!hThread){ CloseHandle(hProcess); VirtualFreeEx( hProcess, lpThreadAddr, 0, MEM_RELEASE ); VirtualFreeEx( hProcess, param, 0, MEM_RELEASE ); return FALSE; } else { CloseHandle(hThread); CloseHandle(hProcess); VirtualFreeEx( hProcess, lpThreadAddr, 0, MEM_RELEASE ); VirtualFreeEx( hProcess, param, 0, MEM_RELEASE ); } } catch (...){ return FALSE; } return TRUE; } |
环境:win2000 professional + VC6.0+SP5 + PlatformSDK 2001.8 |
如何在其他程序的窗口上创建按钮并使之能响应相关推荐
- WIN7 UAC/结构体的Equals方法/C# 开发wince程序,窗口上总留有一块空白区域/静态构造函数...
1. vs2005在win7下通过IIS7调试时,调用dll失败,但在XP下正常.相信是权限问题,请问应该如何解决?能不能设置dll默认以管理员身分运行? 备注:此DLL已注册成功! 回复引用 全部回 ...
- VS创建 Win32 应用程序(实现窗口的创建)
VS创建 Win32 应用程序(实现窗口的创建)(二) 程序框架如下: 一.VS演示流程 打开VS----文件----新建----项目----Windows 桌面应用程序 二.生成代码:(大部分函数在 ...
- close函数 qt_QT5笔记:关闭应用程序和窗口的函数
23333 QT一坨,求一门面向傻瓜的语言. QT中 quit(),exit()以及close():常用的三个槽 对主程序的退出,可以调用成员函数exit(),同时也可以调用槽quit(),二者此时都 ...
- Delphi非应用程序主窗口创建MDI
对Delphi很熟悉的人,都知道MDI窗口的创建方式,是将主窗口的formstyle设置成MDIForm,然后将各个要设置成MDI的窗口的FormStyle都设置成MDIChild,运行就可以看到效果 ...
- win32程序窗口的创建
尽管Windows应用程序千变万化,令人眼花缭乱,但,消息机制和窗口过程却始终它们的基础,掌握了这两项技术,也就相当于把握住了问题的关键. 如果你以前是C程序员或是MFC的忠实用户,只要你学习过C语言 ...
- Linux从头开始学--学习笔记9知识点补充-ubuntu,centos;在linux上创建c程序;linux基础命令,shell命令,vi命令,man帮助手册
这是我从头开始学习Linux的学习笔记,后续还会更新. 记录自己的技术成长,也希望和大家分享交流,欢迎关注~ 本笔记为coursera网站课程<Linux for Developers>的 ...
- 在Heroku上创建node.js应用程序时,我应该将node_modules检入git吗?
本文翻译自:Should I check in node_modules to git when creating a node.js app on Heroku? I followed the ba ...
- 【Visual Studio 2019】创建 MFC 桌面程序 ( 安装 MFC 开发组件 | 创建 MFC 应用 | MFC 应用窗口编辑 | 为按钮添加点击事件 | 修改按钮文字 | 打开应用 )
文章目录 一.安装 MFC 开发组件 二.创建 MFC 应用 三.MFC 应用窗口编辑 四.为按钮添加点击事件 五.修改按钮文字 六.打开系统其它应用 七.博客源码 一.安装 MFC 开发组件 打开 ...
- linux java services_在 Linux 上创建第一个 Service Fabric Java 应用程序
先决条件 开始之前,请安装 Service Fabric SDK.Azure CLI,并在 Linux 开发环境中设置开发群集. 如果使用 Mac OS X,则可使用 Vagrant 在虚拟机中设置 ...
最新文章
- 9型转x型 cobol_【科研模型100例32】A型/X型分子筛
- WKWebView中经常用到的操作
- vue 组件属性监听_Vue.js 监听属性
- java el表达式 if else_jsp EL表达式和JSTL标签if-else if-else用法
- Good Bye 2017 G. New Year and Original Order 数位dp + 按数贡献
- php 取数组数量_PHP array_slice():截取数组的一部分
- WebFlux响应式编程基础之 5 webflux服务端开发讲解
- SharePoint 2010之LINQ与SPMetal
- Spring @Repository批注
- 桌面有u盘符计算机里没有了,教你电脑不显示u盘盘符怎么办
- HDU 2028Lowest Common Multiple Plus
- 【夯实基础】Spring在ssh中的作用
- Kindle刷安卓双系统的方法
- html中header怎么设置,HTML中的header标签怎么用?
- 服务器如何设置内网IP地址
- Web前端:木兰花令网页案例设计
- 1. stm32h7 移植RTX5(AC6) 基于CUBEMX
- 推荐5款小众实用神器软件,功能强大,值得你去收藏
- 【数组】#66 加一
- 无需插件修改chrome浏览器UA标识为手机版
热门文章
- 为什么我放弃饿了么产品总监,却要从事自由职业?
- mysql 查询效率测试,mysql innode和myisam引擎查询性能比较测试
- “2019大数据与实体经济深度融合全国行”盛大启动
- 作者:陈卫, 男, 微软亚洲研究院高级研究员, 清华大学客座教授。
- RabbitMq topic
- 【面向对象】可变对象和不可变对象
- 【操作系统】页置换算法
- 【Java】Java反射机制重点总结
- 【XML】XML语法格式提要
- 【Java】OpenJDK 64-Bit Server VM warning: Sharing is only supported for boot loader classes…… 的解决方法