ShellExecute を利用して複数のファイルを開きたい

[戻る]
kudou 2005/05/14(土) 14:48:51
XP sp2 VC++6.0 MFC 
ShellExecuteを利用して複数のファイルを立ち上げたいのですが、
一つしか立ち上げることができません。

for文のループでShellExecuteを選択したアイテム分起動してします。
何故か一度そのファイルを閉じないと開けないです。

RAPT 2005/05/14(土) 15:45:16
ソースコードは?
それから、その「立ち上げたい」ファイルの種類は?

kudou 2005/05/14(土) 16:43:56
これです。
何か間違っていますか。
自分ではわかりません。

// リストビューの表示されてる情報を全て消去
CListCtrl& ListCtrl = GetListCtrl();

// 選択したアイテム数を取得
int ItemNum = ListCtrl.GetSelectedCount();


// 選択した全てのファイルを取得する
POSITION pos = ListCtrl.GetFirstSelectedItemPosition();
if (pos == NULL)
   TRACE0("No items were selected!\n");
else
{
   while (pos)
   {
        // 選択したリストの番号を取得
        int nItem = ListCtrl.GetNextSelectedItem(pos);


        // ファイルのフルパスを取得してShellExecute関数でファイルを開く(ダブルクリッ
クしたファイル)
        HINSTANCE result =     ShellExecute
(NULL, "open", "C:\\test.tif" ,NULL ,NULL, SW_SHOW);
        if( result != 0 ) return false;
    }
}

Blue 2005/05/14(土) 17:25:30
エクスプローラのフォルダオプションの TIF ファイルの "open" の
「DDEを使う」のチェックをはずしてみたらどうなりますか?

# m_lpCmdLine の使い方について は解決したのでしょうか?

Blue 2005/05/14(土) 17:28:55
>エクスプローラのフォルダオプションの TIF ファイルの "open" の
>「DDEを使う」のチェックをはずしてみたらどうなりますか?
あんま関係なかったかも。。。

とりあえず "open" でどのプログラムに関連付けられているかを示されたほうがいいと
思います。

dairygoods 2005/05/14(土) 19:12:34
> HINSTANCE result =     ShellExecute
> (NULL, "open", "C:\\test.tif" ,NULL ,NULL, SW_SHOW);
> if( result != 0 ) return false;

戻り値は、"a value greater than 32 if successful, or an error value 
that is less than or equal to 32 otherwise. " ですので、
ループを抜けてしまうと思いますが。

古いスレッドには追加発言できません。