草庐IT

DLL_EXPORT

全部标签

c++ - 记录dll API然后模仿它

有没有什么工具可以在一些c++dll中记录API,然后回放。在我们的客户站点,我们有一台机器,上面装有一些供应商软件,可以公开其功能。我们想录制该dll,然后在办公室模仿它。知道我们如何做到这一点吗?感谢您的帮助。 最佳答案 您可以从Detours开始或其开源等效项EasyHook.您的Hook函数可以记录事件,然后回到办公室您可以编写一个替代DLL来重播该事件。 关于c++-记录dllAPI然后模仿它,我们在StackOverflow上找到一个类似的问题:

c++ - 如何安全地从 DLL 连接到消息泵?

我正在尝试从加载我的DLL的进程中获取消息。我试过:SetWindowsHookEx(WH_CALLWNDPROC,(HOOKPROC)WndProc,hInstance,0);这给了我关于“程序X无法启动,因为系统中缺少Y.dll”的错误弹出窗口。这就是我在标题中加上“安全”的原因。我也试过:SetWindowsHookEx(WH_CALLWNDPROC,(HOOKPROC)WndProc,hInstance,threadId);threadId是我的DLLMain中GetCurrentThreadId()的结果。这个有效,但我没有收到任何窗口消息(只有一堆512和1025)。

c++ - 作为 DLL 的 GIT C/C++ 库

我想知道是否有人可以推荐JGit之类的库,但它是用C/C++编写的。本质上我们需要的是dll文件,我们可以将其与我们的应用程序捆绑在一起以初始化repo并每天从repo中提取数据。 最佳答案 我用了3秒的谷歌搜索才得出:libgit2. 关于c++-作为DLL的GITC/C++库,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/8038135/

mysql - 设置 rails 找到 LIBMYSQL.dll 的默认位置

我在Windows7上并通过XAMPP设置mysql。我现在开始一个新的Rails项目(我第一次在Rails中开发),并且刚刚设置了这个项目。我想启动服务器,所以我使用了railsserver。然而它提示说"Theprogramcan'tstartbecauseLIBMYSQL.dllismissingfromyourcomputer"我知道libmysql.dll的存储位置,那么我该如何告诉Rails去那里查找呢? 最佳答案 Libmysql.dll文件位于mysql安装的bin目录中。Ruby\bin目录中还需要有它的副本。将它

c++ - 如何发现 DLL 是否在 Windows 服务的上下文中运行?

我正在编写一个DLL,它可以在服务的上下文中运行,并且可以加载到标准的win32进程中。如何检测它是在服务上下文中运行还是在标准win32进程上下文中运行? 最佳答案 根据Session0Isolation,在Vista中引入,Windows服务在session0中运行。要确定进程是否在session0中执行,您可以使用ProcessIdToSessionId功能:DWORDsession_id;if(ProcessIdToSessionId(GetCurrentProcessId(),&session_id)){std::cout

c - 将参数传递给我的 lua dll 函数

如何将参数传递给我的luadll函数?我做了一个简单的luadll函数:staticintfunctionName(lua_State*L,intarg1,chararg2[]){printf("runningmydll:\n");printf("passingnumber:%dpassingstring=%s",arg1,arg2);return0;}并在lua中使用它来运行函数:require"myTestDll";myTestDll.functionName(1231544,"HelloWorld,I'mrunningmyDLL.");但结果是它打印了错误的数字,甚至没有接近正确

windows - 旧的 16 位应用程序间歇性地导致 WIN87EM.DLL 中的 GPF

我有一个旧的16位应用程序,它是为Windows3.1开发的。它执行一些计算并且是更复杂系统的一部分。系统为程序设置输入,并收集输出结果。不幸的是,16位程序在此期间仍然存在,因此我们必须解决它在现代操作系统上造成的问题。系统运行在WindowsXP上,在WindowsXP物理机上运行正常。我遇到问题的机器是在Debian机器上的VirtualBox(版本4.1.12)上运行的WindowsXP实例。物理计算机是HPProliant服务器,具有四核至强3.4Ghz。我正在使用远程桌面从我的Windows7机器访问计算机。我得到的错误是,“程序在地址为0001:02C9的WIN87EM.

windows - 我如何知道我的程序是否已经加载了某个 DLL?

我正在开发一个基于插件架构的程序。所有插件都是DLL,其中一些可以依赖于其他插件DLL。我希望能够执行以下操作:在程序启动时,扫描插件文件夹。对于找到的每个插件,检查该插件是否已经加载。(这可能是,如果以前加载的插件导致它作为依赖项加载)。如果没有,加载它。第一步和第三步很简单,但是我该怎么做第二步呢?是否有一个winapi调用,给定一个DLL的文件名,会告诉我该DLL当前是否已加载到当前进程中?(或者可能需要一个文件名和一个进程句柄?)拜托,没有回答说“无论如何都要加载它。”我知道那会奏效。我正在努力避免这种情况。 最佳答案 Ge

c++ - 如何在当前目录下强加dll文件?

此应用程序使用msado15.dll、msvcr100.dll和许多dll。我发现应用程序不会使用ProcessExplorer和DependencyWalker在当前目录中加载msado15.dll和msvcr100.dll文件。相反,此应用程序从winsxs文件夹或不同的Windows系统目录加载dll。我想阻止它在“非当前目录”中加载dll即使没有我复制的dll也能正常工作。我该如何解决这个问题?任何帮助将不胜感激。提前致谢! 最佳答案 我做了一些研究,这实际上很容易。根据thisarticle,您所要做的就是创建一个名为(Y

windows - MFC .dll 调试断言

我正在尝试创建一个shell扩展,但我在这行代码中得到了一个调试断言:_AFXWIN_INLINEHINSTANCEAFXAPIAfxGetResourceHandle(){ASSERT(afxCurrentResourceHandle!=NULL);//herereturnafxCurrentResourceHandle;}它有什么问题?我创建了这个类classCMyExtShellExtApp:publicCWinApp{public:virtualBOOLInitInstance();virtualintExitInstance();DECLARE_MESSAGE_MAP()};