シェルからの実行
Windowsの場合、シェルとは具体的にはExplorerのことです。ShellExecute関数を使うとシェルから新しいプロセスを起動したり、関連付けされたファイルを開いたりできます。
Delphi5(もちろん4以前も)では、この関数はWindowsモジュールに含まれていないので、この関数を使うためには、プログラムで宣言しなければなりません。
ShellExecute関数を使えるようにするには
プログラムのimplementation部に次の様な文を追加するとShellExecuteが使えるようになります。
{ Win32 API ShellExecute }
function ShellExecute(hWnd: Integer; Verb: PChar; FileName: PChar; Param: PChar;
Directory: PChar; nShowCmd: Integer): Integer; stdcall; external 'Shell32.dll' name 'ShellExecuteA';
他のプログラムを起動するには
Verbを"open"として、EXE(他にもBATなど実行可能なファイルも可能)ファイルをFileNameに指定してShellExecuteを実行すると、そのプログラムが実行されます。起動した他のプログラムは、自分のプログラムとは完全に独立して実行されます。起動するプログラムに引数を渡す必要がある場合は、Paramにその引数(例えば処理対象のファイル名など)を指定します。Directoryは、起動するプログラムが実行されるホームディレクトリです。nShowCmdは起動したプログラムがどのように表示されるかを指定するとき使います。ふつうに表示するときはSW_NORMALを指定します。
(例) ShellExecute(Handle, 'open', 'notepad.exe', nil, nil, SW_NORMAL);
関連付けされたファイルを開くには
Verbを"open"にした場合、実行できないテキストファイルなどを指定したとき、関連付けされたアプリケーションによって、そのファイルを開くことができます。
(例) ShellExecute(Handle, 'open', 'c:\temp\note.txt', nil, nil, SW_NORMAL);
特定のフォルダを開くには
Verbを"explore"にしてFileNameをフォルダ名にすれば、Explorerが起動されそのフォルダの内容が表示されます。
(例) ShellExecute(Handle, 'explore', 'c:\temp', nil, nil, SW_NORMAL);
特定のファイルを印刷するには
Verbを"print"にして、FileNameを印刷可能なファイル(テキストファイルなど)を指定すれば、関連付けされたアプリケーションが起動されてそのファイルがプリンタへ出力されます。
(例) ShellExecute(Handle, 'print', 'c:\temp\note.txt', nil, nil, SW_NORMAL);