C++でほかの*.exeファイルを起動するには?

解決


ent  URL  2004-04-03 19:57:48  No: 53429

C++のアプリケーションで、ほかのプログラム(*.dllではなく*.exe)
を、起動するにはどうすればいいでしょうか?
また、関数の呼び出しというような形ではなく、
新規にウィンドウを開くような形です。


YuO  2004-04-03 21:07:27  No: 53430

C標準関数のsystemとか,
Windows APIのCreateProcessやShellExecute, ShellExecuteExなどを使えばできます。


まちゃはげ  2004-04-04 00:09:52  No: 53431

たとえば、下のようにすれば実行できますよ。
コンピュータ名( Latitude-02 )の中の共用フォルダの"CANONプリンタドライバインストール手順.doc"を実行するプログラムです。

char  dir[80],fname[256],path[256],computer[80];

sprintf( dir,"%s","\\\\Latitude-02\\共用" );
sprintf( fname,"%s","CANONプリンタドライバインストール手順.doc" );
sprintf( path,"%s\\%s",dir,fname );
sprintf( computer,"%s","\\\\Latitude-02" );
ShellExecute( (HWND)computer,"open",path,NULL,NULL,SW_SHOWNORMAL );

これは、別コンピュータのファイルを自分のコンピュータ内で実行するというプログラムです。(  自分のコンピュータのディスプレイに表示されます。)
これを踏まえて、別コンピュータのファイルを別コンピュータ内で実行し、別コンピュータのディスプレイに表示させるにはどうしたらいいんでしょうかねぇ?
どなたか教えてください。
YuOさんわかりますか?


ent  URL  2004-04-04 04:11:56  No: 53432

こんなに早く回答していただきありがとうございます。

system関数を使用することにより出来ました。
YuOさん、まちゃはげさん、ありがとうございました。


YuO  2004-04-04 04:26:47  No: 53433

> char    dir[80],fname[256],path[256],computer[80];
> sprintf( computer,"%s","\\\\Latitude-02" );
> ShellExecute( (HWND)computer,"open",path,NULL,NULL,SW_SHOWNORMAL );

computerをHWNDにキャストしているのは何故ですか?
というか,これで何がしたいのですか?

「動いているように見える」と「問題なく動く」の間には,大きな開きがあります。
MSDNをちゃんと読んで使いましょう。
http://msdn.microsoft.com/library/en-us/shellcc/platform/shell/reference/functions/shellexecute.asp

> sprintf( dir,"%s","\\\\Latitude-02\\共用" );
> sprintf( fname,"%s","CANONプリンタドライバインストール手順.doc" );
> sprintf( path,"%s\\%s",dir,fname );

UNCをわざわざ文字列として生成する必要はないと思いますが。
CreateProcessであればLPTSTRなので文字列として生成する必要がありますが,
ShellExecuteはそのような必要はないです。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加