1

アプリケーション (.Net Framework 3.5 で開発) で、「タスクバーにピン留め」、「スタート メニューにピン留め」、「タスクバーからピン留めを外す」、および「スタート メニューからピン留めを外す」機能を提供する必要があります。現在、以下のコード スニペットを使用して機能を実現しています。

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

コードは正常に動作していますが、私の場合、私のアプリケーションは世界中に広く分散しているため、異なるロケール設定 (異なる言語) でアプリケーションを実行することは非常に一般的です。上記のコードには、すべての異なる言語 (フランス語、ドイツ語など) では機能しないという制限があります。言語に依存しない固定および固定解除機能を実装する方法を教えてください。

4

2 に答える 2

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
于 2015-11-19T12:17:51.893 に答える