我编写一个Dll,希望这个Dll在注入游戏后能自动运行
有朋友指点我,在DllMain中加入代码
Case DLL_PROCESS_ATTACH;
//运行代码
break;
我建立的DLL名称为GameDLl
在GameDll.cpp中加入这段代码
BOOL APIENTRY DllMain( HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved )
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
//通常代码都加在这里
Game_Run();
break;
case DLL_THREAD_ATTACH:
break;
case DLL_THREAD_DETACH:
break;
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
在生成Dll时提示错误,在多个位置定义了DllMain
查找其它地方的定义发现,在process.h中有这个定义,两个函数起冲突了
应该如何做才能实现在Dll被注入游戏进程后自动运行呢?
难道是起头Process.h中的WINAPI CComModule::DllMain 中加入代码?
是的,用一个exe程序将Dll名称写入游戏内存,远程注入代码调用游戏的LoadLibrary加载Dll
我想实现的是该Dll在被游戏加载后自动运行。应该如何做?
关于VC++ DLL中的DllMain
当你用LoadLibrary加载你的DLL,或第一次调用你的DLL中的函数时,DLLMAIN才会被执行,不是一开始就执行DLLMAIN的
关于VC++ DLL中的DllMain
MFC的DLL自动创建了一个类,也就是你所谓的CGameDllAppInitInstance也就是初始化实例,相当于 case DLL_PROCESS_ATTACH另外应该也有ExitInstance之类,也就是退出实例,相当于 DLL_PROCESS_DETACH:CWinApp::InitInstance();\/\/ 代码添加在这里return TRUE;...
关于VC++ DLL中的DllMain
当你用LoadLibrary加载你的DLL,或第一次调用你的DLL中的函数时,DLLMAIN才会被执行,不是一开始就执行DLLMAIN的 打字不易,如满意,望采纳。
VC++调试DLL程序怎么会不从BOOL WINAPI DllMain入口?
DllMain是一个可选的入口函数,它只有在动态链接库被加载或卸载时会被调用,其中的第一个参数是传入调用者模块句柄,参数二表示调用目的,参数三保留。详细请参考如下链接。参考:http:\/\/baike.baidu.com\/view\/3549543.htm?fr=aladdin Dll提供了函数(方法)供其它模块调用,因此,只需要得到这些方法的接...
DllMain为DllMain换名
在早期的SDK版本中,实际上,DLL的初始入口点函数有个别名,曾被称为DllEntryPoint。一个鲜为人知的事实是,你可以自定义DLL的入口函数名称。让我们以VC++ 6.0为例,具体演示如何进行更改。需要注意的是,尽管可以更改函数名,但函数的参数和返回值必须与原DllMain函数保持一致,且必须为__stdcall类型,...
VC++调试DLL程序怎么会不从BOOL WINAPI DllMain入口?
首先,你的DLL正常加载了吗,并显示如下窗口中的“‘已加载符号’”本例用的DLL名为USBComponent.dll,可看到已经被加载符号了,在DllMian中加断点,开始调试,然后即命中断点,如下图:如果没有命中断点,可能有以下内方面的原因:exe加载的Dll与当前编译的版本不一致。DLL没有产生符号文件 DLL未被加载...
VC++6.0中,请教DLL使用计时器或者线程实现循环执行某个功能的问题?
其实,DLL与EXE是非常不同的两类可执行模块,尤其在线程的创建释放等事务上面,而对于在DLLMAIN中创建线程,那则是非常不能原谅的事情,因为此时创建的线程无法正常释放。不过,要解决你这个问题,其实并不是很难的事情,有如下几步:1. 运行一个DLL。2. 在DLL加载完成之后,显示的使用函数启动一个线程...
dll中dllmain调用什么会死锁
在生成Dll时提示错误,在多个位置定义了DllMain查找其它地方的定义发现,在process.h中有这个定义,两个函数起冲突了使用VC++ IDE 项目生成向导生成DLL项目,不应该会出现这个编译错误提示 微软的东西,不应该会这么菜的 Win32的DLL,或者 MFC
VC++调试C语言程序,把函数调用改为直接执行其代码,为何导致不能调试...
按照C语言逐条执行的原理,你用代码代替函数是没错的,我认为原因有以下2点:1.你的程序中有多处引用了该函数,你值替换了其中一个。2.你的函数中的某些变量是在原有库下声明的,你改变了函数的位置,在新的位置中不包含这些库函数,导致程序无法识别这些变量。
请问C++如何调用DLL文件里的东西?
你的dll应该是缺少导出函数吧。我给你一个例子:dll工程:\/\/dll.h extern "C" int __declspec(dllexport) add(int,int);\/\/dll.cpp include <windows.h> include "dll.h"BOOL APIENTRY DllMain(HANDLE hModule,DWORD ul_reason_for_call,LPVOID lpReserved){ switch(ul_reason_for_call){ case ...