我有兴趣将一个成熟的MFC应用程序(窗口、菜单、对话框等)应用程序转换成一个DLL,以便它可以进入其他可执行文件的虚拟地址空间。在我投入太多时间之前,我想知道这是否可行,甚至可能。我认为CreateProcess不会起作用,因为它不会(?)像DLL那样将进程带入与调用者相同的地址空间。我做了一些研究并发现了以下内容:MSDN上的一个页面,“TN011:使用MFC作为DLL的一部分”,它很有用,但是是从您从头开始编写DLL的角度编写的。以下引用了EXE和DLL之间的区别:“应用程序可以拥有诸如堆栈、全局内存、文件句柄和消息队列之类的东西,但DLL不能。”我了解DLL的基础知识,但大多数D
我有一个由应用程序加载的dll,我无法修改应用程序的源代码(因为我没有源代码)并且我想使用插件注册一个系统范围的热键。我可以通过RegisterHotKey(NULL,1,MOD_CONTROL|MOD_NOREPEAT,0x42)之类的方式注册热键(参见here),但我不确定应该如何处理消息队列,我应该一个新线程并在dll初始化时创建消息处理循环?接收消息的是我的dll还是加载dll的应用程序,最后还有更好的方法吗? 最佳答案 这是应该如何完成的:你的DLL创建一个线程此线程运行消息循环(GetMessage()/Dispatch
像这样导入dll时:[DllImport("user32.dll")]staticexternboolSwapMouseButton(boolfSwap);privatevoidbutton1_Click(objectsender,EventArgse){SwapMouseButton(false);}如何知道user32.dll中有一个名为SwapMouseButton的方法,它接受一个bool参数并返回一个bool值?显然没有智能感知来挽救局面。那么是否有一个网站列出了所有这些,或者我可以在其中键入user32.dll的程序会为我发现它? 最佳答案
是否可以加载没有“dll”扩展名的dll文件?谢谢 最佳答案 是的,只需提供完整的文件名,包括扩展名(如果文件名不包含扩展名,则不提供扩展名)。 关于windows-LoadLibrary其他扩展名为'dll'的文件,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/7244918/
我们的代码库中有许多MFC扩展dll,其中许多在项目.rc文件(IDS_...、IDD_...、IDB_...等)中定义了嵌入式Windows资源。我们使用数字标识符来定义我们的资源,特别注意我们的资源ID不会在dll之间发生冲突,这需要一些管理来确保我们的开发人员不会使用相同的编号。我意识到字符串类型的资源标识符可能是一种简单的方法,这意味着我们可以为每个不同的dll中的每个资源定义唯一的标识符。我的问题是,这样做是否存在任何技术问题,例如:MFCdll/资源链是否仍能正常运行?VisualStudio资源编辑器还能用吗?我没有在MS技术说明中找到任何说明这将是一个问题的内容-我只是
我打算使用id3lib在我的申请中。我正在寻找一种将库用作DLL的方法。我注意到他们以各种形式发布了图书馆:其中之一是windowsbinary.我的目标平台是Windows,我将使用Qt4.8。在我解压windowsbinary中的文件后,我在Release文件夹中发现了以下文件:id3lib.dllid3lib.expid3lib.lib我知道如何在Qt中使用DLL给定DLL、函数原型(prototype)所在的一个或多个头文件,以及有或没有*.lib文件。此包不附带头文件。我应该如何在没有任何头文件的情况下使用这个包?这里的*.lib和*.exp文件的用途是什么?据我所知,*.l
我正在使用来自article的代码自定义网络浏览器的上下文菜单。但是当我运行这段代码时HRESULTCBrowserHost::ShowContextMenu(DWORDdwID,POINT*ppt,IUnknown*pcmdTarget,IDispatch*pdispObject){#defineIDR_BROWSE_CONTEXT_MENU24641#defineSHDVID_GETMIMECSETMENU27#defineSHDVID_ADDMENUEXTENSIONS53HRESULThr;HINSTANCEhinstSHDOCLC;HWNDhwnd;HMENUhMenu;CC
我正在创建一个.NETWindows服务来与智能卡读卡器通信。主要组件是一个名为winscard.dll的WindowsDLL,我在.NET代码中将其与DLLImport属性一起使用。在WindowsXP32位上一切正常,但是当我在Windows7x64上运行它时,我在调用SCardTransmit时收到0x6ERROR_INVALID_HANDLE结果。该应用程序(作为命令行应用程序的服务)可以连接到读卡器,但无法从卡中读取任何内容。有什么想法吗? 最佳答案 SCardEstablishContext有问题,它将返回0但也处理0。
我开发了一个WCF服务,它使用net.tcp绑定(bind)和读取和写入文件到文件系统。当我启动Windows服务(在控制台中)时,即使sample.dll在文件夹中,我也会收到以下错误:无法找到程序集文件sample.dll此特定WCF服务托管在Windows764位上运行的Windows服务中,我有以下问题:我应该为我的应用程序使用哪个帐户:用户/网络服务/本地系统/本地服务为什么操作系统不能加载dll,即使它存在?预先感谢您的帮助! 最佳答案 对于dll,您应该在OnStart方法的开头添加以下代码行。System.Envir
我刚开始使用DLL。尽管我在Linux上做过一些严肃的C++编程并且知道DLL是什么。我需要使用自定义操作编写Windows安装程序。为此,我在VisualStudio2010中创建了一个新的DLL项目。当我尝试在StdAfx.h文件中包含msi.h时,出现以下错误:1>------Buildstarted:Project:CustomAction,Configuration:DebugWin32------1>DllEntry.cpp1>c:\programfiles(x86)\microsoftsdks\windows\v7.0a\include\msi.h(86):errorC2