COMの呼び出しのタイムアウト間隔を変更する

MFCアプリケーションから、WordやExcelなどのCOMを呼び出して実行する際に、処理に時間が掛かることがあります。あまり時間が掛かり過ぎるとタイムアウトになり「サーバー使用中」のメッセージが頻繁に出てくるため、場合によっては煩わしくなってしまいます。

com_timeout.png

そこで下記のコードの様に、“SetMessagePendingDelay”関数でタイムアウト間隔をミリ秒単位で変更することで、メッセージの出てくる頻度を抑えることができます。

#include <afxole.h>

BOOL CSampleApp::InitInstance()
{
    // OLE ライブラリを初期化します。
    if (!AfxOleInit())
    {
        AfxMessageBox(_T("OLEライブラリ 初期化失敗"));
        return FALSE;
    }

    // COMの呼び出しのタイムアウト間隔を設定(ミリ秒)
    AfxOleGetMessageFilter()->SetMessagePendingDelay(10000);
}
 

参考URL(Microsoft サポート)