1

Outlook 2016 でクリップボードから (ctrlL+c を使用して) コピーされた添付ファイルを取得しようとしています。次のコードは、私が使用するものであり、2016 を除くすべての Outlook バージョンで機能します。 +C.

void GetClipBoardFiles()
{                
            // Getting the outlook process id using windows API
            int outlookProccessId = GetProcessCurrent();
            // getting the clipboard process id using windows API
            IntPtr hwndClipboardOwner = GetClipboardOwner();
            //  getting owners process id of clipboard using windows API
            uint processClipboardOwner = GetProcessFromWindowHandle(hwndClipboardOwner);

            // If clipboard owner and outlook process id is equal, this copy is done within outlook.
            if (outlookProccessId == processClipboardOwner)
            {
                string[] fileNames = null;
               // Check for the available files details in clipboard 
                if (Clipboard.ContainsFileDropList())
                {
                   // my custom code.
                }
             }
}

上記のコードは Outlook 2003、2007、2010、および 2013 では正常に動作しますが、Outlook 2016 ではこのコードが動作しないことがあります。Outlook で ctrl+C をシミュレートしても、クリップボードの所有者のプロセス ID が Outlook のプロセス ID と一致しません。一致しても、 Clipboard.ContainsFileDropList()メソッドはfalseを返しますが、コピーしたコンテンツをフォルダーまたはデスクトップに実際に貼り付けることができます。Outlook 2016 の新しい動作と関係がありますか? クリップボードの内容を Outlook にコピーする正確な方法はありますか。

4

1 に答える 1

0

新しくインストールした Windows 7 でこのシナリオを試しました。Windows 7 の更新プログラムをインストールすると、この問題は自動的に修正されました。

于 2016-05-05T02:50:19.707 に答える