你好,你好,我是你们最喜欢的蒟君~
从今天开始蒟蒻和大家一起学习C黑客!
注:代码在DEV-C++这些针对算法编程的编译器上是编译不了的,需要用vscode或者vc才行。
文章目录介绍:消息机制? 新闻的工作原理是什么? 消息是如何生成的? 怎么表达信息? 初步搜索API函数(FindWindow和SendMessage函数) FindWindowSendMessage调试消息机制(显示记事本属性概述)消息机制? 新闻的工作原理是什么?
3358www.Sina.com/消息是Windows中应用是基于消息机制哒~的系统生成,该值在系统中说明了事件3358www.Sina.com/例如,当用户单击鼠标、敲击键盘或拖动窗口时,它们会报告给Windows。
一旦知道什么是Windows消息机制,Windows如何生成这样的数字呢? 一个操作有很多属性,怎么能保证任意两条消息都不一样呢?
消息是如何生成的? 方向盘(HWND )我相信大家吉岛、布吉岛的伙伴都能读这篇文章。
首先,让我们看一下windows中消息的定义。 (信息是MSG哦) ~
struct tagMsg { HWND hwnd; //窗口句柄UINT message; //消息值WPARAM wParam; //用于确保信息不同的东东LPARAM lParam; //相同的DWORD time; //此消息是什么时候创建的POINT pt; //制作消息时光标在哪里(坐标) msg; 伙伴们知道小鸡了~
一个小新闻也包含很多属性,所以两个新闻不一样~~。
怎么表达信息?
真正有用的消息值在0x0000到0x03ff之间。0x用十六进制表示。 而且,32位(相当于int类型)的值
APP用的信息为0x0400到0x7fff,或者0xc000到0xffff (电脑不同的话就是这个不同)。
接下来是(不会重复)
消息类型的值范围为空。 WM_null-0x00000、0x0001-0x0087系统0x00a0-0x00a9键盘0x0100-0x0108菜单0x0111-0x0126颜色控件0x0132-0x0138鼠标0x 0000
初步搜索API函数(FindWindow和SendMessage函数) API函数是接口函数,公开是为了便于我们创建接口。
那么,第一个黑客程序需要的函数是什么呢?
let’sgo~~
FindWindow 程序不能用这些消息指值给自己的消息(这些都是系统要用的)。
按窗口名称找到窗口句柄。认识一些消息类型(看不懂可以忽略)
LPCSTR=const TCHAR*
hwnd findwindow (lpctstrlpclassname,//窗口类的名称LPCTSTR lpWindowsName//窗口的名称)窗口标题);作用:
在代码中,窗口的名称会发生变化(这里编写了编辑窗口标题的函数edit ),所以只能通过窗口类名来查找句柄。 ~ SendMessage 定义:
用句柄确定窗口,发送信息。程序中的运用:
UINT=unsigned int
WPARAM=UINT
LPARAM=LONG
lresultsendmessage(hwndhwnd,UINT Msg,WPARAM wParam,LPARAM lParam} );作用:
WM_CLOSE :接收该消息的窗口必须关闭(最后两个参数不有用,不为空) WM_SETTEXT :接收该消息的窗口必须设置下面的字符
调试机制(查看记事本属性) #include Windows.h//获取记事本标题的void get_name ) hwndh=:3360 findwindow (l ' notepad ' ) if(h==null ) ) messagebox ) null,不能有l '记事本哦~,l '蒟君提示),MB_OK ); 返回; } char s[MAXBYTE]={0};3360sendmessage(h,WM_SETTEXT,) WPARAM ) 0,) LPARAM ) s ); messagebox(null,) LPCWSTR ) s,l )蒟蒻君提示),MB_OK ); //记事本标题void edit () hwndh=:findwindow ) null,l '无标题-记事本) ); if(h==null ) ) messagebox ) null,不能有l '记事本哦~,l '蒟君提示),MB_OK ); 返回; }:sendmessage(h,WM_SETTEXT,) WPARAM ) 0,(LPARAM )“调试”); //记事本void run () winexec ) ' notepad.exe ',SW_SHOW ); //记事本void close () hwndh=: findwindow (l ' notepad ',NULL ); if(h==null ) ) messagebox ) null,不能有l '记事本哦~,l '蒟君提示),MB_OK ); 返回; }:3360sendmessage(h,WM_CLOSE,NULL,NULL ); }