外部プロセスの起動          <TOP>


外部プロセスを起動します。F-BASICのShellExecuteと同じです。

実行ファイルの起動、DOSプロンプトを起動、ドキュメントファイルのオープン、ウェブブラウザの起動を実行します。

ShellExecute 拡張子に関連付けられたプログラムを実行

 

 

 

'================================================================
'= 外部プロセスの起動
'=    (F-BASICのSHELLEXECUTEと同じ)
'=    (ShellExecute.bas)
'================================================================
#include "Windows.bi"

' 拡張子に関連付けられたプログラムを実行
Declare Function Api_ShellExecute& Lib "shell32" Alias "ShellExecuteA" (ByVal hWnd&, ByVal lpOperation$, ByVal lpFile$, ByVal lpParameters$, ByVal lpDirectory$, ByVal nShowCmd&)

#define SW_HIDE 0                       '指定のウィンドウを非表示にし他のウィンドウをアクティブ化
#define SW_MAXIMIZE 3                   '最大化
#define SW_MINIMIZE 6                   '指定のウィンドウをアイコン化しタスクリスト内のトップレベルウィンドウをアクティブ化
#define SW_RESTORE 9                    'ウィンドウをアクティブ化し表示。ウィンドウがアイコン化または最大化されているときは元の位置とサイズに
#define SW_SHOW 5                       'ウィンドウをアクティブ化し現在の位置とサイズで表示
#define SW_SHOWDEFAULT 10               '
#define SW_SHOWMAXIMIZED 3              'ウィンドウをアクティブ化し最大表示
#define SW_SHOWMINIMIZED 2              'ウィンドウをアクティブ化しアイコン化
#define SW_SHOWMINNOACTIVE 7            'ウィンドウをアイコン化する。現在アクティブなウィンドウはアクティブなままにする
#define SW_SHOWNA 8                     'ウィンドウを表示する現在アクティブなウィンドウはアクティブなままにする
#define SW_SHOWNOACTIVATE 4             '以前に表示された位置とサイズで表示する。現在アクティブなウィンドウはアクティブなままにする。
#define SW_SHOWNORMAL 1                 '起動時に通常のウィンドウとして表示

Var Shared Combo1 As Object
Var Shared Button1 As Object
Var SHared Button2 As Object

Combo1.Attach GetDlgItem("Combo1") : Combo1.SetFontSize 14
Button1.Attach GetDlgItem("Button1") : Button1.SetFontSize 14
Button2.Attach GetDlgItem("Button2") : Button2.SetFontSize 14

'================================================================
'=
'================================================================
Declare Sub MainForm_Start edecl ()
Sub MainForm_Start()
    Combo1.AddString "https://tokovalue.jp/ShellExecute_U.htm"
    Combo1.AddString "notepad.exe"
    Combo1.AddString "calc.exe"
    Combo1.AddString "test.txt"
    Combo1.AddString "test.doc"
End Sub

'================================================================
'=
'================================================================
Declare Sub Button1_on edecl ()
Sub Button1_on()
    Var FileName As String
    Var Ret As Long

    FileName = Combo1.GetText(Combo1.GetCursel)

    'lpOperation$にvbNullStringを指定した場合Openと同じ
    Ret = Api_ShellExecute(GethWnd, ByVal 0, FileName, ByVal 0, ByVal 0, SW_SHOWNORMAL)
End Sub

'================================================================
'= ファイルやフォルダの検索ダイアグラム呼び出し
'================================================================
Declare Sub Button2_on edecl ()
Sub Button2_on()
    Var Path As String
    Var Ret As Long

    Path = "C:\Windows"
    Ret = Api_ShellExecute(GethWnd, "Find", Path, ByVal 0, ByVal 0, SW_SHOWNORMAL)
End Sub

'================================================================
'=
'================================================================
While 1
    WaitEvent
Wend
Stop
End