使用Win32 ASM 发送消息改变记事本窗口标题

标签: 汇编语言  masm32  SendMessage  FindWindow  WM_SETTEXT  invoke

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; by bobo
; Send.asm
; 从一个程序向另一个窗口程序发送消息
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
		.386
		.model flat,stdcall
		option casemap:none
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
include		windows.inc
include		user32.inc
includelib	user32.lib
include		kernel32.inc
includelib	kernel32.lib
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 数据段
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
		.data
hWnd		dd	?
szBuffer	db	256 dup (?)

		.const
szCaption	db	'SendMessage',0
szReturn	db	'SendMessage returned!',0
szDestClass	db	'Notepad',0	;记事本窗口的窗口类
szText		db	'改变记事本窗口的标题!!!',0

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 代码段
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
		.code
start:
		invoke	FindWindow,addr szDestClass,NULL
		.if	eax
			mov	hWnd,eax	;找到记事本窗口则发送消息
			
			invoke	SendMessage,hWnd,WM_SETTEXT,0,addr szText
			invoke	MessageBox,NULL,offset szReturn,offset szCaption,MB_OK		
		.endif
		invoke	ExitProcess,NULL
		end	start

程序启动先调用FindWindow,根据记事本窗口的窗口类查找记事本窗口,

然后发送WM_SETTEXT消息;发送完之后弹出一个对话框;

打开没用的记事本窗口进行测试,不然可能把有用的记事本窗口标题改变了;

如果没有使用ASM集成开发环境,按如下操作构建;

set命令设置环境变量只是一次有效;

set path=xxxxx,此命令经试验是把新设置的xxxx追加,不会影响以前设置的path值;

先下载安装MASM32;

版权声明:本文为bcbobo21cn原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/bcbobo21cn/article/details/104110046

智能推荐

纯Ruby创建Win32窗口

前言 所谓纯Ruby是指只用Ruby代码调用API来创建出一个窗口。本文的例子使用了windows-pr和CStruct。 不熟悉的童鞋可以先看这篇文章:在Ruby中方便的调用Win32 API(使用windos-pr和CStruct) : 这里 或 这里 。 本文并不鼓励直接用API来做GUI程序,而是想借这个例子说明在Windows下, Ruby除了本身的强大之外,还可以很方便的使用API,充...

win32 窗口 绘制椭圆

win32 窗口 绘制椭圆 测试环境: win7 64 位 vs2013 建立一个 win32 应用程序 ,空项目,名称是 HelloPaintEllipse, 在项目中添加源文件 HelloPaintEllipse.cpp : 显示效果如下: 坐标标注: 绘制椭圆是使用的 矩形的对角的两点的坐标,该坐标可以是左上角和右下角,也可以是左下角和右上角 绘制的椭圆是对应矩形的内切椭圆...

win32 窗口 绘制矩形

win32 窗口 绘制矩形 测试环境: win7 64 位 vs2013 建立一个 win32 应用程序 ,空项目,名称是 HelloPaintRect, 在项目中添加源文件 HelloPaintRect.cpp : 内容如下: 显示效果如下:...

win32 窗口的本质

学习WIN32的吃力? 没理解 整个框架. 看看一个图 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BT8hiYG7-1589342852974)(窗口的本质.assets/1587912134933.png)] GUI 使用Windows现成的窗口(大部分是user32.dll), 如果你想自己画一个 自己的窗口 GDI(gdi32.dll). 但是GUI 和 ...

win32窗口程序 -----2、绘图

概要: HDC hdc; PAINTSTRUCT ps; HBRUSH Purple_Brush= CreateSolidBrush(RGB(102,0,204)); HBRUSH White_Brush= CreateSolidBrush(RGB(255,255,255));//定义画刷 关键函数: 1、 BeginPaint( HWND hWnd, LPPAINTSTRUCT lpPaint)...

猜你喜欢

python基础(《Python编程从入门到实践》笔记)K

python基础语法 本笔记是对这本书的基础语法部分进行了学习: 因为本身有其他语言的编程基础,所以笔记仅仅对我自不熟悉的部分进行了记录 函数...

VUE脚手架html2canvas生成图片

长按识别二维码 下载插件 页面引入...

小程序login登录前后端实现

小程序login登录前后端实现 获取临时code 请求的接口 使用koa2 fly.js 登录验证 发送code...

QT(C++)面试总结

参考博客 QT信号槽机制的优缺点 (1)问题: 为什么Qt使用信号与槽机制而不是传统的回调函数机制进行对象间的通信呢? 回调函数的本质是“你想让别人的代码执行你的代码,而别人的代码你又不能动”这种需求下产生的。 回调函数是函数指针的一种用法,如果多个类都关注某个类的状态变化,此时需要维护一个列表,以存放多个回调函数的地址。对于每一个被关注的类,都需要做类似的工作,因此这种做...

【数据结构】栈与队列的面试题(一)

栈的简单认识和基本操作:点击打开链接 队列的简单认识和基本操作:点击打开链接 一.实现一个栈,要求实现Push(出栈),Pop(出栈),Min(返回最小值)的时间复杂度为O(1)。      (1.)方法一:创建两个栈来实现(Stack1,Stack2)                 &...