草庐IT

c++ - 进程 ID 和进程名称

我正在创建一个基本上扫描系统以查看特定进程是否正在运行的Windows程序。我有进程名称(AcroRd32.exe),没有别的。据我所知,最简单的方法是使用CreateToolhelp32Snapshot创建所有进程的快照,然后遍历每个进程以查找进程名称。我的应用程序以高性能为中心。那么有没有更好更有效的方法来做到这一点。应用程序每隔几秒收集一次快照。在快照中迭代100个进程似乎效率不高。是否有直接的API可以通过进程名称找到进程(并通过名称检索进程句柄或ID)?我进行了广泛的搜索,但运气不佳。有人试过这个吗? 最佳答案 扫描进程的

c++ - C++ 中的缩进跟踪

我想为我们的大型C++代码库开发缩进跟踪,这将特别有助于开发人员发现问题。我想要缩进跟踪功能。例如,考虑以下代码:-voidFunctionA(){TR_ENTER("FunctionA");TR_PRINT("DignosticmessageFunctionA");FunctionB();//CallfunctionB}voidFunctionB(){TR_ENTER("FunctionB");TR_PRINT("DignosticmessageFunctionB");FunctionC();//CallfunctionB}voidFunctionC(){TR_ENTER("Func

c++ - 适用于 Windows 的开源 C++ 调试器

有人知道适用于Windows的开源C++调试器吗?它不一定要好,它只需要工作。(我更喜欢用C++编写的)谢谢:) 最佳答案 GDB当然可以!请放心,它可以像任何调试器一样工作:) 关于c++-适用于Windows的开源C++调试器,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/6715826/

c++ - 每 N 秒执行一次与 Windows 系统时钟同步的操作

有很多关于如何每N秒执行某项操作的提示,但我没有发现任何内容明确说明这些方法中的任何一个是否由于延迟而慢慢地与系统时钟不同步。我有一个在Windows上运行的多线程应用程序。我需要知道在更高优先级任务和线程允许的尽可能少的毫秒内,一个特定线程将根据系统时钟在“精确”凌晨1点可靠地执行,然后在凌晨1点+N秒、凌晨1点+2N秒等。..并在晚上11点、晚上11点+N、晚上11点+2N之前一直可靠地执行此操作,依此类推。是的-情况(无论如何对我来说)每小时有整数个N秒周期。我完全希望线程执行的实际时间为1am+d1、1am+N+d2、1am+2N+d3,...其中每个d(i)都是一些延迟增量。

c++ - 如何保护两个进程之间共享内存中的字符串?

我有一block共享内存,其中包含两个进程之间的一个char字符串和一个整数。进程A写入它,进程B读取它(反之亦然)确保进程A不会在进程B正在读取它的同时更新(写入)它的最有效方法是什么?(我应该只在共享内存中使用标志,使用信号量,临界区....)如果您能指出正确的方向,我将不胜感激。谢谢。Windows,C++ 最佳答案 您不能使用CriticalSection因为这些只能用于同一进程内线程之间的同步。对于进程间同步,您需要使用Mutex或Semaphore.两者的区别在于前者只允许一个线程拥有一个资源,而后者最多允许一个最大数目

c++ - 什么是 Win32 API (MFC) 等同于 .NET 中的 SystemInformation.CaptionHeight?

我正在尝试找出与.NET中的SystemInformation.CaptionHeight等效的Win32API(MFC)。到目前为止,我查看了SystemParametersInfo()(http://msdn.microsoft.com/en-us/library/ms724947%28v=VS.85%29.aspx),它似乎不符合要求。 最佳答案 您可以调用GetSystemMetrics参数为SM_CYCAPTION。(如果您查看.Net属性的代码,它就是这样做的。) 关于c++

c++ - 从 windows 可执行文件复制机器代码并在 linux 上运行

我在Windows上复制了一个函数的机器代码。例如:voidfunc(){printf("hello");}在上述情况下,我将复制func()的十六进制代码段数据和printf()的十六进制代码数据以及其他依赖项和数据并重新链接它在运行linux的不同机器上,如果正确重新链接,是否可以在linux机器上运行代码?如果是这样,会不会有许可问题?(合法吗?)附言这个问题是关于分布式系统的问题。 最佳答案 有一个wineprogram(andproject)这不是模拟器。它将从windows获取exe文件并直接在linux中运行。大多数使

c++ - 让两个 dll 共享一个静态库的陷阱是什么?

假设你有两个dllDllA和DllB它们都静态链接到静态库(即.lib文件)。我们称该库为L。我知道L完全链接到A和B,分别有效地创建了LA和LB。但是,当来自LA的对象O从A传递到B时会发生什么?我假设在ALA中执行代码,而在BLB中执行代码,因为链接就是这样发生的。如果在A中创建O,卸载A,然后在B中使用O,会发生什么坏事? 最佳答案 静态库只是目标文件的集合。当你链接一个静态库时,一切都发生了,就好像静态库的代码已经包含在你的代码中一样。所以如果静态库中有全局变量,每个DLL都会得到自己的拷贝,这可能是你想要的,也可能不是你想

c++ - 如何在不同的线程上调用 glReadPixels?

当我在另一个线程上调用glReadPixels时,它没有返回任何数据。我在某处读到建议我需要在调用线程中创建一个新的上下文并将内存复制过来。我该怎么做?这是我使用的glReadPixels代码:pixels=newBYTE[3*width*height];glReadPixels(0,0,width,height,GL_RGB,GL_UNSIGNED_BYTE,pixels);image=FreeImage_ConvertFromRawBits(pixels,width,height,3*width,24,0xFF0000,0x00FF00,0x0000FF,false);FreeIm

c++ - Windows 下 HUGE_VALF 未定义

我正在尝试编译一个最初用于Windows下的Linux/Unix平台的代码库。代码使用HUGE_VALF变量似乎没有引用定义它的header。我在Windows上使用的MSVC9编译器抛出:errorC2065:'HUGE_VALF':undeclaredidentifier.为Windows定义HUGE_VALF的推荐包含文件或方法是什么?Math.h定义了HUGE_VAL(double),但没有定义HUGE_VALF(作为float)。 最佳答案 像这样用*_MAX替换HUGE_VAL*怎么样:HUGE_VAL=>DOUBLE_