草庐IT

win-builder

全部标签

c++ - 为什么 win32 API 函数没有重载而是使用 Ex 作为后缀?

例如,win32API有两个方法StrFormatByteSize和StrFormatByteSizeEx。即使这两种方法在语义上做同样的事情并且Ex计数器部分只提供一个新参数来稍微改变行为,那么它们不能有相同函数的两个重载吗?这是c/c++的局限性还是造成这种尴尬约定的可能原因是什么? 最佳答案 Win32API是C(不是C++)API。C语言不支持重载函数。补充一点:Win32API使用__stdcall装饰函数,其中包括参数的字节数作为函数名称的一部分。__stdcall不是C语言的一部分,但Windows链接器必须了解它。M

c++ - 在 Win7 上构建的程序无法在 WinXP 上运行

我有一个使用VisualStudio2005在Windows7(32位)上构建的项目。该程序构建良好,我可以将其移至另一台Windows7计算机并正常运行。当我尝试将它移动到WindowsXPPro机器时,问题就来了。当我尝试运行该文件时,出现以下错误:“此应用程序启动失败,因为应用程序配置不正确。重新安装应用程序可能会解决此问题。”当我打开事件查看器时,出现三个与此问题相关的系统错误:无法找到依赖程序集Microsoft.VC80.CRT,上次错误是您的系统上未安装引用的程序集。解决Microsoft.VC80.CRT的部分程序集失败。引用错误消息:引用的程序集未安装在您的系统上。为

c# - Win32 资源编辑器库?

是否有免费的库可以为Win32PE文件中的资源提供编辑功能?它需要能够执行以下操作:提供一个相当简单的API来改变对话资源(包括“扩展”对话版本,whichispoorlydocumented)。手动使用UpdateResource编辑对话框是后端的一大难题,因为大多数结构的字段都是可变长度的,编码/解码它们非常容易出错并且代码耗时。处理32位和64位PE文件支持广泛使用的资源类型(字符串表、位图等)能够处理任何类型的有效资源(即使它没有被广泛使用),即使这意味着只是提供二进制文件的简单拷贝。我不关心.res文件,我真的不需要.rc功能。我只需要PE编辑。C、C++和C#都很好,但我更

c++ - 在 Delphi/C++ Builder 中对 TLabel 使用 TGlowEffect

这是一个很容易解释的问题,我正在使用FireMonkey设计一个表单,当我将TGlowEffect添加到标签时,它会破坏标签的外观。如果有人知道如何正确执行此操作,我将不胜感激。应用TGlowEffect后:文本明显加粗,唯一的影响是模糊。文本仅在编辑器中显示为这样,但我更希望它看起来像我编译后的样子。也许我只是FireMonkey的新手,我做错了什么,如果有人有关于如何正确使用FireMonkey的任何好的引用资料,我也将不胜感激。 最佳答案 如果您还没有这样做,您应该应用更新4(不过要为模糊字体做好准备),因为我试图用我的XE2

c++ - Win32_PhysicalMedia SerialNumber 有时顺序错误

引用MSDN我修改了一些代码,以便我可以检索硬盘序列号hres=pSvc->ExecQuery(bstr_t("WQL"),bstr_t("SELECTSerialNumberFROMWin32_PhysicalMedia"),WBEM_FLAG_FORWARD_ONLY|WBEM_FLAG_RETURN_IMMEDIATELY,NULL,&pEnumerator);......hr=pclsObj->Get(L"SerialNumber",0,&vtProp,0,0);我将vtProp.bstrVal转换为std::wstring并执行反向字符串,我必须将vtProp.bstrVal

c++ - 使用 C++Builder 后期绑定(bind) COM 对象

我们正在从C++Builder2010应用程序连接到某些第3方COM对象。目前我们导入类型库并生成组件包装器,然后能够以相当自然的方式进行方法调用和访问属性。object->myProperty=42;object->doSomething(666);然而,我们已经被COM对象接口(interface)(仍在扩展和开发中)的更改所困扰,导致我们自己的应用程序失败,因为某些方法GUID似乎已失效-即使对接口(interface)的唯一更改已经是添加了一种新方法)。延迟绑定(bind)已被建议作为解决此问题的一种方式。我认为这需要更改我们的代码ratherlikethis:object.O

c++ - Win32 更改为二进制模式子标准输出(管道)

你好这个伟大的社区,当使用管道重定向子项时,('\n')0x0A到('\n\r')0x0D0x0A的自动转换出现问题stdout到一个文件,child的输出是字节而不是文本。首先,我使用了这些例子MSDN-CreatingaChildProcesswithRedirectedInputandOutput和http://support.microsoft.com/kb/190351),现在我有了这个基本应用程序,它创建了一个管道并将child的STDOUT重定向到一个二进制文件。所有这些都在VisualC++6.0中的Win32控制台应用程序中(是的,它很旧,但是是必需的)。#defin

c++ - 如何判断 win32 c++ 应用程序在 CTRL-ALT-DEL 后是否失去焦点?

我用C++编写了一个win32App(一个游戏),我想知道应用程序是否因为用户按下CTRL-ALT-DEL并启动任务管理器。我怎样才能做到这一点?检测到事件后我想做的是最小化游戏窗口并暂停其处理(动画、音频等)。但是,如果用户从CTRL-ALT-DEL菜单返回到游戏,那么它应该继续正常运行。我以为我可以检查CTRL、ALT和DEL上的按键,但这似乎不起作用,只是对失去焦点(WM_KILLFOCUS)不是我想要的。 最佳答案 您可以使用WTSRegisterSessionNotification(),当用户按下Ctrl+Alt+Del

c++ - 如何停止正在阻塞的 win32 线程?

我创建了一个自定义的ThreadPool,它使用_beginthreadex()启动许多win32线程。线程正在运行一个简单的循环,试图从阻塞队列中取出任务,但有时我需要停止线程,如果它们在Dequeue上被阻塞,那么我不知道如何获取线程脱离阻塞状态。voidThreadPool::Loop(){while(_running){try{//Attemptstodequeueataskandrunit_taskQueue.Dequeue()->Run();}catch(BlockingQueueTerminate&){//Eattheexceptionandchecktherunning

win11/win10安装程序时老是弹出安全警告

原因分析:1.误删注册表信息(未整理)2.防火墙设置导致执行.exe需要权限(以管理员身份运行)3.注册表禁止通知未设或缺失4.和其他隐性设置有关方法总结:目录解决方案方法一(win11):Internet自定义级别方法二(win10):防火墙通知更改方法三(win10):SecurityCenter的“属性”更改方法四(win10):组策略法方法五(win10/win11):注册表法问题解释:其中gpedit.msc命令在win11上执行并未成功,我查了一下需要修复解决方案方法一(win11):Internet自定义级别Win +S  然后输入Internet,然后点击Internet选项。