草庐IT

c++ - 用于以编程方式更改输入语言的 Win API

我想以编程方式将WinXP中的输入语言更改为西类牙语。是否有支持该功能的API?谢谢 最佳答案 LoadKeyboardLayoutActivateKeyboardLayoutGetKeyboardLayout等等 关于c++-用于以编程方式更改输入语言的WinAPI,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/819665/

c++ - 以编程方式检查数字签名

我有一个我正在处理的项目的exe由数字签名签名,这意味着当它要求管理员权限时,它会显示公司名称。这工作得很好,但如果你修改exe,它仍然会工作并在那里显示未知。有没有办法在运行exe时检查数字签名是否有效,避免修改后的版本运行?VisualStudio2008window7 最佳答案 Here是一个验证签名的示例程序(它使用WinVerifyTrust函数),但我不确定它是否可以在Windows7下运行。您应该尝试一下。 关于c++-以编程方式检查数字签名,我们在StackOverflo

C++ 控制台应用程序,隐藏标题栏

我有一个用C++编写的Windows控制台应用程序,我想隐藏/删除控制台窗口的完整标题栏,包括关闭、最小/最大控件等。我搜索了很多但还没有找到任何有用的东西。我使用GetConsoleWindow查询控制台HWND,并尝试通过删除WS_CAPTION标志使用SetWindowLong更改控制台窗口样式,但这似乎根本没有效果:HWNDhwnd=GetConsoleWindow();LONGstyle=GetWindowLong(hwnd,GWL_STYLE);style&=~(WS_BORDER|WS_CAPTION|WS_THICKFRAME);SetWindowLong(hwnd,G

c++ - 什么是无效,更新方法在 VC++ 中做什么

我对C++中的窗口函数有一点疑问。"invalidate()"函数究竟做了什么?它发送什么消息?当我们需要调用它时?还有什么是"update()"函数?"invalidaterect()"是否与"invalidate()"函数类似?谢谢 最佳答案 CWnd::Invalidate()使窗口的整个客户区无效,这表明该区域已过时,应该重新绘制。您通常会在需要重绘的控件上调用它。CWnd::InvalidateRect()仅使窗口的一部分无效。使用Invalidate函数,WM_PAINT消息将发布[不严格为真;查看评论]到消息队列并在将

c++ - 创建一个不可复制的 STL 迭代器是个好主意吗?

大多数时候,STL迭代器是可复制构造的,因为一些STL算法需要这样做来提高性能,例如std::sort。但是,我一直在从事一个包装FindXFileAPI(previouslyaskedabout)的宠物项目,但问题是不可能围绕此API实现可复制的迭代器。不能以任何方式复制查找句柄——DuplicateHandle特别禁止将这些类型的句柄传递给它。如果您只是维护查找句柄的引用计数,那么任何拷贝的单个增量都会导致所有拷贝的增量——显然这不是拷贝构造的迭代器应该做的。既然我不能在这里满足迭代器的传统复制构造要求,是否值得尝试创建一个“STL风格”的迭代器?一方面,创建一些其他枚举方法不会落

c++ - Win32 DLL 导入问题 (DllMain)

我有一个nativeDLL,它是另一个应用程序的插件(我基本上对它的控制为零)。一切正常,直到我链接到一个额外的.lib文件(将我的DLL链接到另一个名为ABQSMABasCoreUtils.dll的DLL)。该文件包含我想使用的来自父应用程序的一些附加API。我什至没有编写任何代码来使用任何导出的函数,但只是链接到这个新的DLL中会导致问题。具体来说,当我尝试运行该程序时出现以下错误:应用程序未能正确初始化(0xc0000025)。单击“确定”终止应用程序。我相信我在某处读到这通常是由于DllMain函数返回FALSE。此外,以下消息将写入标准输出:错误:在组件初始化之前尝试内存分配

c++ - 在无效的 Syskeypress 上禁用 MessageBeep

简单的问题,如果用户按下Alt+Whatever并且没有与之关联的热键,通常程序会产生MessageBeep。我可以调用哪些API函数来避免这种情况?处理WM_KEYDOWN、WM_KEYUP、WM_SYSKEYDOWN和WM_SYSKEYUP全部返回0;在我的主WndProc上不起作用。 最佳答案 WM_MENUCHAR应该是您要查找的内容。MSDN搜索是您的friend(>消息提示音快捷方式消息提示音加速器http://msdn.microsoft.com/en-us/library/ms646349(VS.85).aspx编辑

c++ - 如何修改运行时加载的 DLL 的导入地址表

我想Hook在运行时从加载的DLL调用的函数,我使用了“WindowsViaC/C++”一书中的CAPIHook类(通过安装系统范围Hook完成的DLL注入(inject)和通过修改IATHook)但只有当DLL名称/符号存在于可执行文件的IAT中时,此代码才有效。(即隐式DLL链接)这是动态链接库代码:CAPIHook::CAPIHook(PSTRpszCalleeModName,PSTRpszFuncName,PROCpfnHook){//Note:thefunctioncanbehookedonlyiftheexportingmodule//isalreadyloaded.Aso

c++ - dxvahd.h微软头文件中的#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)什么时候变为true

您好,我有2个VC++解决方案“A”和“B”(VS2008),它们都具有相同的代码库(只有几行代码不同)。在两者中使用DXVAHD.h。dxvahd.h是标准的Microsoft头文件。如果我们打开这个头文件,我们会看到有一个条件if“#ifWINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)”IseethatinVC++solution"A",theaboveconditional#ifstatementisfalse,hencethewholedxvahdheaderfilegetsgreyedout&isnotevencompiled

c++ - Win32 API : How to catch escape key in Edit control?

我发现由于某些未知原因,当焦点位于编辑控件时,Escape键永远不会产生消息。下面是创建父窗口和其上方的编辑控件的代码。在MyCallBckProcedure()中,我将printf()放在*WM_COMMAND*下,以捕获由Edit生成的消息。不仅如此——我什至尝试打印在MyCallBckProcedure()中捕获的所有消息;但如果专注于Edit,转义键永远不会产生任何消息。这里可能有什么奇怪的问题?#include#include#include#defineIDC_MAIN_EDIT101LRESULT__stdcallMyCallBckProcedure(HWNDwindow