質問する質問する
 

質問エクスプローラと実行ダイアログについて

  • 2009年7月23日 0:40firewall21 ユーザーのメダルユーザーのメダルユーザーのメダルユーザーのメダルユーザーのメダル
     

    問一:実行ダイアログ
    メニュー開始->ファイル名を指定して実行->実行ダイアログが呼び出された。
    VCプログラムにどのようにそのダイアログを呼び出せますか?模擬キーいがいの方法がありますか?APIとか、ソースの中のダイアログ名とか?

    問二:エクスプローラ
    プログラムにexplorer.exeというコマンドラインを実行してエクスプローラウインドウが呼び出されました。
    ただ、どのようにそのウインドウをコントロールできますか?最前へ表示させるとか、クロスされたことを知らせるとか。

すべての返信

  • 2009年7月30日 10:58hnakayam ユーザーのメダルユーザーのメダルユーザーのメダルユーザーのメダルユーザーのメダル
     
    Windows Embedded CE 6.0ではエクスプローラシェルのソースコードが公開されています。

    >問一:実行ダイアログ

    「ファイル名を指定して実行」ダイアログのウインドウプロシージャは
    \WINCE600\PUBLIC\SHELL\OAK\HPC\EXPLORER\TASKBAR\rundlg.cpp 
    内の
    LRESULT  CTaskBar::RunDlg(HWND hwnd, UINT msg, WPARAM wp, LPARAM lp)
    という関数で実装されていますが、
    この中ではプログラム名とコマンドライン文字列を分離した後、単にShellExecuteExを呼び出しているだけです。

    >問二:エクスプローラ
    質問の意味がよくわかりませんが、explorer.exeでサポートされているコマンドライン引数は何か?ということであれば
    explorer.exeの WinMainのソースコードが
    \WINCE600\PUBLIC\SHELL\OAK\HPC\EXPLORER\MAIN\explorer.cpp
    内にありますので研究してみてください。

    実際にはexplorer.exeのインスタンスは起動時に一つだけ起動するよう想定されており、その時に受け取る文字列はSignalStarted()呼び出しを行うための数字の引数です。
    2つ目以降のインスタンスが生成されたとき、実際には指定されたフォルダ名・オブジェクト名を引数としてSHCreateExplorerInstance()を呼び出すだけです。
    この時有効なフォルダ名・オブジェクト名には"-u <URL>"というURL形式の文字列か、"Explorer\Desktop"、"Explorer\MyDevice"という文字列か、あとは任意のフォルダパスが指定可能です。

    これ以外のコマンドライン引数はサポートしていないと思うので、表示されたExplorerウインドウを何かしらコントロールすることはできないと思います。







    hnakayam
  • 2009年8月3日 5:32firewall21 ユーザーのメダルユーザーのメダルユーザーのメダルユーザーのメダルユーザーのメダル
     
    一つの要件を忘れちゃった。WINCEは5.0ですが。