情報
概要
起動時に最大化等のオプションを付けられます。また、起動したプログラムのハンドルを取得できます。
掲示板の質問と回答を参考に改良して作りました。(勝手にしてすみません)
サンプル
#最大化して起動
「notepad.exe」をSW_SHOWMAXIMIZEDとしてAPI起動
本体
!SW_HIDE=0;//隠し起動
!SW_SHOWNORMAL=1;//通常
!SW_SHOWMINIMIZED=2;//最小化
!SW_SHOWMAXIMIZED=3;//最大化
!SW_SHOWNOACTIVATE=4;//非アクティブ起動
!SW_SHOW=5;//復元
!SW_MINIMIZE=6;/*指定されたウィンドウを最小化して
次アクティブウィンドウをアクティブ*/
!SW_SHOWMINNOACTIVE=7;//非アクティブ最小化
!SW_SHOWNA=8;//非アクティブ復元
!SW_RESTORE=9;//元に戻す
!SW_SHOWDEFAULT=10;/*アプリケーションを起動したプログラムがCreateProcess関数に
パラメータとして渡したSTARTUPINFO構造体で指定されているSW_値に基づいて表示状態を設定*/
!SW_FORCEMINIMIZE=11;/*(Windows 2000/XPのみ)ウィンドウを所有しているスレッドが
ハングしている状態であっても最小化。他のスレッドからウィンドウを
最小化させる場合にのみこのフラグを使用するべき*/
#-------------------------------------
●ShellExecuteExA({参照渡し}pExecInfo) =DLL("shell32.dll","BOOL ShellExecuteExA(LPSHELLEXECUTEINFO pExecInfo)")
●CloseHandle(h)=DLL("Kernel32.dll","BOOL CloseHandle(HANDLE hObject)")
!SEE_MASK_NOCLOSEPROCESS=$40//hProcessにプロセスハンドルを返す
!SHELLEXECUTEINFO_TYPE="DWORD,DWORD,HWND,LPCTSTR,LPCTSTR,LPCTSTR,LPCTSTR,INT,HINSTANCE,LPVOID,LPCTSTR,HKEY,DWORD,HANDLE,HANDLE,HANDLE"
■SHELLEXECUTEINFO
・cbSize{=60} //構造体サイズ
・fMask //オプション
・hwnd //親ウィンドウ
・lpVerb //動作名
・lpFile //ファイル名
・lpParameters //コマンドラインパラメータ
・lpDirectory //起動時ディレクトリ
・nShow //表示形式
・hInstApp //結果値
・lpIDList //アイテムIDリスト
・lpClass //クラス名
・hkeyClass //ファイルクラスのレジストリキー
・dwHotKey //ホットキー
・hIcon //ファイルクラスのアイコン
・hMonitor //モニタ
・hProcess //プロセスハンドル
●API起動(Sを{=?}MODEとして{=?}Oで)
もし、MODE=空ならば、MODE=SW_SHOWNORMAL
GとはSHELLEXECUTEINFO
これについて
nShow=MODE
fMask=SEE_MASK_NOCLOSEPROCESS
lpFile=S
lpParameters=O
G構造体とは文字列;G構造体に60を確保
PACK(G,G構造体,SHELLEXECUTEINFO_TYPE)
ShellExecuteExA(G構造体)
Hとは整数
#UNPACK(G構造体,G,SHELLEXECUTEINFO_TYPE)
H=G構造体の57を「DWORD」でバイナリ取得
Hで戻る
総合: -
今日: - 人
昨日: - 人
最終更新:2012年02月01日 02:11