2016-05-03 7 views
1

私は見通し2016年、次のコードでは、クリップボードから(ctrlL + Cを介して)コピーされた添付ファイルを取得しようとしていますが、私が使用しているもので、この2016年を除いて、すべてのバージョンのOutlookのための機能ですメソッドは、ユーザーがCTRL + Cを使用してコピーをシミュレートするときに呼び出されます。上記のコードOutlookでクリップボードからコピーされた見通しの添付ファイルを取得2016

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で正常に動作しますが、展望2016のために、時々、このコードは動作しません。 ctrl + CはOutlookでシミュレートされていても、所有者のクリップボードのプロセスIDはOutlookのプロセスIDと一致しません。たとえそれが一致しても、Clipboard.ContainsFileDropList()メソッドはfalseを返しますが、私は実際にいくつかのフォルダやデスクトップにコピーしたコンテンツを貼り付けることができます。 Outlook 2016の新しい動作と関係がありますか? Outlookでコピーされたクリップボードの内容を取得する正確な方法はありますか?

答えて

0

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

関連する問題