草庐IT

c++ - 如何跟踪进程创建的 ActiveX 控件?

我想跟踪由某些进程创建的ActiveX控件。为了简化问题,我首先只想监视当前进程。我想这样做是为了检查是否有任何ActiveX控件支持IOleWindow如果是,给定的HWND是否属于该ActiveX控件(以便我可以将HWND映射到ActiveX控件)。有人有这方面的经验吗?我的第一个想法是使用APIHook来监控CoCreateInstance调用,但我读到这并非在所有情况下都有效。一些谷歌研究显示http://www.pocketsoap.com/sf/activation.html其中谈到安装自定义类工厂-这将如何工作? 最佳答案

c++ - 单例 : C++ shared dll

我正在创建一组共享单个dll的dll。共享库有一个单例。运行时,一些操作系统加载的库会生成我的单例的新实例。我如何才能强制所有使用我的dll的库和程序使用始终我的单例实例? 最佳答案 您不能只在多个进程之间共享您的单例实例。但您可以为此目的使用共享内存:以下示例演示了DLL入口点函数如何使用文件映射对象来设置可由加载DLL的进程共享的内存。共享DLL内存仅在加载DLL时持续存在。应用程序可以使用SetSharedMem和GetSharedMem函数来访问共享内存。http://msdn.microsoft.com/en-us/lib

python - 检测鼠标光标是否被任何其他应用程序隐藏或可见

我想检测鼠标当前是否隐藏,这是Windows上的3D应用程序经常做的事情。这似乎比听起来更棘手,因为我找不到任何方法来做到这一点。我最好使用Python来完成此操作,但如果这不可能,我可以求助于C。谢谢! 最佳答案 您需要调用GetCursorInfo功能。这可以使用pywin32library直接完成.或者,如果您不想安装外部Python库,则可以使用ctypesmodule直接从User32.dll访问函数。例子:importctypes#ArgumentstructuresclassPOINT(ctypes.Structure

c - 如何为 Win32 应用程序启用工具栏的现代外观?

最近开始学习基于Win32API的GUI编程。当我将工具栏控件(来自comctl32.lib)添加到我的简单应用程序时,我发现它看起来很平坦,而菜单栏具有更多“Windows7友好”的3D外观和感觉(顶部的白色发光和从上到下的垂直灰色渐变)。差异使它看起来有线。但是,我发现许多其他应用程序的菜单栏和工具栏具有一致的外观。例如。Notepad++和Notepad2.看了一些官方文档,尝试了解决方案,比如VisualStylesOverview,EnablingVisualStyles但是,它只启用平面按钮样式(与旧的Win98实心按钮样式相比)。这与我在第一张图片中获得的样式没有任何区别

c - 如何处理跨平台 C 库中的 Unicode 路径?

我正在为C语言库做贡献。它有一个函数,该函数采用char*参数作为文件路径名。作者大多是UNIX开发人员,这在char*主要表示UTF-8的unix上运行良好。(至少inGCC,字符集可配置,默认为UTF-8。)但是,char*在Windows上表示ANSI,这意味着目前无法在Windows上使用此库的Unicode路径名,而应该使用wchar_t*并且仅支持UTF-16。(quicksearchonStackOverflow显示ANSIWindowsAPI函数不能与UTF-8一起使用。)问题是,处理这个问题的正确方法是什么?我们想出了各种方法来做到这一点,但我们都不是Windows专

c - Lua 在加载 dll 扩展时崩溃

我正在尝试在Windows上创建一个Luadll扩展。我正在使用Lua5.3。我的编译器来自MinGW,是gcc4.9.3。我的dll扩展的C代码是这样的:#include#includestaticintdub(lua_State*L){constdoublea=lua_tonumber(L,1);lua_pushnumber(L,a*2);return1;}__declspec(dllexport)int__cdeclluaopen_mylib(lua_State*L){printf("One\n");lua_pushcfunction(L,dub);printf("Two\n")

c++ - 使用 CMake 在 Windows (MSVC) 中查找库

我在尝试链接MSVC中的库时遇到问题。我有一些为发布和调试编译的外部依赖项,并将它们设置在不同的文件夹中(${PROJECT_SOURCE_DIR}/External/Debug/lib和${PROJECT_SOURCE_DIR}/External/Release/lib)。我写了一些FindFoo.cmake模块,作为find_library命令的提示,${EXTERNAL_LIB_DIR}根据${CMAKE_BUILD_TYPE}设置。这项工作在Linux上完美,但在Windows上失败(它总是将EXTERNAL_LIB_DIR路径设置为调试路径)并且由于_ITERATOR_DEB

c - 在 Windows 上使用 -R 和 -rpath 开关链接

我在WindowsXP上使用gcc编译器(MinGW)。我创建了一个.dll库libdir.dll,然后尝试构建一个使用该库的程序。我不想将该.dll文件放入System或System32文件夹,也不想在PATH变量中设置它的路径,我想要的是将该信息提供给程序本身。我知道有可用的-R和-rpath开关,所以我打算将它与其中之一链接起来。First-rpath:gcc-L/path/to/lib-Wl,-rpath,/path/to/libmain.o-ldir-oprogThan-R:gcc-L/path/to/lib-Wl,-R,/path/to/libmain.o-ldir-opr

c - 如何从 C 编写的源文件构建可执行文件?

src目录下只有少数几个.c和.h扩展名的文件(cmdline.ccmdline.hcore.ccore.h等),还有一个没有扩展名的“MakeFile”文件。是否有可能将这些源文件构建到Windows7(64位)上的某个可执行文件中?我想我需要为C或某些sdk下载编译器,对吗? 最佳答案 是的。你需要:下载并安装C/C++编译器(我推荐TDragon'sdistributionofMinGW),将编译器添加到您的PATH(安装程序可以为您完成大多数情况);通过打开cmd.exe并输入gcc-v和mingw32-make-v来验证它

c++ - 如何在混合语言应用程序中创建堆?

我们有一个用VisualBasic6.0编写的前端,它调用几个用混合C/C++编写的后端DLL。问题是每个DLL似乎都有自己的堆,但其中一个堆不够大。当我们分配了足够的内存时,堆就会与程序堆栈发生冲突。每个DLL都完全用C编写,除了基本的DLL包装器是用C++编写的。每个DLL都有一些入口点。每个入口点立即调用一个C例程。我们想增加DLL中堆的大小,但一直无法弄清楚该怎么做。我搜索了指导并找到了这些MSDN文章:http://msdn.microsoft.com/en-us/library/hh405351(v=VS.85).aspx这些文章很有趣,但提供的信息相互矛盾。在我们的问题中