草庐IT

c++ - 尝试连接到 MessageBeep 系统 API

一位客户要求我解决以下棘手的问题。他们有一个自定义软件,该软件倾向于在没有任何明显原因的情况下“左右”显示消息框。例如,软件本身是一个会计程序,当他们接受客户付款时,消息框可能会连续显示大约3或4次。每个消息框都播放Windows默认声音。不幸的是,这个软件的编程方式,它播放的声音类型是完全错误的。例如,当消息本身只是一条信息时,它可能会显示一个警告消息框并播放警告系统声音。对于使用该软件的员工来说,这一切都很烦人。我试图联系分发该软件的供应商,但我遇到了死胡同。所以现在我正在寻找缓解此问题的方法。我最简单的解决方案是建议将扬声器静音,但不幸的是,它们需要有声音才能听到传入的电子邮件,

C++ - LoadLibrary() 是否实际链接到库?

我正在使用Code::Blocks并且讨厌手动链接DLL。我找到了LoadLibrary()功能,我想知道它是否像.a一样工作或.lib文件会。这个功能是这样工作的吗?如果没有,我可以通过编程方式(如果有的话)做什么来链接DLL,而不必通过执行Project来链接DLL。方法? 最佳答案 LoadLibrary将请求的库(以及它需要的所有库)加载到进程的地址空间中。为了访问该库中的任何代码/数据,您需要找出新加载的内存区域中的代码或数据地址。您需要使用GetProcAddress.此过程与在构建时添加库之间的区别在于,对于构建时库,

c++ - 如何获取当前进程的线程 ID 列表

EnumProcess或CreateToolhelp32Snapshot函数帮助我们获取进程信息,包括进程ID。但是我想知道获取当前进程的线程id列表。DWORDGetMainThreadId(DWORDpId){LPVOIDlpThId;_asm{moveax,fs:[18h]addeax,36mov[lpThId],eax}HANDLEhProcess=OpenProcess(PROCESS_VM_READ,FALSE,pId);if(hProcess==NULL)returnNULL;DWORDtId;if(ReadProcessMemory(hProcess,lpThId,&t

c++ - 有关虚拟文件夹的文档

我正在寻找有关如何制作虚拟文件夹的WindowsAPI文档。我将制作我自己的文件系统,并希望在该文件系统的“计算机”下有一个图标。我见过其他具有此类解决方案的程序,例如允许我在Explorer程序中探索Linux文件系统的程序。很像我要制作的相同解决方案。我还没有找到任何关于如何执行此操作的文档,或者我在搜索错误的东西吗?谢谢。 最佳答案 您正在寻找Shell命名空间扩展。文档的入口点是CreatingShellDataSourceObjectsandExtendingtheShellNamespace.可以在codeplex上找到

c++ - 在 ring0/kernel 中列出驱动程序?

只是一个问题,我想知道是否可以连接到Ring0/Kernel以显示在内核中运行的已加载驱动程序列表?我是否需要为此编写驱动程序?类似于如何轻松列出所有正在运行的进程。哦,这是在C++/Windows中。 最佳答案 正如我所说,使用driverquery命令。driverqueryDisplayalistofallinstalleddevicedriversandtheirproperties.Syntaxdriverquery[/sComputer][/uDomain\User/pPassword][/fo{TABLE|LIST|C

c++ - 正则表达式迭代器在 Cpp 中不起作用

我在VisualStudio2010上使用C++(我不认为它是v11标准,但我还没有检查过)。我正在尝试使用以下代码提取tracert的IP地址:#include#include#include#includeusingnamespacestd;typedefregex_iteratorregexp;#defineMAX_BUFFER255intmain(){stringout;charbuffer[MAX_BUFFER];smatchm;regexe("1.+\\[(.+)\\]");FILE*stream=_popen("tracertSOMEHOSTNAME","r");whil

c - wdm.h中类型名称 'R'中的 'PRKMUTEX'是什么意思?

从wdm.h中摘录的一个简短示例typedefstruct_KMUTANT{DISPATCHER_HEADERHeader;LIST_ENTRYMutantListEntry;struct_KTHREAD*OwnerThread;BOOLEANAbandoned;UCHARApcDisable;}KMUTANT,*PKMUTANT,*PRKMUTANT,KMUTEX,*PKMUTEX,*PRKMUTEX;我知道“P”是指“指针”,但我不知道“R”是什么意思。有什么解释吗? 最佳答案 R将指针标识为restrictedpointer.

c++ - WinApi SetTimer 无法编译

我需要定时器每1秒启动一次功能。我试过SetTimer,我的代码:constUINT_PTRTIMER_ID=1000;DWORDDownloadThread(){SetTimer(NULL,TIMER_ID,1000,(TIMERPROC)DownloadSpeedCounter);/*somestuff*/}voidDownloadSpeedCounter(){/*somestuff*/}我无法编译此代码并得到errorC2440:'typecast':cannotconvertfrom'overloaded-function'to'TIMERPROC'也是类成员方法。

c++ - 我可以从语言首选项中获取代码页吗?

Windows似乎至少跟踪“当前语言环境”的四个维度:http://www.siao2.com/2005/02/01/364707.aspx默认用户区域设置默认系统区域设置默认用户界面语言默认输入区域我的大脑很痛,只是试图跟踪四个不同的语言环境到底有什么用......但是,我没有理解代码页和语言环境(或LCID,或语言ID)之间的关系,所有这些似乎都不一样(例如日语(日本)是LANGID=0x411位置代码1,但日本的代码页是932)。在Unicode和窄字符串之间转换时,如何配置我们的应用程序以使用用户所需的语言作为默认MBCS目标?也就是说,我们以前是一个MBCS应用。然后我们切换

c++ - IFileOperation::DeleteItems 在 Windows 8 上不要求确认(与 Windows 7 不同)

我正在尝试使用IFileOperation::DeleteItems在Windows上删除文件。在Windows7上,当我调用IFileOperation::PerformOperations`时,系统会询问我是否要先删除文件。但在Windows8上,它不要求确认,只是将文件移至垃圾箱。这就是我所说的提示:代码如下:result=iOperation->DeleteItems(iArray);if(SUCCEEDED(result)){result=iOperation->SetOperationFlags(FOF_ALLOWUNDO);assert(SUCCEEDED(result)