草庐IT

c - 为什么使用 fscanf 会导致应用程序崩溃?

C编程新手。以下代码部分试图从文本文件(utf-8)中读取制表符分隔的MD5列表(32个字符)和相应的描述(最多128个字符),但导致应用程序崩溃:HANDLEhFile=CreateFileW(good_path,GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL|FILE_FLAG_OVERLAPPED,NULL);if(hFile==INVALID_HANDLE_VALUE){returnFALSE;}LPWSTRmd5=malloc(sizeof(wchar_t)*32);LPWSTRdes

c++ - 如何找到包含 X 的窗口的 PID

我可以使用FindWindow,但每次打开时窗口的名称都会改变。所以我的问题是,我怎样才能:A)查找包含'x'的窗口的PIDB)在一个带有exe文件名称的窗口中找到PID?抱歉,如果问题很明显,对C++来说是新问题。提前致谢! 最佳答案 尝试使用EnumWindows获取所有窗口句柄通过IsWindowVisible检查窗口句柄的状态.BecausesomeinvisiblewindowscanhangthecalltoGetWindowText通过GetWindowText获取每个窗口的标题.然后检查标题包含“X”您想要的字符或字

c++ - 尚未调用 CoInitialize -(从没有库的 DirectXTK 加载 gamepad.h)

我正在为游戏handle类使用DirectXTK库。我编译了这个库,里面只有这个类,它可以工作。如果我只将源文件添加到我的项目中,而没有库,大小将是~50KB而不是~500KB。但是,我收到以下错误:CoInitializehasnotbeencalled关于如何解决这个问题以便我的可执行文件的大小更小有什么想法吗? 最佳答案 好吧,你可以调用CoInitialize你自己作为main中的第一件事。intmain(){CoInitialize(NULL);//yourcodereturn0;}

c++ - 如何判断 stderr 是否已在 Windows 中重定向?

我希望我的程序在stderr连接到控制台时和重定向到文件/管道时具有不同的行为。在Unix系统中,我可以只测试isatty(STDERR_FILENO),但我如何在Windows中执行此操作?MSVCRT也有一个名为_isatty的函数,它不能正常运行(例如DetectNULfiledescriptor(isattyisbogus))。我可以调用任何Windows或NTAPI来测试它吗? 最佳答案 调用GetStdHandle获取标准错误句柄。将该句柄传递给GetFileType以找出它是什么类型的文件。如果返回FILE_TYPE_

c - Malloc 是否分配了比需要的更多的内存?

这是学校的C作业,但我遇到了一些奇怪的事情,我不知道它是否正常。我必须接受命令行参数,一个例子是-ia.b所以在我的程序中,我使用malloc动态分配内存char*fileName=NULL;fileName=malloc(strlen(argv[i])*sizeof(char));//errortestingetcstrcpy(fileName,argv[i]);工作正常,但我通过visualstudio调试器查看内存,这是在内存位置分配的内存位置,对我来说,它需要的空间更大:0x01608b98"ÍÍÍÍÍýýýýB`\x1˜?`\x1\xf1¼O{º"如果我像这样转换malloc

c++ - 是否可以使用仿函数作为 std::function 的模板参数?

我正在尝试查找用于编译此示例C++代码的g++编译器参数:#include#includestructmystruct{inta;intoperator()(inty){returny+1;}};intmain(){std::functionfoo;return0;}在cpp引用中写道,std::function模板参数可以是“...或其他函数对象”。我在包含多个std::function的大型项目上工作,并且项目可以使用g++构建。我正在尝试在VS2015下构建它,但此类代码的编译器会提示:错误C2027:使用未定义的类型'std::_Get_function_impl'和[_Fty

windows - C :\windows\SysWow64\CScript. 弹出exe窗口

我在Excel中创建了一个宏,并从.vbs文件运行它。它在我的笔记本电脑上运行良好。我在一台新笔记本电脑上复制了同样的工作,每次我运行vbs文件时,屏幕上都会出现这个窗口。我做了一些研究,了解到我提到的情况是在启动时加载CheckNDISPort服务时发生的。但我不认为这是原因,因为当我转到任务管理器并检查启动选项卡时,我找不到此服务。此外,当我重新启动我的笔记本电脑时,我没有看到这个窗口,只有当我运行我的vbs文件时。我确信我的vbs文件也有任何问题,因为它在其他笔记本电脑上工作正常。请问如何使用这个弹出窗口有什么建议吗?现在我每次都关闭窗口或从任务管理器结束任务,但每次我再次运行它

c++ - 获取主板序列号

我想将程序绑定(bind)到特定计算机,为此我想使用主板的序列号作为唯一标识符。虽然我可以找到一些C#和Java的示例,但我找不到任何可靠的C++示例(我读到WMI可能会失败,具体取决于硬件),但肯定有一种方法可以在C++中执行此操作吗?编辑:换句话说,我想要的是一个简单而基本的许可系统。为了更清楚,这是它的样子:#defineUSER_SERIAL123456789doubleGetMotherBoardSerialNumber();//...doublecurrentSerial=GetMotherBoardSerialNumber();if(currentSerial!=USER

c++ - 以编程方式检查 Windows 是否已使用 C++ 激活

我正在尝试编写一个C++函数来告诉用户他们当前使用的Windows操作系统是否已激活。我发现了一个类似的问题ProgrammaticallycheckifWindows7isactivated,但是这个答案需要一个UID参数。我根本不希望用户必须输入任何参数。如何以编程方式检查Windows是否已使用C++激活? 最佳答案 #define_WIN32_WINNT0x600#include#include#include/*'From:C:/Windows/System32/SLMGR.vbs'Copyright(c)Microsof

c++ - 如何确定计算机上安装的物理 RAM? ( Windows )

如何在Windows中使用C++将物理内存安装到我的计算机上?我的意思不仅是可以GlobalMemoryStatusEx()的容量参数,还有已用内存插槽的数量、内存类型(如DDR1/DDR2/DDR3)、插槽类型(DIMM/SO-DIMM)和内存总线的时钟速率。我需要使用SMBIOS吗?或者是否有其他方式获取此信息? 最佳答案 在我的机器上,您请求的大部分信息都可以通过WMI获得。看看Win32_PhysicalMemory和相关类(class)。比如wmicmemorychip在我的机器上的输出是:C:\>wmicmemorych