文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>Win32 API 三两事 (二)

Win32 API 三两事 (二)

时间:2011-02-17  来源:hicjiajia

1、spy++ 可进行一些辅助功能,确实很有用,比如可以获取消息、类名、窗口标题等等,VC++ 自带的小工具。

2、获取窗口句柄。HWND FindWindow(LPCTSTR IpClassName,LPCTSTR IpWindowName); 用spy++获取了窗体的类名或者窗口标题后,就可以调用该函数了

HWND gameH = FindWindowA(窗口类名,窗口标题);

(注意,windows api函数有两套,一套ANSI接口(函数后面有A标志),一套UNICODE接口(函数后面有W标志))

  另外注意,如果在C++类函数中调用API,要在函数前面加上"::"前缀,否则会找不到函数,不加"::"前缀,编译器会以为该函数是类中的。

3、获取窗口坐标信息。BOOL GetWindowRect(HWND,LPRECT lpRect); 有了窗体句柄gameH,就可以通过该句柄获取窗口的一些信息,这里用

RECT r;    //RECT类型为一个结构体,包括四个属性:top、bottom、left、right
::GetWindowRect(gameH,&r); //这里将r结构体的地址当做参数,最终结果会返回给r,Win32 API基本上都是这样返回数据的,具体什么时候用,查看MSDN看函数原型。
4、获取鼠标位置信息。BOOL GetCursorPos(LPPOlNT IpPoint);
POINT point;   //POINT结构体类型,包含x、y属性
GetCursorPos(&point);

5、移动鼠标位置。 BOOL SetCursorPOS(int X,int Y);

SetCursorPos(point.left,point.top);

6、模拟鼠标事件。VOID mouse_event(DWORD dwFlags,DWORD dx,DWORD dwFlags,OWORD dx,DWORD dy,DWORD dwData,DWORD dwExtralnfo);

mouse_event(MOUSEEVENT_LEFTDOWN,0,0,0,0);  //模拟左键按下事件
mouse_event(MOUSEEVENT_LEFTUP,0,0,0,0); //模拟右键按下事件
7、 获取窗口对应进程ID。DWORD GetWindowThreadProcessld(HWND hwnd,LPDWORD lpdwProcessld);
DWORD processId;
GetWindowThreadProcessId(gameH,
&processId); // 获取窗口对应进程ID
8、根据进程ID打开进程。
HANDLE processH = OpenProcess(PROCESS_ALL_ACCESS,0,processId);
9、读取进程内存。
DWORD byread; //实际读取的字节,当读取失败,可来看看到底正确读取了多少字节
LPCVOID pbase = (LPCVOID)0x00B808E0; //读取从0x00B808E0开始的数据
unsigned int m_num; //缓冲区(相当于DWORD m_num;)
LPVOID nbuffer = (LPVOID) &m_num;
ReadProcessMemory(processH,pbase,nbuffer,
4,&byread); //读4字节数据

相关阅读 更多 +
排行榜 更多 +
方块枪战战场安卓版

方块枪战战场安卓版

飞行射击 下载
战斗火力射击安卓版

战斗火力射击安卓版

飞行射击 下载
空中防御战安卓版

空中防御战安卓版

飞行射击 下载