私は見通し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でコピーされたクリップボードの内容を取得する正確な方法はありますか?