| 源代码下载 环境: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 |
相关推荐
Qt快速入门:点击按钮改变按钮文本(QPushButton)
widget.h #ifndef WIDGET_H #define WIDGET_H #include <QWidget> #include<QPushButton> class Widget : public QWidget { Q_OBJECT public: Widget(QWidget *parent = 0); ~Widget(); private: QPushButton b2; public: void change_
android hook截取其他程序的按钮事件_ScyllaHide的Hook原理
Hook是通过修改程序代码或数据,达到改变程序逻辑的目的。Hook种类很多,ScyllaHide主要使用的是inline hook,也就是在运行的流程中插入跳转指令(call/jmp)来抢夺程序运行流程的一个方法。Hook根据系统版本(win7、win8、win10等)、cpu架构(x86、x64)、子系统类型(是否是wow64进程),实现由细微差别。本节只讨论win7、x64下32位进...
进阶01:C# 加载外部EXE程序,并触发程序中的按钮
本文介绍了如何通过Windows API将外部EXE程序嵌入到主程序中并实现控制交互。主要步骤包括:1)创建被调用程序(WinFormSub.exe),包含随机数生成功能;2)使用Spy++工具获取目标控件句柄;3)在主程序中通过Process类启动外部程序,使用SetParent API将其嵌入Panel控件;4)通过FindWindowEx和SendMessage等API实现按钮触发、控件状态读取(包括文本内容、背景色等)。该方案适用于在没有源码的情况下集成第三方程序,可应用于工业自动化设备集成等场景。
按钮 java_java如何创建并设置一个按钮
java如何创建并设置一个按钮AWT(抽象窗口工具包):是java提供用来建立和设置java的图形用户界面的基本工具Swing(轻量级的图形界面组件):是以AWT平台为基础构建起来的新组件与AWT相比,Swing组件在实现时不包括任何依赖特定平台的代码,因此具有更高的平台无关性和良好的移植性,所以Swing成为图形用户界面开发的首选。下面介绍如何创建一个窗口程序并设置一个按钮。1、首先导入必要的包...
Win32程序添加按钮和点击响应
如果有多个按钮
Win32程序创建按钮并响应单击
码; #include <windows.h> #include "resource.h" LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM); HINSTANCE hInst; TCHAR szClassName[] = TEXT("win32ButtonDemo"); int WINAPI WinMain (HINSTANCE hThisInstance, HINSTANCE hPrev
win32程序之子窗口编程
一丶简介.什么是子窗口 在前边我们已经讲解了窗口的本质.以及如何注册窗口类跟创建窗口. 还讲了消息循环. 那么有很多窗口其实Windows已经帮我们创建出来了.我们直接使用即可. 而这些窗口都有自己的消息循环. 只有改变状态的时候.才会发送消息给我们的父窗口通知. 此时我们捕获消息就可以进行处理了. 子窗口其实就是绘制在主窗口的一个窗口. 这些窗口包含了 BUTTON (按钮控件...
易语言自动点击外部窗口上的按钮
根据窗口类名搜索出对应的句柄,调用PostMessageA自动点击外部程序上的按钮。本压缩包内包含主程序和外部程序的源代码,其中外部程序源码供调试试用。
win32(002) 创建窗口和 子窗口 事件处理
win32(002) 创建窗口和 子窗口 事件处理 不处理了自己上代码 我会上传 // win3202.cpp : Defines the entry point for the application. // #include "stdafx.h" #define begbuttonid 0x100 #define stopbuttonid 0x
易语言API创建窗口按钮执行代码例程
易语言 API创建窗口例程 创建按钮组件执行代码例程
易语言给外部窗口添加按钮并响应事件
给外部窗口添加按钮并响应事件系统结构:GetMsgProc,NewWndProc,位置,画按钮1,画按钮2,SetWindowsHookEx,CallNextHookEx,UnhookWindowsHookEx,SetPropA,RemovePropA,GetPropA,CopyMemory_MSG,SetWindowLongA,GetWindowLongA,CallWin
Win32窗口控件的创建与响应的源代码(附带源码)
通过这个简单的 Win32 程序示例,你可以看到如何创建并响应常见的窗口控件,如按钮、文本框和标签。Win32 提供了非常灵活的控件机制,能够满足大多数桌面应用程序的需求。通过修改控件的样式和属性,还可以定制控件的外观和行为,进一步提升用户体验。
在银河麒麟V10上部署Atlas 300i Duo:从固件到驱动的一站式踩坑笔记
日期:2025-09-09关键词:鲲鹏920、Atlas 300i Duo、银河麒麟V10、NPU、驱动、固件。
Qt5+VS2017点击按钮打开新窗口
居然没找到相关教程,一个人搞了好久… 1.新建新工程 使用VS新建一个qt工程:点击“Qt GUI Application”或者“创建新项目”创建新工程。 然后“Next”—&gt;“Next”—&gt;"Finish"完成,中间不用更改任何参数。 2.添加按钮和槽函数 双击“解决方案资源管理器”中的“XXX.ui”打开ui编辑界面,拖一个PushButton在中间去。 保存之后回到VS,...
西门子S7-200 SMART与施耐德ATV变频器Modbus通讯实战:从接线到稳定运行的完整指南
本文详细介绍了西门子S7-200 SMART PLC与施耐德ATV变频器之间实现稳定Modbus通讯的完整实战指南。内容涵盖从硬件接线、参数配置、PLC程序编写到触摸屏设计的全流程,并分享了提升通讯稳定性的关键技巧和常见故障排查方法,助力工业自动化系统可靠运行。
华南理工大学电子与信息学院23年预推免复试面试经验贴
华南理工大学电子与信息学院23年预推免复试面试经验贴

1万+



被折叠的 条评论
为什么被折叠?



