C++のアプリケーションで、ほかのプログラム(*.dllではなく*.exe)
を、起動するにはどうすればいいでしょうか?
また、関数の呼び出しというような形ではなく、
新規にウィンドウを開くような形です。
C標準関数のsystemとか,
Windows APIのCreateProcessやShellExecute, ShellExecuteExなどを使えばできます。
たとえば、下のようにすれば実行できますよ。
コンピュータ名( 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さんわかりますか?
こんなに早く回答していただきありがとうございます。
system関数を使用することにより出来ました。
YuOさん、まちゃはげさん、ありがとうございました。
> 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はそのような必要はないです。
ツイート | ![]() |