2016-05-24 6 views
0

ドラッグイベントでファイルを操作することはできますか?ドラッグ&ドロップC++でドロップ前にOutlookファイルを操作する

ご存知のように、特定のサードパーティ製のプログラム(Firefox、Chromeなど)で理解できないドラッグ操作&を実行するために、ほとんどのWindowsプログラム(この特定のケースではOutlook)がストリームを使用しています。私はサードパーティ製のプログラムの動作を変更することができないので、私は一時的なフォルダにファイルをコピーし、サードパーティのプログラムのドロップが発生する前にドロップ情報を(ole & com)を操作するOutlookアドインをコードしようとしました。

私は次のような問題があります。

私は干渉していたイベントは極端な回避策です:ドラッグメールをトリガする別の見通し要素を横断する必要があるように、Outlook内「DragEnterイベント」COMイベント。それはテスト目的のためのものでした。問題は、電子メールをドラッグして同時にドロップ情報を操作したり、自分のドラッグを強制したりするときにどこでグローバルに接続できるかです。& drop(DoDragDrop(..))?

HRESULT TDropTarget::DragEnter(IDataObject* pDataObj, DWORD grfKeyState, POINTL pt, DWORD* pdwEffect) { 
    //... 
    //get data from pDataObj, create file and new IDataObject* pDataObject which points to file 
    DWORD dwResult = DoDragDrop(pDataObject, pDropSource, DROPEFFECT_COPY, pdwEffect); 

    if(dwResult == DRAGDROP_S_DROP) { // success! 
     OutputDebugString(TEXT("DRAGDROP_S_DROP\r\n")); 
    } else if (dwResult == DRAGDROP_S_CANCEL) { // cancelled 
     OutputDebugString(TEXT("DRAGDROP_S_CANCEL\r\n")); 
    } 

    pDataObject->Release(); 
    pDropSource->Release();  

    return S_OK; 
} 

答えて

0

実行時にDoDragDrop Windows API関数を動的に修正することができます。 CF_HDROP形式を追加し、そのオブジェクトをDoDragDrop()の元のバージョンに渡す独自のIDataObjectを作成できます。

関連する問題