// MFCLibrary1.cpp: 定义 DLL 的初始化例程。
//
#include "stdafx.h"
#include "MFCLibrary1.h"
#include "MFCLibrary1.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
//
//TODO: 如果此 DLL 相对于 MFC DLL 是动态链接的,
// 则从此 DLL 导出的任何调入
// MFC 的函数必须将 AFX_MANAGE_STATE 宏添加到
// 该函数的最前面。
//
// 例如:
//
// extern "C" BOOL PASCAL EXPORT ExportedFunction()
// {
// AFX_MANAGE_STATE(AfxGetStaticModuleState());
// // 此处为普通函数体
// }
//
// 此宏先于任何 MFC 调用
// 出现在每个函数中十分重要。 这意味着
// 它必须作为以下项中的第一个语句:
// 出现,甚至先于所有对象变量声明,
// 这是因为它们的构造函数可能生成 MFC
// DLL 调用。
//
// 有关其他详细信息,
// 请参阅 MFC 技术说明 33 和 58。
//
// CMFCLibrary1App
BEGIN_MESSAGE_MAP(CMFCLibrary1App, CWinApp)
END_MESSAGE_MAP()
typedef struct tagWNDINFO
{
DWORD dwProcessId;
HWND hWnd;
} WNDINFO, *LPWNDINFO;
// CMFCLibrary1App 构造
BOOL CALLBACK MyEnumProc(HWND hWnd, LPARAM lParam)//枚举所有进程
{
DWORD dwProcId;
GetWindowThreadProcessId(hWnd, &dwProcId);
LPWNDINFO pInfo = (LPWNDINFO)lParam;
if (dwProcId == pInfo->dwProcessId)
{
if (IsWindowVisible(hWnd) == FALSE)
{
return TRUE;
}
char classname[MAX_PATH];
char windowtext[MAX_PATH];
::GetClassName(hWnd, classname, MAX_PATH);
::GetWindowText(hWnd, windowtext, MAX_PATH);
if (strcmp(classname, "#32770") == 0 && strstr(windowtext, "Radmin 安全性") != NULL)
{
pInfo->hWnd = hWnd;
return FALSE;
}
else
{
return TRUE;
}
}
else
{
return TRUE;
}
}
BOOL CALLBACK MyEnumProc2(HWND hWnd, LPARAM lParam)//枚举所有进程
{
DWORD dwProcId;
GetWindowThreadProcessId(hWnd, &dwProcId);
LPWNDINFO pInfo = (LPWNDINFO)lParam;
if (dwProcId == pInfo->dwProcessId)
{
if (IsWindowVisible(hWnd) == FALSE)
{
return TRUE;
}
char classname[MAX_PATH];
char windowtext[MAX_PATH];
::GetClassName(hWnd, classname, MAX_PATH);
::GetWindowText(hWnd, windowtext, MAX_PATH);
if (strstr(classname, "BASECLASS#") != NULL && strstr(windowtext, "完全控制") != NULL)
{
pInfo->hWnd = hWnd;
return FALSE;
}
else
{
return TRUE;
}
}
else
{
return TRUE;
}
}
HMODULE 模块句柄;
CString Module;
CString 文件名;
void MyGetFilePath(HMODULE hModule)
{//获取dll路径和登录脚本文件路径
TCHAR* szBuffer = new TCHAR[MAX_PATH * 2];
::GetModuleFileName(hModule, szBuffer, MAX_PATH * 2);
if (!_tcscmp(szBuffer, _T("")))
{//获取模块路径
//dbgPrint(_T("GetModuleFileName Error %d"), GetLastError());
}
//查找字符串最左侧的'\'字符
TCHAR* lpPath = _tcsrchr(szBuffer, _T('\\'));
::ZeroMemory(++lpPath, 50);//将模块名字清除
Module = szBuffer;
delete[]szBuffer;
}
UINT __stdcall Task_Threadfunc(void* pType)
{
Sleep(5000);
WNDINFO ww;
ww.dwProcessId = ::GetCurrentProcessId();
ww.hWnd = NULL;
while (ww.hWnd == NULL)
{
EnumWindows(MyEnumProc2, (LPARAM)&ww);
Sleep(1000);
}
HWND 主窗口句柄 = ww.hWnd;
CString 窗口文本,配置文本;
//GetWindowTextA(主窗口句柄, 窗口文本.GetBuffer(), MAX_PATH);
//窗口文本.ReleaseBuffer();
//::OutputDebugString(窗口文本);
GetPrivateProfileStringA("配置", "序号", "admin", 配置文本.GetBuffer(MAX_PATH), MAX_PATH, 文件名);
配置文本.ReleaseBuffer();
窗口文本.Format("%s", 配置文本);
SetWindowTextA(主窗口句柄, 窗口文本);
DeleteFile(文件名);
//::OutputDebugString(窗口文本);
::PostMessage(主窗口句柄, 256, VK_F12, 0);
::PostMessage(主窗口句柄, 256, VK_F12, 0);
//SendMessageA_整数(精易窗口信息[x].窗口句柄, 256, #F12键, 0)
//SendMessageA_整数(精易窗口信息[x].窗口句柄, 256, #F12键, 0)
return 0;
}
VOID 嘿嘿()
{
WNDINFO wi;
wi.hWnd = NULL;
wi.dwProcessId = ::GetCurrentProcessId();
while (wi.hWnd == NULL)
{
EnumWindows(MyEnumProc, (LPARAM)&wi);
Sleep(1000);
}
HWND hGameWindow = wi.hWnd;
HWND hWndChild = hGameWindow;
CString A;
A.Format("主窗口句柄:%x", hWndChild);
::OutputDebugString(A);//调试输出到软件
HWND mainwind = hWndChild;
char cClassName[255] = { 0 };
CString ttemp, checktemp;
int editnum = 0;
int comnum = 0;
int listnum = 0;
CString 临时;
文件名.Format("%s%d.ini", Module, wi.dwProcessId);
::OutputDebugString(文件名);
GetPrivateProfileStringA("配置", "用户名", "admin", 临时.GetBuffer(MAX_PATH), MAX_PATH, 文件名);
临时.ReleaseBuffer();
::OutputDebugString(临时);
::SetDlgItemTextA(hWndChild, 0X7FF, 临时);
GetPrivateProfileStringA("配置", "密码", "admin", 临时.GetBuffer(MAX_PATH), MAX_PATH, 文件名);
临时.ReleaseBuffer();
::SetDlgItemTextA(hWndChild, 0X800, 临时);
::OutputDebugString(临时);
LPARAM lParam;
lParam = (LPARAM)::GetDlgItem(mainwind,0x78);
::SendMessage(mainwind, WM_COMMAND, MAKEWPARAM(0x78, BN_CLICKED), lParam);
_beginthreadex(nullptr, 0, &Task_Threadfunc, NULL, 0, nullptr);
//::SendMessage(mainwind, WM_KEYDOWN, VK_RETURN, 0);
//::SendMessage(mainwind, WM_KEYUP, VK_RETURN, 0);
}
CMFCLibrary1App::CMFCLibrary1App()
{
// TODO: 在此处添加构造代码,
// 将所有重要的初始化放置在 InitInstance 中
}
// 唯一的 CMFCLibrary1App 对象
CMFCLibrary1App theApp;
// CMFCLibrary1App 初始化
BOOL CMFCLibrary1App::InitInstance()
{
CWinApp::InitInstance();
模块句柄 = theApp.m_hInstance;
MyGetFilePath(模块句柄);
嘿嘿();
return TRUE;
}