jjzjj

windows - 是什么决定 RegisterTypeLib 是写入 win32 还是 win64?

我正在处理两个基于ATL的COM项目。两者都实现DllRegisterServerSTDAPIDllRegisterServer(void){//registersobject,typelibandallinterfacesintypelibreturn_Module.RegisterServer(TRUE);}最终调用::RegisterTypeLib(pTypeLib,bstrPath,szDir);在atlbase.h:6516中。但由于某种原因,此调用使其中一个项目创建HKEY_CLASSES_ROOT\TypeLib\\\0\win64在Windows732位上使用regsv

c++ - 包装第 3 方 DLL

我有一个需要使用LoadLibrary()动态加载并使用__cdecl调用约定的第3方DLL。我需要能够使用VB6中的dll,因此我创建了一个我自己的包装器DLL,它使用__stdcall调用约定并导出所需的函数。现在有一个额外的要求,我正在努力寻找如何管理;包装的DLL为另一个应用程序提供了一个API,我需要同时连接到该应用程序的两个实例。这是一个问题,因为DLL没有session的概念,典型的交互如下所示:tpc_connect("service1")//Dosomestufftpc_disconnect()我需要做的是session1=tpc_connect("service1"

c++ - IContextMenu::QueryContextMenu 被调用,但 IContextMenu::InvokeCommand 没有

在我的IContextMenu实现中COM服务器,QueryContextMenu被调用(可以通过日志查看)但是InvokeCommand没有。这是QueryContextMenu:HRESULTContexMenuImp::QueryContextMenu(HMENUhmenu,UINTindexMenu,UINTidCmdFirst,UINTidCmdLast,UINTuFlags){if(uFlags&CMF_DEFAULTONLY){//shouldn'thandlethissituation:LOG("IContextMenu::QueryContextMenu:(...,C

c# - Windows 外壳/ namespace 扩展的 ATL 或 C#?

我有一个问题,在谷歌搜索和阅读文章中分配了几个小时后,我了解到Windows中的namespace扩展相当tricky(至少在C++中),现在我也看到了它的possible在C#中这样做,但microsft并没有正式确认使用.net进行命名空间扩展......虽然我见过非常好的商业命名空间扩展框架,但没有一个是免费的....关于我的问题:),我想开发自己的命名空间扩展,我有C++/C#知识和基本的COM/ATL,但如果可以的话我更喜欢c#,c#inteop也可以完全完成这项工作没有太多花样?或深入研究ATL以创建必要的COM对象...谢谢! 最佳答案

c++ - 如何获取进程的最后事件日期?

我有一项任务是在C++中使用COMInProcServer打印进程的最后事件日期。我尝试使用getProcessTimes()函数执行此操作,但这给了我一个访问冲突错误。首先,我想知道是否有任何其他命令给出进程的最后事件日期..其次下面代码有什么问题FILETIMEftCreation,ftKernel,ftUser;GetProcessTimes(hProcess,&ftCreation,&ftExit,&ftKernel,&ftUser);`我尝试了memsetting和其他几种替代方法,但没有任何效果...... 最佳答案 这

windows - 从 64 位应用程序使用 32 位进程内 COM 服务器的简单方法有哪些?

我有一个32位nativeC++ATL进程内COM服务器,它依赖于大量遗留的32位库。我需要在64位应用程序中使用它,并尽可能进行最小的更改。一种选择是将其放入COM+应用程序中。还有哪些简单的选择? 最佳答案 创建一个加载inproc服务器dll的32位助手应用程序,但它充当本地服务器。编译64位代理stub代码。然后,当64位应用程序尝试加载您的ActiveX时,它不会使用32位inproc(它无法加载),而是加载32位本地服务器-一个单独的进程-这是合法的。代理stub是从您的IDL自动生成的代码,应该可以很好地构建64位。

c++ - 有没有ATL服务的开发资料

我想开发一个Windows服务,选择ATL服务,因为我想使用原生C++,但是好像这方面的资料不多,我只找到了一些概念描述here,这不足以开发我的服务应用程序。您知道有关开发ATL服务的任何教程或示例吗?非常感谢。 最佳答案 你是对的。没有。我带来的关于ATL的最后一本书已经绝版,除非您熟悉COM,否则我可能会建议这不是最好的方法。当然,您可以在没有ATL的情况下编写Windows服务。VS2005甚至为此目的提供了一个向导。我上次编写不是C#的NT服务(运行良好)时,我使用了CodeProject中的示例类。唉,大约10年前。

c++ - WTL CIdleHandler 的正确用法是什么?

我正在尝试学习WTL/Win32编程,我不太了解CIdleHandlermixin类的设计。对于WTL9.1,CMessageLoop代码如下(来自atlapp.h):for(;;){while(bDoIdle&&!::PeekMessage(&m_msg,NULL,0,0,PM_NOREMOVE)){if(!OnIdle(nIdleCount++))bDoIdle=FALSE;}bRet=::GetMessage(&m_msg,NULL,0,0);if(bRet==-1){ATLTRACE2(atlTraceUI,0,_T("::GetMessagereturned-1(error)

windows - Atl 服务未注册

我正在尝试使用以下方式注册atl服务ExeName.exe/服务如此处所述:http://msdn.microsoft.com/en-us/library/74y2334x(VS.80).aspx虽然这样做之后,它并没有出现在我的服务控制面板中(我通过在vista的开始框中键入服务进入的那个)。我试图挖掘atl代码以查看它在哪里处理/service开关,但找不到它,尽管我可以找到处理/RegServer和/UnregServer的代码这曾经有效,我以前以某种方式设法注册过此服务。但是,现在我已经移动了它的位置并且无法重新注册它。当我运行ExeName.exe/service时,如果我先

c++ - 使用以编程方式创建的 Windows 媒体播放器进行基本播放

我试图通过COM“快速集成”WindowsMediaPlayer以播放来自本地文件系统或http源的单个文件-但由于其使用的文档和在线资源稀少当不嵌入某种Ole容器时,我无法让那个所谓的微不足道的用例工作。初始化等工作正常,但实际播放某些文件总是失败。示例代码,从初始化开始(错误处理被剥离,基本上从C#exampleatMSDN翻译而来,在主线程上执行):CComPtrplayer;player.CoCreateInstance(__uuidof(WindowsMediaPlayer),0,CLSCTX_INPROC_SERVER);CComQIPtrcore(player);CCom