他の実行形式(*.EXE)ファイルの実行 |
VB上からほかの実行可能プログラムを起動します (052) | |
記述 Shell(プログラム名,ウィンドウスタイル) プログラム名はフルパスで ウィンドウスタイルは省略可能 戻値 実行中のプログラムを識別する重複しない番号(タスクID)このタスクIDは AppActivate ステートメントで使用される 使用例 Private Sub Command1_Click() Dim Ret As Long Ret = Shell("C:\WINDOWS\CALC.EXE", vbNormalFocus) ' 電卓を実行します。 ' Shell "C:\WINDOWS\CALC.EXE" 'これでも可 End Sub Private Sub Command2_Click() Dim Ret As Long Ret = Shell("C:\Program Files\Accessories\MSPAINT.EXE", vbNormalFocus) End Sub 上記の方法で起動できない機種は下記を試して下さい。 Private Sub Command3_Click() Dim Ret As Long Dim MyFile As String MyFile = Chr$(34) & "C:\Program Files\Accessories\MSPAINT.EXE" & Chr$(34) Ret = Shell(MyFile, vbNormalFocus) End Sub |
|
ご注意 c:\My Documents のような空白を使用したフォルダー等はShell関数 では使用できません。(MS-DOS 流ルールにより) そこでファイル名にChr(34) & "ファイル名" & Chr(34) を追加することで 空白入りファイルが使えるようになります。 但し、最近の機種は使用可能のようです。(Win98 SE 以降??) この場合は必要です Private Sub Command4_Click() Dim Ret As Long 'Ret = Shell("C:\Program Files\Accessories\MSPAINT.EXE C:\My Documents\inu.bmp", vbNormalFocus) ' ↑ これでは起動しない Dim MyFile As String MyFile = Chr$(34) & "C:\My Documents\inu.bmp" & Chr$(34) Ret = Shell("C:\Program Files\Accessories\MSPAINT.EXE " _ & MyFile, vbNormalFocus) End Sub |
|
DOSの内部コマンドを実行する | |
'ファイル等の表示 Shell "command.com /c dir /w", 1 'バッチファイルの実行 Shell "command.com /c MyBat.bat", 1 'ファイルのコピー Shell "command.com /c copy c:\OldFile c:\NewFile", 1 'テキストファイル同士の結合(Cファイル=Aファイル+Bファイル) Shell "command.com /c copy c:\AFile + c:\BFile CFile", 1 これだけのことでテキストボックスにAFileを表示し、BFileを続けて表示し、その内容をCFileに書き出し保存したのと同じ状態になる。 Txt ファイルと CSVファイルとの結合もOKです。 |
ウィンドウスタイル | ||
定 数 | 値 | ウ イ ン ド ウ の 状 態 |
vbHide | 0 | フォーカスを持ち、非表示にされるウィンドウ |
vbNormalFocus | 1 | フォーカスを持ち、元のサイズと位置に復元されるウィンドウ |
vbMinimizedFocus | 2 | フォーカスを持ち、最小化表示されるウィンドウ |
vbMaximizedFocus | 3 | フォーカスを持ち、最大化表示されるウィンドウ |
vbNormalNoFocus | 4 | 最後にウィンドウを閉じたときのサイズと位置に復元されるフォーカスを持たないウィンドウ。現在アクティブなウィンドウは、アクティブのままです。 |
vbMinimizedNoFocus | 6 | 最小化表示されるフォーカスを持たないウィンドウ現在アクティブなウィンドウは、アクティブのままです。 |
2002/05/12