• ベストアンサー

開いたファイルを閉じるには?

Cのプログラムで system関数を使うとDOSコマンドが使えるので、 txtファイルを(ノートパッド)開くことができます。 開いたtxtファイルを Cのプログラムまたは、DOSコマンドで 閉じるのには、どうしたら良いですか? 教えてください。 お願いしますm(._.)m (不可能ならば、不可能と教えてください。)

質問者が選んだベストアンサー

  • ベストアンサー
  • muyoshid
  • ベストアンサー率72% (230/318)
回答No.2

こんにちわ。 #1 muyoshid です。 以下に、プロセス起動のサンプルを挙げて起きます。 cmdline に、実行するコマンドのコマンドラインを渡すと、関数の復帰値で プロセス起動の成功/失敗が分かります。 プロセスの起動に成功した場合、アウトパラメータで起動されたプロセスの プロセスハンドルが帰ってきますので、プロセス終了時には 「TerminateProcess(hProcess, 1);」とすればプロセスを終了させられます。 パラメタの詳細等については、市販本やInternet 等で確認して下さい。 -------------------------------------------------------------------------------------- int ExecProcess(cmdline, hProcess) char  *cmdline; // (IN) 実行するコマンドライン HANDLE *hProcess; // (OUT) 起動されたプロセスのハンドル {   PROCESS_INFORMATION  info;   STARTUPINFO      sinf;   BOOL         rinf;   memset((void *)&info, 0x00, sizeof(info));   memset((void *)&sinf, 0x00, sizeof(sinf));   // プロセス起動   rinf = CreateProcess(NULL, cmdline, NULL, NULL, FALSE,    (CREATE_DEFAULT_ERROR_MODE | CREATE_NEW_PROCESS_GROUP | DETACHED_PROCESS),    NULL, NULL, &sinf, &info);   if (FALSE == rinf) {     // プロセス起動失敗     *hProcess = INVALID_HANDLE_VALUE;     return(-1);   }   CloseHandle(info.dwThreadId);   *hProcess = info.dwProcessId;   return(0); } --------------------------------------------------------------------------------------

mcurry
質問者

お礼

回答ありがとうございました。 わざわざ、サンプルまで書いてもらい、感激です。 私は APIの基礎を学んでいる最中の素人ですが、 そんな私にも、理解できました。 これから、挑戦してみます。

その他の回答 (1)

  • muyoshid
  • ベストアンサー率72% (230/318)
回答No.1

こんにちわ。 system 関数は、プロセスの起動に成功したか失敗したかしか 分からないので、呼出し元でプロセスを終了させるのは無理 だと思います。 Win32API の場合、CreateProcess/TerminateProcess で プロセスの起動/終了ができます。

参考URL:
http://www.microsoft.com/JAPAN/developer/library/jpwinpf/_win32_createprocess.htm,http://www.microsoft.com/JAPAN/develop
mcurry
質問者

補足

ご回答ありがとうございます。 win32APIの知識がほとんどないので、 どのようにプログラムを書けばよいかよくわかりません。 どのように書けばよいでしょうか? 単純なサンプルを書いてくださると うれしいのですが。 お願いしますm(._.)m