SCENARIO
我使用的是 WinAmp 音乐播放器,它是用 C / C ++ 编写的,它带有一些可编辑的默认键盘快捷键(加速键)使用资源编辑器的示例。
问题
我想写一个非常简单的Winforms GUI来在winamp.exe文件上建立暂停/恢复密钥。
但我想念开始尝试这个的基本概念,我不知道从哪里开始搜索,读取或写入必要的字节来查找,识别和修改加速器表键。
PS:Winamp.exe有5个不同的加速器表。
这样的东西就是我想要重现的东西:
...能够编辑所需的密钥并保存流中的更改。
问题
有人可以指导我如何开始根据我的需求修改资源吗?
我也同意使用第三方(免费)图书馆,由于我对资源的基本知识,可以帮我完成这项工作。
VirtualKeys翻译/表示不是问题,我遇到的问题是找到资源表以识别程序中的当前VirtualKey代码,然后编辑它们并将更改保存在表中。
更新
我已经尝试了建议的 Vestris ResourceLib 解决方案,但它似乎没有完成编辑加速键的任务,这是我在VB.Net中所做的下面针对C#公开的相同示例:https://github.com/dblock/resourcelib/blob/master/Docs/Accelerator.md
Imports Vestris.ResourceLib
Imports System.IO
Public Class Form1
Private Sub Test() Handles MyBase.Shown
Dim filename As String = "C:\winamp - copy.exe"
Using rcInfo As New ResourceInfo()
rcInfo.Load(filename)
Dim accList As List(Of AcceleratorResource) =
rcInfo(Kernel32.ResourceTypes.RT_ACCELERATOR).
ConvertAll(Of AcceleratorResource)(Function(item As Resource) CType(item, AcceleratorResource))
For Each rc As AcceleratorResource In accList
Console.WriteLine(String.Format("Name: {0}, TypeName: {1}", rc.Name, rc.TypeName))
For Each acc As Accelerator In rc.Accelerators
Console.WriteLine(acc.ToString)
If acc.Key = "B"c Then
' Here change the "B" key to an "M", for example.
Dim newAcc As New Accelerator
' ...
End If
Next acc
Next rc
End Using ' rcInfo
End Sub
End Class