0

C# で word のアドインを作成します。
キーボードをフックしてctrl-cをキャッチし、クリップボードにコピーされたテキストを読みたいです。
私のアドインは、以下のコードを使用して ctrl-c を見つけることができました。



    //C# code:
    private void ThisAddIn_Startup(object sender, System.EventArgs e)
    {
        .
        .
        .
         Application.KeyBindings.Add(Word.WdKeyCategory.wdKeyCategoryCommand, "KeyCode1",
                    Application.BuildKeyCode(Word.WdKey.wdKeyControl , Word.WdKey.wdKeyAlt , Word.WdKey.wdKeyD));
    }

    public void CallKey(int i)
    {
            switch (i)
            {
                case 1:
                    MessageBox.Show("Ctrl+C");
                    break;
            }
        }
    //VBA code:
    Function GetAddin() As Object
    On Error Resume Next

    Dim addIn As COMAddIn
    Dim automationObject As Object
    Set addIn = Application.COMAddIns(“WordKeyBinding”)
    Set automationObject = addIn.Object
    Set GetAddin = automationObject
    End Function

    Public Sub KeyCode1()
    On Error Resume Next
    GetAddin.CallKey 1
    End Sub

今私の問題は、ctrl-cを押すと、メッセージボックスが表示されますが、クリップボードには何もコピーされません! 私は何をすべきか?

4

1 に答える 1

2

リボン、右クリック コンテキスト メニュー、またはショートカット (ctrl + c) のいずれかを使用して、任意のコピーに対して機能する VSTO の再利用コマンドを試すことができます。

**

リボン.xml

**

<?xml version="1.0" encoding="UTF-8"?>
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" >
  <commands>
    <command idMso="Copy" onAction="CustomCopy"/>    
  </commands>
</customUI>

リボン.cs

 private Word.Application wordApp = Globals.ThisAddIn.Application;
    public void CustomCopy(Office.IRibbonControl control, bool cancelDefault)
    {
        //wordApp.Selection - returns the selction of copy
        //Or use Clipboard.GetData()
        //https://msdn.microsoft.com/en-us/library/system.windows.forms.clipboard.getdata(v=vs.110).aspx
        wordApp.Selection.Copy();
    }

Office 2007 での転用の詳細については、こちらを参照してください。ただし、Word 2013 でも動作します。

于 2016-05-02T07:44:37.317 に答える