如何在其他程序的窗口上创建按钮并使之能响应
来源:互联网 发布:手机播放软件 编辑:程序博客网 时间:2024/05/22 11:52
http://www.vckbase.com/vckbase/vckbase12/vc/nonctrls/system_30/1230006.htm
源码下载
http://www.vckbase.com/vckbase/vckbase12/src/RT_INJECT.zip
环境:Windows NT/2000
实现方法:采用将动态连接库注入到其他进程中的方法来实现。
为了便于选择窗口,我借用了另一个程序"2000下显示带*号"来选择窗口。
如果要在98下实现你可用钩子同样实现。
程序运行界面如图一:
将动态连接库注入其他进程的代码如下: |
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 |
- 如何在其他程序的窗口上创建按钮并使之能响应
- 如何在其他程序的窗口上创建按钮并使之能响应
- 如何在其他程序的窗口上创建按钮并使之能响应
- 如何控制其他程序窗体上的窗口控件(上)
- win32程序创建按钮并响应点击
- 如何动态创建按钮,并响应消息
- 如何使程序创建的子窗口显示在任务栏上(强制)?
- 如何控制其他程序窗体上的窗口控件:下
- 如何控制其他程序窗体上的窗口控件(中)
- 如何控制其他程序窗体上的窗口控件(下)
- 如何控制其他程序窗体上的窗口控件
- 如何控制其他程序窗体上的窗口控件:中
- 如何控制其他程序窗体上的窗口控件
- 安卓中如何创建对话框,并能保证当前对话框不去响应系统的返回键
- 如何响应窗体上的关闭按钮
- 如何编译能在android上运行的C程序
- iOS 在imageview中添加按钮 并能响应消息 响应者链条
- 【MFC动态创建按钮,并在按钮上实现位图的切换显示】
- POJ1125 Stockbroker Grapevine
- ADO.NET的并行控制与数据存取冲突侦测
- document对象属性
- 《holon 教程一,什么是holon?》
- hibernet中的get和load方法的区别
- 如何在其他程序的窗口上创建按钮并使之能响应
- Head First C#中文版 图文皆译 (page7)
- getch(),getche(),getchar()的区别
- jspSmartUpload使用详解(JSP上传下载组件)
- 货币是怎样发行及流通的?
- 关于货币发行的问题
- C/C++面试之算法系列--典型的几个链表操作-逆序和重排
- unix高级编程进程关系理解
- 《holon 教程二,它的体系结构》