2016/10/11 (火) 19:13:17 Mr.XRAY |
> ブロック解除のプログラムを更新しました.
また更新しました.
コマンドプロンプトから引数付きで実行した場合,結果のダイアログの表示位置を
なるべくコマンドプロンプトのウィンドウ上に表示するようにしました.
引数とは,ブロック解除対象のファイル名 (またはフォルダ名) です.
コマンドプロンプトから起動したかどうかの判定は,
標準出力のハンドルが取得できたかどうかで判定しています.
const
LWndClassName = 'ConsoleWindowClass';
var
LhCmdPrompt : HWND;
LCmdStdOut : HWND;
begin
//標準出力とコマンドプロンプトのハンドルを取得
LCmdStdOut := GetStdHandle(STD_OUTPUT_HANDLE);
LhCmdPrompt := FindWindow(PChar(LWndClassName), nil);
//コマンドラインオプション(解除対象ファイル名)を指定して実行した場合
if ParamCount > 0 then begin
if (LCmdStdOut > 0) and (LhCmdPrompt > 0) then begin
//コマンドプロンプトから実行した場合
end else begin
//EXEまたはEXEのショートカットから実行した場合
end;
end else begin
//EXEを引数なしで実行した場合
end;
end;
下の図では,コマンドプロンプトで,CD コマンド等でカレントディレクトリを
移動していません.コマンドプロンプトをエクスプローラから起動しています.
[エクスプローラで [ ファイル名を指定して実行 ]]
http://mrxray.on.coocan.jp/Delphi/Others/ExecuteFile.htm#05
|
|