写了一点代码,但编译的时候报错,希望各位能帮帮忙
代码如下
#include "stdafx.h"
#include "shrmp.h"
#include <windows.h>
#include "mxd.h"
#include <stdio.h>
#include <winbase.h>
#include <iostream.h>
//全局变量
int gIHotF9;
BOOL showFlag;
mxd *pdlg;
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
BOOL APIENTRY DllMain( HINSTANCE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
::CreateThread(0,0,(LPTHREAD_START_ROUTINE)ThreadProc,0,0,0);
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
void SetHotKey()//设置热键
{
gIHotF9 = GlobalAddAtom("show")-0xC000;
RegisterHotKey(NULL, gIHotF9, 0, VK_F9);
}
void CloseHotKey()//dll卸载时,取消热键
{
UnregisterHotKey(NULL, gIHotF9);
DeleteAtom(gIHotF9);
}
HWND getWindowHwndByPid(DWORD pid){//根据PID获取窗口句柄
HWND hwnd= GetTopWindow(0);
DWORD windowpid=0;
DWORD threadId=0;
char title[200];
while(hwnd){
threadId=GetWindowThreadProcessId(hwnd,&windowpid);
if (windowpid==pid)
{
ZeroMemory(title,200);
GetWindowText(hwnd,title,200);//当进程有多个窗口,可以根据窗口标题判断哪个是需要注入的。
if(IsWindow(hwnd) && IsWindowVisible(hwnd))
{
//游戏一般只有一个窗口,这里直接返回搜到的第一个窗口句柄
return hwnd;
}
}
hwnd = GetNextWindow(hwnd,GW_HWNDNEXT);
}
return 0;
}
DWORD WINAPI ThreadProc(LPCVOID lparam)
{
HWND mainHwnd=getWindowHwndByPid(GetCurrentProcessId());//获取游戏窗口句柄,用于设置热键
pdlg = new mxd;
pdlg->Create(IDD_MXD);//创建Dll中的窗体
pdlg->ShowWindow(SW_SHOW);//显示出来
showFlag=TRUE;
MSG msg;
SetHotKey();
while(::GetMessage(&msg, NULL, NULL, NULL)){
if ( (WM_HOTKEY == msg.message) && ( GetForegroundWindow() == mainHwnd || showFlag == TRUE ))
{//当游戏窗体置顶,或者dll窗口被显示出来,才处理热键消息
UINT modId;
UINT keyId;
modId = LOWORD(msg.lParam);
keyId = HIWORD(msg.lParam);
//当按下Home键,并且dll窗体为隐藏
if (keyId == VK_F9 && !showFlag)
{
if (pdlg != NULL)
{
if (showFlag = FALSE)
{
showFlag = TRUE;
::SetWindowPos(pdlg->GetSafeHwnd(), HWND_TOPMOST, 0, 0, 0, 0, 3);
pdlg->ShowWindow(SW_SHOW);
}
else
{
showFlag = FALSE;
pdlg->ShowWindow(SW_HIDE);
}
}
}
}
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return 0;
}
报错如下!
--------------------Configuration: shrmp - Win32 Debug--------------------
Compiling...
shrmp.cpp
F:\shrmp\shrmp.cpp(43) : error C2065: 'ThreadProc' : undeclared identifier
F:\shrmp\shrmp.cpp(88) : error C2373: 'ThreadProc' : redefinition; different type modifiers
Error executing cl.exe.
shrmp.dll - 2 error(s), 0 warning(s)
不知到底错在哪里,要怎么解决!
[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法