●カスタマイズ方法(画面、フォント、背景色)
このGUI-PSH窓アプリを色々利用するときのカスタマイズ方法を次に紹介します。<戻る 進む>
◎画面の大きさ、フォント&寸法、背景色の変更は[13行目]を編集しカスタマイズする。
- 画面の大きさ(寸法)...[Size="920,620"](窓幅,高さ)の変更
- フォント&寸法.......[Font="BIZ UDゴシック,13"](フォント名,寸法)の変更
- 背景色...............[BackColor="#F0F0C0"](R/G/B値設定)の変更
Copy$mMain =New-Object Form -Pro @{ Size="920,620"; }; $tBox =New-Object TextBox -Pro @{ Font="BIZ UDゴシック,13"; BackColor="#F0F0C0";
◎機能拡張ファイルの共用利用
[winCmd001.bat]ファイルを数件複製し利用するとき、機能拡張ファイルを共用利用したい場合、[28行目]の変数($fladd)に共用ファイル名(例:winCmdAdd801.ps1)を設定する。
$fladd=$fln.replace(".bat","_add.ps1"); --> $fladd="winCmdAdd801.ps1"
●デバッグ(DBG)方法
<List1.4.1 へのDBG対応>
<S1> 1行目:[&]の後に[rem ]を追加しコメント行にしてDOS窓を表示モードにする。
[ @echo off &if .....] --> [ @echo off &rem if.....]
<S2> 3行目:[exit]を削除し[pause&exit]にしてDOS窓を表示停止する。
[ exit; pause&exit; ] --> [ pause&exit; ]
<S3> 23行目:行の最後に [ dbg $zcc; ] を追記し取得行コマンドをDLG表示する。(dbg/dbcの利用例)
[ .... $zcc=($tBox.Lines[$ln]-split"##")[0]; dbg $zcc; ]
<Step4> 上記で動作確認したら[dbg $zcc;]を[dbc $zcc;]に変更して再起動してみる。
<参考> 22行目: dbcの利用例として[dbc "[file] $fln";]を追記しファイル名を表示する。
●補足説明
◎私の紹介するGUI-PSHアプリは全て下記2行を記述します。1行目は、PSHをGUI利用モードに設定します(Winフォーム利用)。2行目はGUI利用モードでのDBG関数として、dbg(ブレーク変数表示)、dbc(ブレーク無し変数表示)を内蔵して、逐次DBG可能な状態でPSHアプリを作成します。Copyusing namespace System.Windows.Forms; Add-Type -AssemblyName System.Windows.Forms,System.Drawing; ##★GUI function dbg($cc){ [MessageBox]::Show($cc) }; function dbc($zcc){ Write-Host $zcc; }; ##★DBG
●[List1.4.1] 以下に上記DBG対応(rem/exit/dbg/dbc)したソースを添付します。
@echo off &rem if not "%~0"=="%~dp0.\%~nx0" (start /min cmd /c,"%~dp0.\%~nx0" %* &exit) &rem ★DOS窓mini化
powershell -ExecutionPolicy RemoteSigned "$fln=(echo %0); $aa=(Cat $fln -Raw); $fdt=$aa.substring($aa.indexof('##'+'STT:')); Iex($fdt+'##>');"
pause&exit;
##
##Ver1.061 2023/1101 by ryu #####################################
##
##STT: ★batファイルでPSHを起動する
##
using namespace System.Windows.Forms; Add-Type -AssemblyName System.Windows.Forms,System.Drawing; ##★GUI
function dbg($cc){ [MessageBox]::Show($cc) }; function dbc($zcc){ Write-Host $zcc; }; ##★DBG
function ssView($bb){ $tBox.Text=$bb.substring( $bb.indexof("`n<"+"##" )); $tBox.SelectionStart=0; $mMain.Text="[1.061]"+$fln; }; ##★表示
##★メイン窓/編集窓の生成 ##★窓寸法(WW,HH) ##★文字種類/寸法 ##★背景色
$mMain =New-Object Form -Pro @{ Size="920,620"; }; $tBox =New-Object TextBox -Pro @{ Font="BIZ UDゴシック,13"; BackColor="#F0F0C0";
Dock="Fill"; Multiline=$True; AcceptsReturn=$True; ScrollBars=[ScrollBars]::Vertical; }; $mMain.Controls.Add($tBox);
##★右釦メニュ ##★編集 ##★再表示 ##★クリップ処理 ##★機能追加
$tBox.ContextMenuStrip =$conMenu =New-object ContextMenuStrip -Pro @{ Font="BIZ UDゴシック,12"; }; dbc "[file] $fln";
function ssSetRbtMenu( $zcha ){ $aa=$conMenu.Items.Add( ($zcc =New-Object ToolStripMenuItem) ); $zcc.Text=$zcha; return $zcc; };
(ssSetRbtMenu "編集" ).add_Click({ notepad.exe $fln });
(ssSetRbtMenu "再表示").add_Click({ ssView( Cat $fln -Raw ) });
(ssSetRbtMenu "クリップへ取得").add_Click({ $tBox.Copy() });
(ssSetRbtMenu "クリップを貼付").add_Click({ $tBox.Paste() });
##★マウス[WC]操作 ##★DOS処理 ##★explorer処理 ⇒ ★psh追加⇒★画面設定⇒MainDLG表示 ##★Tool窓起動
$tBox.Add_DoubleClick({ $ln=((($tBox.Text).substring(0,$tBox.SelectionStart)).split("`n")).count-1; $zcc=($tBox.Lines[$ln]-split"##")[0]; dbg $zcc;
if( $zcc.startsWith("> ") ){ $zcc=$zcc.substring(1); if($zcc.contains(" cd ") ){ Iex($zcc) }; Start Cmd -Arg "/k $zcc"; return; };
if( $zcc.startsWith(">> ")){ $zcc=$zcc.substring(2);
if($zcc.contains("explorer ")){;}else{ $zcc=($zcc.replace(" shell:","explorer shell:")).replace(" ms-","explorer ms-"); };
Start -NoN Cmd -Arg "/c $zcc"; };
}); $fladd=$fln.replace(".bat","_add.ps1"); if( Test-Path $fladd ){ . $fladd; }; ssView($fdt); $mMain.ShowDialog();
<##Ver1.01--by ryu------------------------------------------------------
## Windows Cmd 簡単利用(マウスで行をダブルクリック起動/右釦で編集/再表示)
> Dir c:\ ##[Dos] Dir起動 ・・・・[>]Dos窓利用
> Ver & Date /t ##[Dos] Verとdateの起動
> cd c:\tmp ##[Dos] フォルダ移動([>]のみ)
> Dir ##[Dos] 上記フォルダでDir起動
>> notepad ##[Exe] メモ帳起動・・・[>>]Dos窓無し
>> calc ##[Exe] 電卓
>> SnippingTool ##[Exe] 画面コピー
>> desk.cpl \,3 ##[Dlg] デスプレイのDlg設定
>> ms-settings: ##[Dlg] 設定のDlg窓
>> control ##[Lst] コントロールパネル
>> hdwwiz.cpl ##[Lst] デバイスマネージャ
[winCmd001dbg.bat]
●アプリの簡単な説明(1行毎にコピペ利用可能)
- [1行目] batファイル起動でDOS窓を非表示設定する(極小化)。
- [2行目] batファイルでPSHを起動する。このとき自己ファイル名を$flnに設定しファイル内容を$aaに取得し、7行目[##STT]以下を切出しIex()でPSH実行する。そのときファイル最後に[##>]を付加することで、30行目[<##]からファイル最後までをコメント行としてPSH処理する。
- [3行目] DBGモードとしてDOS窓表示後に停止指定する(ここまでがbat処理)。
- [7行目] この行からPSHアプリ部分を記述する。
- [9行目] PSHをGUIモードで利用するときの設定。
- [10行目] PSHをDBGするときのdbg/dbc関数組込み。
- [11行目] GUI-PSH窓への表示。
- [13-14行目] GUI-PSH窓の生成。
- [16-21行目] マウス右釦押下メニュの生成、各メニュ機能の処理組込。
- [23行目] ダブルクリック位置の行を取得。
- [24-27行目] DOS/Windows/explorer関連コマンドの起動処理。
- [28行目] 機能拡張ファイルの取得。
- [30行目] ここからDOS/Windows/explorer関連コマンド行の登録位置。