グローバルフック過TP
10127 ワード
はい、txのTPです.
//Game.cpp:DLLアプリケーションのエクスポート関数を定義します.//
include “stdafx.h”
include “Game.h”
include “stdio.h”
HHOOK m_hook = NULL; LRESULT CALLBACK CBTProc(//SETwindowsHOOKのコールバック関数int nCode,WPARAM wParam,LPARAM lParam){
}
//DLLの書き出し関数GAME_API void SetHook() {
} GAME_API void UnHook(){ if (m_hook) ::UnhookWindowsHookEx(m_hook); } //入力するIDがクラス名で見つけたID void check(){HWND hwnd=::FindWindow(L"TWINTROL",NULL);/TXguiFoundationはゲームウィンドウクラス名,CalcFrame DWORD pid;
}
//グローバルTPDlg.cpp:実装ファイル//
include “stdafx.h”
include「グローバル過TP.h」
include「グローバル過TPDlg.h」
include “afxdialogex.h”
include “Game.h”
ifdef _DEBUG
define new DEBUG_NEW
endif
//アプリケーション「概要」メニュー項目用CAboutDlgダイアログ
class CAboutDlg : public CDialogEx { public: CAboutDlg();
//ダイアログデータenum{IDD=IDD_ABOUTBOX};
//protectedの実装:DECLARE_MESSAGE_MAP() };
CAboutDlg::CAboutDlg() : CDialogEx(CAboutDlg::IDD) { }
void CAboutDlg::DoDataExchange(CDataExchange* pDX) { CDialogEx::DoDataExchange(pDX); }
BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx) END_MESSAGE_MAP()
//CグローバルTPDlgダイアログ
Cグローバル過TPDlg::Cグローバル過TPDlg(CWnd*pParent/=NULL/):CDialogEx(Cグローバル過TPDlg::IDD,pParent){m_hIcon=AfxGetApp()->LoadIcon(IDR_MAINFRAME);}
void CグローバルTPDlg::DoDataExchange(CDataExchange*pDX){CDialogEx::DoDataExchange(pDX);}
BEGIN_MESSAGE_MAP(Cグローバル過TPDlg,CDialogEx)ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() ON_BN_CLICKED(IDOK,&CグローバルTPDlg::OnBnClickedOk)END_MESSAGE_MAP()
//CグローバルTPDlgメッセージハンドラ
BOOL Cグローバル過TPDlg::OnInitDialog(){CDialogEx::OnInitDialog();
}
void CグローバルTPDlg::OnSysCommand(UINT nID,LPARAM lParam){if((nID&0 xFFF 0)==IDM_ABOUTBOX){CAboutDlg dlgAbout;dlgAbout.DoModal();}else { CDialogEx::OnSysCommand(nID, lParam); } }
//ダイアログボックスに最小化ボタンを追加する場合は、次のコード//でアイコンを描画する必要があります.ドキュメント/ビューモデルを使用するMFCアプリケーションの場合、//これはフレームワークによって自動的に完了します.
void Cグローバル過TPDlg::OnPaint(){if(IIconic(){CPaintDC dc(this);//描画用デバイスコンテキスト
}
//ユーザが最小化ウィンドウをドラッグすると、システムはこの関数を呼び出してカーソル//表示を取得します.HCURSOR Cグローバル過TPDlg::OnQueryDragIcon(){return static_cast(m_hIcon);}
void CグローバルTPDlg::OnBnClickedOk()/TODO:ここにコントロール通知ハンドラコード//CALOgEx::OnOK();SetHook();}を追加
「やあ、コードをつけたら、圧縮バッグに入れないでください.
// dllmain.cpp : DLL 。
#include "stdafx.h"
#include "Game.h"
BOOL APIENTRY DllMain( HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
check(); //DLL check ID ID
break;
case DLL_THREAD_ATTACH:
break;
case DLL_THREAD_DETACH:
break;
case DLL_PROCESS_DETACH:
UnHook();// , UnHook() HOOK
break;
}
return TRUE;
}
//Game.cpp:DLLアプリケーションのエクスポート関数を定義します.//
include “stdafx.h”
include “Game.h”
include “stdio.h”
HHOOK m_hook = NULL; LRESULT CALLBACK CBTProc(//SETwindowsHOOKのコールバック関数int nCode,WPARAM wParam,LPARAM lParam){
return CallNextHookEx(m_hook, nCode, wParam, lParam);
}
//DLLの書き出し関数GAME_API void SetHook() {
m_hook = SetWindowsHookEx(WH_CBT, CBTProc, GetModuleHandle(L"Game.dll"), 0);// HOOK 0
//MessageBox(0, L" ", L" ", 0);
} GAME_API void UnHook(){ if (m_hook) ::UnhookWindowsHookEx(m_hook); } //入力するIDがクラス名で見つけたID void check(){HWND hwnd=::FindWindow(L"TWINTROL",NULL);/TXguiFoundationはゲームウィンドウクラス名,CalcFrame DWORD pid;
GetWindowThreadProcessId(hwnd, &pid); //
if (GetCurrentProcessId() == pid)
{
MessageBox(hwnd, L" ok", L" ", 0);
//printf("QQ %d",hwnd);
}
}
// TP.cpp : 。
//
#include "stdafx.h"
#include " TP.h"
#include " TPDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
// C TPApp
BEGIN_MESSAGE_MAP(C TPApp, CWinApp)
ON_COMMAND(ID_HELP, &CWinApp::OnHelp)
END_MESSAGE_MAP()
// C TPApp
C TPApp::C TPApp()
{
//
m_dwRestartManagerSupportFlags = AFX_RESTART_MANAGER_SUPPORT_RESTART;
// TODO: ,
// InitInstance
}
// C TPApp
C TPApp theApp;
// C TPApp
BOOL C TPApp::InitInstance()
{
// Windows XP
// ComCtl32.dll 6 ,
// InitCommonControlsEx()。 , 。
INITCOMMONCONTROLSEX InitCtrls;
InitCtrls.dwSize = sizeof(InitCtrls);
//
// 。
InitCtrls.dwICC = ICC_WIN95_CLASSES;
InitCommonControlsEx(&InitCtrls);
CWinApp::InitInstance();
AfxEnableControlContainer();
// shell ,
// shell shell 。
CShellManager *pShellManager = new CShellManager;
// “Windows Native” , MFC
CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManagerWindows));
//
//
// ,
//
//
// TODO: ,
//
SetRegistryKey(_T(" "));
C TPDlg dlg;
m_pMainWnd = &dlg;
INT_PTR nResponse = dlg.DoModal();
if (nResponse == IDOK)
{
// TODO:
// “ ”
}
else if (nResponse == IDCANCEL)
{
// TODO:
// “ ”
}
else if (nResponse == -1)
{
TRACE(traceAppMsg, 0, " : , 。
");
TRACE(traceAppMsg, 0, " : MFC , #define _AFX_NO_MFC_CONTROLS_IN_DIALOGS。
");
}
// shell 。
if (pShellManager != NULL)
{
delete pShellManager;
}
// , FALSE ,
// 。
return FALSE;
}
//グローバルTPDlg.cpp:実装ファイル//
include “stdafx.h”
include「グローバル過TP.h」
include「グローバル過TPDlg.h」
include “afxdialogex.h”
include “Game.h”
ifdef _DEBUG
define new DEBUG_NEW
endif
//アプリケーション「概要」メニュー項目用CAboutDlgダイアログ
class CAboutDlg : public CDialogEx { public: CAboutDlg();
//ダイアログデータenum{IDD=IDD_ABOUTBOX};
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV
//protectedの実装:DECLARE_MESSAGE_MAP() };
CAboutDlg::CAboutDlg() : CDialogEx(CAboutDlg::IDD) { }
void CAboutDlg::DoDataExchange(CDataExchange* pDX) { CDialogEx::DoDataExchange(pDX); }
BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx) END_MESSAGE_MAP()
//CグローバルTPDlgダイアログ
Cグローバル過TPDlg::Cグローバル過TPDlg(CWnd*pParent/=NULL/):CDialogEx(Cグローバル過TPDlg::IDD,pParent){m_hIcon=AfxGetApp()->LoadIcon(IDR_MAINFRAME);}
void CグローバルTPDlg::DoDataExchange(CDataExchange*pDX){CDialogEx::DoDataExchange(pDX);}
BEGIN_MESSAGE_MAP(Cグローバル過TPDlg,CDialogEx)ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() ON_BN_CLICKED(IDOK,&CグローバルTPDlg::OnBnClickedOk)END_MESSAGE_MAP()
//CグローバルTPDlgメッセージハンドラ
BOOL Cグローバル過TPDlg::OnInitDialog(){CDialogEx::OnInitDialog();
// “ ...” 。
// IDM_ABOUTBOX 。
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
BOOL bNameValid;
CString strAboutMenu;
bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);
ASSERT(bNameValid);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}
// 。 ,
//
SetIcon(m_hIcon, TRUE); //
SetIcon(m_hIcon, FALSE); //
ShowWindow(SW_MINIMIZE);
// TODO:
return TRUE; // , TRUE
}
void CグローバルTPDlg::OnSysCommand(UINT nID,LPARAM lParam){if((nID&0 xFFF 0)==IDM_ABOUTBOX){CAboutDlg dlgAbout;dlgAbout.DoModal();}else { CDialogEx::OnSysCommand(nID, lParam); } }
//ダイアログボックスに最小化ボタンを追加する場合は、次のコード//でアイコンを描画する必要があります.ドキュメント/ビューモデルを使用するMFCアプリケーションの場合、//これはフレームワークによって自動的に完了します.
void Cグローバル過TPDlg::OnPaint(){if(IIconic(){CPaintDC dc(this);//描画用デバイスコンテキスト
SendMessage(WM_ICONERASEBKGND, reinterpret_cast(dc.GetSafeHdc()), 0);
//
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;
//
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialogEx::OnPaint();
}
}
//ユーザが最小化ウィンドウをドラッグすると、システムはこの関数を呼び出してカーソル//表示を取得します.HCURSOR Cグローバル過TPDlg::OnQueryDragIcon(){return static_cast(m_hIcon);}
void CグローバルTPDlg::OnBnClickedOk()/TODO:ここにコントロール通知ハンドラコード//CALOgEx::OnOK();SetHook();}を追加
「やあ、コードをつけたら、圧縮バッグに入れないでください.