⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 runcalc.asm

📁 asm 编的vxd例子,不会重复的够多了哦,
💻 ASM
字号:
.386
.model flat,stdcall
option casemap:none

include \masm32\include\windows.inc
include \masm32\include\user32.inc
include \masm32\include\kernel32.inc
includelib \masm32\lib\user32.lib
includelib \masm32\lib\kernel32.lib

DlgProc PROTO :DWORD,:DWORD,:DWORD,:DWORD
.data
Failure db "Cannot load VxDExec.VXD",0
AppName db "Run Calculator",0
VxDName db "\\.\vxdexec.vxd",0

.data?
hInstance HINSTANCE ?
hVxD dd ?

.const
IDD_VXDRUN    equ 101
IDC_LOAD      equ 1000

.code
start:
	invoke GetModuleHandle, NULL
	mov    hInstance,eax
	invoke DialogBoxParam, hInstance, IDD_VXDRUN ,NULL,addr DlgProc,NULL
	invoke ExitProcess,eax

DlgProc proc hDlg:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM
	.IF uMsg==WM_INITDIALOG
		invoke CreateFile,addr VxDName,0,0,0,0,FILE_FLAG_DELETE_ON_CLOSE,0
		.if eax==INVALID_HANDLE_VALUE
			invoke MessageBox,hDlg,addr Failure,addr AppName,MB_OK+MB_ICONERROR
			mov hVxD,0
			invoke EndDialog,hDlg,NULL
		.else
			mov hVxD,eax
		.endif
	.elseif uMsg==WM_CLOSE
		.if hVxD!=0
			invoke CloseHandle,hVxD
		.endif
		invoke EndDialog,hDlg,0
	.ELSEIF uMsg==WM_COMMAND
		mov eax,wParam
		mov edx,wParam
		shr edx,16
		.if dx==BN_CLICKED
			.IF ax==IDC_LOAD
					invoke DeviceIoControl,hVxD,1,NULL,0,NULL,NULL,NULL,NULL
			.endif
		.endif
	.ELSE
		mov eax,FALSE
		ret
	.ENDIF
	mov eax,TRUE
	ret
DlgProc endp
end start

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -