扫雷游戏外挂实例。
实现功能:
1再菜单中添加自动完成菜单。
2显示鼠标当前位置是否为雷。
源代码分为两部分。
1app部分
main.h
//
---------------------------------------------------------------------------
#ifndef mainH
#define mainH
// ---------------------------------------------------------------------------
#include < Classes.hpp >
#include < Controls.hpp >
#include < StdCtrls.hpp >
#include < Forms.hpp >
#define WM_MYHOOK (WM_APP +1024)
// ---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // IDE-managed Components
TButton * Button2;
TButton * Button3;
void __fastcall FormCreate(TObject * Sender);
void __fastcall Button2Click(TObject * Sender);
void __fastcall Button3Click(TObject * Sender);
private : // User declarations
HINSTANCE hDLL;
HWND hHookedWindow;
unsigned long MineHeight; // 雷区高度起始地址
unsigned long MineWidth; // 雷区?度起始地址
unsigned long MineStartAddress; // 雷区内容起始地址,依次是0x01005361+高*32+?
void __fastcall WMMYHOOK(TMessage & Message);
public : // User declarations
__fastcall TForm1(TComponent * Owner);
BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(WM_MYHOOK, TMessage, WMMYHOOK);
END_MESSAGE_MAP(TForm);
};
// ---------------------------------------------------------------------------
extern PACKAGE TForm1 * Form1;
// ---------------------------------------------------------------------------
#endif
#ifndef mainH
#define mainH
// ---------------------------------------------------------------------------
#include < Classes.hpp >
#include < Controls.hpp >
#include < StdCtrls.hpp >
#include < Forms.hpp >
#define WM_MYHOOK (WM_APP +1024)
// ---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // IDE-managed Components
TButton * Button2;
TButton * Button3;
void __fastcall FormCreate(TObject * Sender);
void __fastcall Button2Click(TObject * Sender);
void __fastcall Button3Click(TObject * Sender);
private : // User declarations
HINSTANCE hDLL;
HWND hHookedWindow;
unsigned long MineHeight; // 雷区高度起始地址
unsigned long MineWidth; // 雷区?度起始地址
unsigned long MineStartAddress; // 雷区内容起始地址,依次是0x01005361+高*32+?
void __fastcall WMMYHOOK(TMessage & Message);
public : // User declarations
__fastcall TForm1(TComponent * Owner);
BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(WM_MYHOOK, TMessage, WMMYHOOK);
END_MESSAGE_MAP(TForm);
};
// ---------------------------------------------------------------------------
extern PACKAGE TForm1 * Form1;
// ---------------------------------------------------------------------------
#endif
main.cpp
//
---------------------------------------------------------------------------
#include < vcl.h >
#pragma hdrstop
#include " main.h "
// ---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 * Form1;
typedef int (WINAPI * sthndl)(HWND,HWND);
sthndl SetHandle;
typedef int (WINAPI * unsub)();
unsub UnSubClass;
// ---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent * Owner)
: TForm(Owner)
{
hDLL = NULL;
MineHeight = 0x01005338 ;
MineWidth = 0x01005334 ;
MineStartAddress = 0x01005361 ;
}
// ---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject * Sender)
{
hDLL = LoadLibrary((LPCTSTR) " ShaoLeiWaiGua.dll " );
if (hDLL == NULL){
exit( 1 );
}
hHookedWindow = FindWindow(NULL, " マインスイーパ " );
SetHandle = (sthndl)GetProcAddress(hDLL, " SetHandle " );
UnSubClass = (unsub)GetProcAddress(hDLL, " UnSubclass " );
}
// ---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject * Sender)
{
hHookedWindow = FindWindow(NULL, " マインスイーパ " );
if (hHookedWindow == NULL){
hHookedWindow = FindWindow(NULL, " Minesweeper " )
#include < vcl.h >
#pragma hdrstop
#include " main.h "
// ---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 * Form1;
typedef int (WINAPI * sthndl)(HWND,HWND);
sthndl SetHandle;
typedef int (WINAPI * unsub)();
unsub UnSubClass;
// ---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent * Owner)
: TForm(Owner)
{
hDLL = NULL;
MineHeight = 0x01005338 ;
MineWidth = 0x01005334 ;
MineStartAddress = 0x01005361 ;
}
// ---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject * Sender)
{
hDLL = LoadLibrary((LPCTSTR) " ShaoLeiWaiGua.dll " );
if (hDLL == NULL){
exit( 1 );
}
hHookedWindow = FindWindow(NULL, " マインスイーパ " );
SetHandle = (sthndl)GetProcAddress(hDLL, " SetHandle " );
UnSubClass = (unsub)GetProcAddress(hDLL, " UnSubclass " );
}
// ---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject * Sender)
{
hHookedWindow = FindWindow(NULL, " マインスイーパ " );
if (hHookedWindow == NULL){
hHookedWindow = FindWindow(NULL, " Minesweeper " )