2014-09-12 101 views
-5

试图以编程方式将资源语言更改为exe/dll文件,我试图用UpdateResource做到这一点,但它不起作用,因为每个项目的语言不是资源模板,它似乎是在一个结构调用者RESOURCEHEADER它位于每个资源类型的开始...因此访问这部分似乎有点复杂,没有api做到这一点... 唯一的事情左边是逆向工程的结构和直接更新二进制文件,但我更喜欢前问...winapi如何以编程方式更改Windows资源语言

谢谢你们

+1

如果你解释你想要完成的事情,你可能会有更好的运气。 – 2014-09-12 18:58:44

+0

尝试以编程方式将资源语言更改为exe/dll文件,要更改资源,如需要执行beginupdateresource/updateresource/endupdateresoure的对话框,但这样做不允许您更改此资源的语言... – user3806924 2014-09-12 19:18:25

+1

我不确定你期望会发生什么。你读过[资源参考](http://msdn.microsoft.com/en-us/library/windows/desktop/ff468901%28v=vs.85%29.aspx)?根据我在WPF中创建mui应用程序的经验,标准行为使您重新启动应用程序以使更改生效。我跟着[这个例子](http://www.codeproject.com/Articles/22967/WPF-Runtime-Localization)让它在飞行中工作。 – 2014-09-12 19:27:32

回答

1

我想不出WH Ÿ你想要做到这一点,但无论如何...

呼叫

UpdateResource(hUpdate, lpType, lpName, wOldLanguage, 0, 0); 

删除现有的语言资源和

UpdateResource(hUpdate, lpType, lpName, wNewLanguage, lpData, cbData); 

写新的语言标识符的新资源,其中lpDatacbData是指现有资源数据的副本。

请注意,如果您使用的是MUI,则会变得复杂得多。 UpdateResource文档有详细信息。

+0

实际上大多数的DLL EXE文件是错误的多语言DLL/EXE,因为开发人员不小心把不同的语言perr对话框/字符串表等等...因此,当我运行muicrt工具生成一个MUI文件它告诉我,它不能继续在多语言DLL ...所以我正在制作一个控制台工具来将语言变成一个只...感谢这个答案我的问题... – user3806924 2014-09-12 20:33:36

+0

我很乐意提供帮助。您可以通过点击答案左侧的勾号来解决问题,而不是编辑标题。 – arx 2014-09-12 21:27:31

+0

@user请接受答案,我回滚了您的问题编辑。接受是承认这一点的正确方法。 – 2014-09-12 21:36:40

相关问题