他の実行ファイルの起動するには?

解決


しゃ  2006-05-21 00:52:54  No: 21689  IP: 192.*.*.*

Delpi6.0Personal WindowsXPです
あるボタンを押すと、他のソフトウェアが起動するプログラムを書きたいのですがどのようにすればよいのでしょうか?
ちなみに、他のソフトとはDelphiで作成した自作ソフトです。
よろしくお願いします。

編集 削除
Fusa  2006-05-21 02:23:52  No: 21690  IP: 192.*.*.*

どっちかの関数を使ってみてくださいな。


//ShellExecuteを簡単に呼び出します
//uses ShellAPIを追加してください
procedure EasyShellExecuteCmdLine(CommandLine: String; Show: Boolean=True);
begin
  if Show then
    ShellExecute( 0, nil, PChar(CommandLine), nil, nil, SW_SHOW)
  else
    ShellExecute( 0, nil, PChar(CommandLine), nil, nil, SW_HIDE)
end;


procedure EasyCreateProcessCmd(CommandLine: String; Modal: Boolean;
 Show: Boolean = True);
var
  si: TStartupInfo;
  pi: TProcessInformation;
begin
  FillChar(si, Sizeof(TStartupInfo), 0);
  si.cb := Sizeof(TStartupInfo);

  if not Show then
  with si do
  begin
    cb := SizeOf(si);
    lpReserved := nil;
    lpDesktop := nil;
    lpTitle := nil;
    dwX := 0;
    dwY := 0;
    dwXSize := 0;
    dwYSize := 0;
    dwXCountChars := 0;
    dwYCountChars := 0;
    dwFillAttribute := 0;
    dwFlags:= STARTF_USESHOWWINDOW;     // DOS プロンプトが表示
    wShowWindow := SW_HIDE;             // されるのを抑止する
//    dwFlags := STARTF_USESHOWWINDOW;
//    wShowWindow := SW_SHOWMINIMIZED or SW_HIDE;
  end;

  CreateProcess(nil,
    PChar(CommandLine),
      nil, nil, True, 0, nil, nil, si, pi);

  if Modal then
    WaitForSingleObject(pi.hProcess, INFINITE)
  {起動したプロセスが終了するのを待つ命令
   待っている間は実行が停止する}
end;

編集 削除
しゃ  2006-05-21 04:08:30  No: 21691  IP: 192.*.*.*

Fusaさん回答ありがとうございました。
難しくてよくわかりません。(すみません)
少し自分で調べてからよく考えて見ます。
とりいそぎ、お礼の返事とさせていただきます。

編集 削除
 2006-05-21 14:37:25  No: 21692  IP: 192.*.*.*

>他のソフトウェアが起動するプログラム

要は、

ShellExecute( 0, nil, PChar( FileName), nil, nil, SW_SHOW)

です。
一応、これだけで、起動できます。
unitに ShellApi を宣言しておきましょう。

編集 削除
しゃ  2006-05-21 19:19:49  No: 21693  IP: 192.*.*.*

お返事おくれてすみません。
要はそれだけなのですね。。
Shellとかいろいろ調べていました。
現状では、意味がやっぱりわかりませんので、もう少し自分で学習してみます。
ありがとうございました。

編集 削除