我需要在我的应用程序(在.Net framework 3.5中开发)中提供“Pin to Taskbar”,“Pin to Start Menu”,“Unpin from Taskbar”和“Unpin from Start Menu”功能。目前,我已使用下面的代码段实现了该功能:
Dim verbs As FolderItemVerbs = link.Verbs()
For i As Integer = 0 To verbs.Count - 1
Dim verb As FolderItemVerb = verbs.Item(i)
Dim verbName As String = verb.Name.Replace("&", String.Empty)
If (verbName.Equals("pin to taskbar")) Or (verbName.Equals("unpin from taskbar")) Then
‘If (verbName.Equals("Pin to Start Menu")) Or (verbName.Equals("Unpin from Start Menu")) Then
verb.DoIt()
End If
Next
代码工作正常,但在我的情况下,我的应用程序广泛分布在世界各地,因此运行具有不同语言环境设置(不同语言)的应用程序非常常见。上面的代码有这个限制,它不适用于所有不同的语言(例如法语,德语等)。你能帮我解决一下如何实现与语言无关的固定和取消固定功能。
答案 0 :(得分:0)
正如评论中所提到的,你不应该这样做。
我无法访问操作系统来确认这一点,但您应该在注册表中找到字符串,或者为了避免使其变得那么简单,它们可能只是在资源中。
答案 1 :(得分:0)
它有效,试试这个:
[DllImport("kernel32.dll")]
private static extern IntPtr LoadLibrary(string dllName);
[DllImport("user32.dll", CharSet = CharSet.Auto)]
static extern int LoadString(IntPtr hInstance, uint uID, StringBuilder lpBuffer, int nBufferMax);
int MAX_PATH = 255;
var actionIndex = pin ? 5386 : 5387; // 5386 is the DLL index for"Pin to Tas&kbar", ref. http://www.win7dll.info/shell32_dll.html
StringBuilder szPinToStartLocalized = new StringBuilder(MAX_PATH);
IntPtr hShell32 = LoadLibrary("Shell32.dll");
LoadString(hShell32, (uint)actionIndex, szPinToStartLocalized, MAX_PATH);
string localizedVerb = szPinToStartLocalized.ToString();
If (verbName.Equals(localizedVerb )) Or (verbName.Equals(localizedVerb )) Then