コピペ一覧

●コピペリスト一覧の記載(最新)

◎導入編...

---

◎基本編...

---

◎基本編/応用編...PSHメモ帳関連

[PSHメモ帳:TopPage起動bat] wPshMemo301.bat [Ver2.01]
◎[TopPage]編集で更新
@echo off &rem if not "%~0"=="%~dp0.\%~nx0" (start /min cmd /c,"%~dp0.\%~nx0" %* &exit) &rem ★DOS窓mini化
powershell -ExecutionPolicy RemoteSigned "$fln=(echo %0); .\sys\wndPshPrg201.ps1 $fln"
rem pause
exit;

<##Ver2.10--[TopPage]  @BakColor:#fff2e4   @FntSize:14  @WndSize:1080,780  @WndRtan:1
##
##●●[PSHめも帳]●●
##  [&][>][!]行をダブルクリック[WC]
##  1) [&]起動  [&&]窓無し起動  [&&&]継続起動  [;]行連結   [##★]次の行処理
##  2) [&FSet&]:txt/rtfファイルの表示/編集/保存。[&FSet]:別窓でtxt/rtfファイルを開く。
##  3) [&FS& コメント; ファイル名] [&FS コメント; ファイル名]: 説明文先行型で2)に同じ。
##  4) D&Dropで、ファイル表示。Ps1ファイル起動。フォルダ管理(readMe)。Bakファイル保存。
##  5) 複数窓表示、Web表示、[>][>>]DosCmd、MsgBox、検索窓、Font設定、dbg、dbcなど。
##---------------------------------------------------------------------------------

&FS   ★[27] wGuiPsh2フォルダ管理            ;$HOME\Desktop\wGuiPsh2 

&FS   ★[36] Web表示マネージャ               ;dat\wPshWebMng101.txt
&FS   ★[38] PSH文法マネージャ               ;dat\wPshDocRule101.txt
&FS   ★[38] Mail履歴マネージャ              ;dat\wPshMailLog101.txt

&FS&  ★[27] PSH登録の簡単な例               ;dat\wndPshTxt201.txt
&FS&  ★[27] PSH短文アプリ                   ;dat\wndPshTxtShort201.txt
&FS&  ★[31] 式表計算+α                    ;dat\wPshKeisan101.txt
&FS&  ★[32] 自動キー入力                    ;dat\wPshKeyAuto101.txt
&FS&  ★[37] QRマネージャ                    ;dat\wPshQRCode101.txt
&FS&  ★[33] グラフ(おもしろ+実用編)         ;grf\wPshGraf101.txt
&FS&  ★[34] グラフ(折れ線/曲線/散布/面など) ;grf\wPshGraf201.txt
&FS&  ★[35] グラフ(縦棒/横棒/複合/円/他)    ;grf\wPshGraf301.txt

##スーパWeb検索
&KKK  コピペ gui
&KK5  ファンヒータ ダイニチ
&KBN  8233 8848 6526 7003 6753   ##日経チャート

##---------------------------------------------------------------------------------
##★PSHファイル(.ps1)の[ドット+SPC]で起動 
&  . .\sys\tst_Butn_Mouse01.ps1 ##★[2.7]釦/マウス利用DBG:Dir相対指定

&  Dir  C:\                     ##★[1.1]Dir起動
&& mspaint                      ##★[1.1]窓無し起動
 
&&&  $global:aaa=10; dbg $aaa;           ##★Step1:継続:global変数に代入
&&&  $global:aaa+=3; MsgBox "$aaa です"; ##★Step2:MsgBox表示

##------------------------------------------------------------------------------------
![WC]日めくりカレンダ;  https://www.himekuricalendar.com/  ##[WC]
>  Dir c:\                       ##★Dir起動[>]Dos窓あり
>  Ver & Date /t                 ##★Verとdateの起動
>> calc                          ##★電卓[>>]Dos窓無し
>> ms-settings:                  ##★設定のDlg窓


[PSHメモ帳:本体アプリ]  sys\wndPshPrg201.ps1  [Ver2.053D]
◎List[Copy]釦→[ツール2]→[ps1アプリ更新]で更新[4.2項以降]、他は[4.2項]参照
##Ver2.053D wndPshPrg201.ps1 by ryu 2024/1006 #####################################
##STT: ●●「Pshめも帳」(Gui窓PSH処理統合アプリ) by ryu
##ACT: wndPshPrg201.ps1 [TopPageFile]  [[file/Dir]]

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;}; function dbt($cc){ $mMain.Text="[V2.053D]"+$cc;};##★DBG
function ssMsgYesNo($cc0,$cc1,$cc2){ if($cc2-eq $null){$cc2="YesNo"}; return [MessageBox]::Show($cc1,$cc0,$cc2); };##★YesNo
$global:szEditor="C:\winfree\Sakura\sakura.exe"; if(Test-Path $szEditor){;}else{ $global:szEditor="notepad.exe"; };
##★初期設定データ  ★DirTree/wRtfMemoの登録  ##★Apl ★TopPageFile
$szTool=$MyInvocation.MyCommand.Path; $szToolDir=Split-Path $szTool -Parent; $fln=$args[0]; if( ($fln-eq $null)-or($fln-eq "") ){ $fln="dmy"; };
$szDirTree="$szToolDir\wPshDirTree201.ps1"; $szRtfMemo="$szToolDir\wPshRtfMemo501.ps1";##★DirTree.ps1 ★wRtfMemo.ps1
$szBkColor="#e0ffc1"; $szFont="BIZ UDゴシック"; $global:szFntSize=13; $szWSize="1080,720"; $global:szFile=$global:szFlBk1="";
$global:szFntKind=@("BIZ UDゴシック","BIZ UDPゴシック","MS ゴシック","Meiryo UI","HGゴシックE","HGPゴシックE","HG創英角ゴシックUB","HG創英角ポップ体"); ##No1~8
function ssTopView($zfg){ if( Test-Path $fln ){;}else{return;}; $szMenu3.ForeColor=$szMenu6.ForeColor="Black"; $global:szFile="";
    if(($zfg -eq 0)-and($szTPage.length -ge 10) ){ $tBox.Text=$szTPage; }else{ $bb=(Cat $fln -Raw); $global:szTPage=$tBox.Text=$bb.substring( $bb.indexof("`n<"+"##" )+1); };
    ssViewColor; $tBox.SelectionStart=0; dbt(" 【TopPage】 "+$fln); cd (Split-Path $fln -Parent); }; ##★表示

##★メイン窓/編集窓の生成   ★窓寸法(WW,HH)  ★文字種類/寸法  ★背景色  ★DLG登録
$mMain =New-Object Form -Pro @{ Size="$szWSize"; }; $tBox =New-Object TextBox -Pro @{ Font="$szFont,13"; BackColor=$szBkColor; Dock="Fill";
    Multiline=$true; AcceptsTab=$true; AcceptsReturn=$true; AllowDrop=$true; ScrollBars=[ScrollBars]::Both; }; $mMain.Controls.Add($tBox);
    $mMain.Add_Closing({ if( ($tBox.Modified)-and ((ssMsgYesNo "【保存(Y/N)?】" "$szFile")-eq "Yes") ){ ssFileSave 0 $szFile ; return;}; 
        $tBox.Modified=$false; $_.Cancel=$True; $mMain.Visible=$false; });

$dReadBox =New-Object OpenFileDialog -Pro @{ Title="【読取】ファイル選択"; Filter='ファイル|*.txt;*.rtf;*.ps1|全て(*.*)|*.*'; InitialDirectory=(pwd);};
$dSaveBox =New-Object SaveFileDialog -Pro @{ Title="【保存】ファイル設定"; Filter='ファイル|*.txt;*.rtf;*.ps1|全て(*.*)|*.*'; InitialDirectory=(pwd);};
$dFderBox =New-Object FolderBrowserDialog -Pro @{ ShowNewFolderButton = $false; };

##★窓メニュ生成  ★メニュ生成関数  ★メニュ登録(ファイル/TopPage/編集等)  ★複数画面  ★DirTree対応  ★各編集機能
$dListMenu =New-Object MenuStrip -Pro @{ Font="$szFont,12"; };  $mMain.MainMenuStrip =$dListMenu; $mMain.Controls.Add($dListMenu);
function ssDMnMenu($zcc){ $zmm=New-Object ToolStripMenuItem; $zmm.Text=$zcc; $dListMenu.Items.AddRange($zmm); $global:szMnBas=$zmm; return $zmm;}
function ssDMnMSet($zcc){ $zmm=New-Object ToolStripMenuItem; $zmm.Text=$zcc; $szMnBas.DropDownItems.AddRange($zmm); $global:szMnBas2=$zmm; return $zmm;}
 $szMenu1=ssDMnMenu "ファイル"; (ssDMnMSet "[TopPage]反映").add_Click({ ssTopPageSav }); $aa=(ssDMnMSet "----");
    ($szMenu1A=ssDMnMSet "[前File戻り]").add_Click({ $zcm=$szFlBk1.split(";"); if( $zcm[1]-ne $null ){ cd $zcm[1]; }; ssFileSet $zcm[0]; });
    (ssDMnMSet "[File再読取]").add_Click({ ssFileSet $szFile });  (ssDMnMSet "[保存]"  ).add_Click({ ssFileSave 0 $szFile });
    (ssDMnMSet "File読取[窓]").add_Click({ if( $dReadBox.ShowDialog() -eq "OK" ){ ssFileSet($dReadBox.FileName) }; });
    (ssDMnMSet "File保存[窓]").add_Click({ ssFileSave 1 $szFile });   $aa=(ssDMnMSet "----"); (ssDMnMSet "[TopPage]再読取").add_Click({ ssTopView 1 });
    (ssDMnMSet "[TopPage]編集").add_Click({ Iex("$szEditor $fln") });  (ssDMnMSet "[<Psh編集>]" ).add_Click({ Iex("$szEditor $szTool") });
 $szMenu8=ssDMnMenu "フォルダ"; (ssDMnMSet "[複数窓の表示]" ).add_Click({ ssPshAct 1 "$szTool $fln" });
    (ssDMnMSet "[Winフォルダ窓表示]").add_Click({ if( $dFderBox.ShowDialog() -eq [DialogResult]::OK ){ ssFileSet $dFderBox.SelectedPath }; });
    if(Test-Path $szDirTree ){ (ssDMnMSet "[DirTree(root)]").add_Click({ . $szDirTree "root" });
        (ssDMnMSet "[DirTree(現在)]").add_Click({ . $szDirTree (Convert-Path .) }); (ssDMnMSet "[<Tree編集>]").add_Click({ Iex("$szEditor $szDirTree") }); };
(ssDMnMenu "[TopPage]").add_Click({ if($szFile -ne ""){ $global:szFlBk1=$szFile+";"+([String](pwd)); (ssTopView 0);}; });
(ssDMnMenu "[explorer]").add_Click({ explorer (pwd) }); 
($szMenu3=ssDMnMenu "[保存]").add_Click({ ssFileSave 0 $szFile });
 $szMenu4=ssDMnMenu "編集"; (ssDMnMSet "[元に戻す]").add_Click({$tBox.Undo() }); (ssDMnMSet "[切り取り]").add_Click({$tBox.Cut()});
    (ssDMnMSet "[コピー]").add_Click({$tBox.Copy()}); (ssDMnMSet "[貼付け]").add_Click({$tBox.Paste()}); (ssDMnMSet "[検索窓]").add_Click({ssSchBoxSet $tBox});
($szMenu6=ssDMnMenu "[Fileメモ帳]" ).add_Click({ if(($szFile -ne "") -and (Test-Path $szFile)){ notepad.exe $szFile }; });
($szMenu7=ssDMnMenu "[rdMeRet]"  ).add_Click({ ssFileSet $szFlBk0 });

##★右釦メニュ ★編集 ★再表示 ★各クリップ処理等 ★各ツール等
$tBox.ContextMenuStrip =$global:conMenu =New-object ContextMenuStrip -Pro @{ Font="$szFont,12"; }; 
function ssRbtMenu($zcha){ $aa=$conMenu.Items.Add(($ccc=New-Object ToolStripMenuItem)); $ccc.Text=$zcha; $global:zzSrp=$ccc; return $ccc; };
function ssRbtSMnu($zcc ){ $aa=$zzSrp.DropDownItems.Add( ($ccc =New-Object ToolStripMenuItem) ); $ccc.Text=$zcc; return $ccc;};
  (ssRbtMenu "[TopPage]").add_Click({ ssTopView 0 });  (ssRbtMenu "[元に戻す]").add_Click({$tBox.Undo()}); (ssRbtMenu "[切り取り]").add_Click({$tBox.Cut()});
  (ssRbtMenu "[コピー]").add_Click({$tBox.Copy()}); (ssRbtMenu "[貼付け]").add_Click({$tBox.Paste()}); (ssRbtMenu "[全選択]").add_Click({$tBox.SelectAll()});
  (ssRbtMenu "右端折返し切替").add_Click({ if( $tBox.WordWrap ){$tBox.WordWrap=$false;}else{$tBox.WordWrap=$true;}; });
  (ssRbtMenu "[Top移動]").add_Click({ $tBox.SelectionStart=0; $tBox.ScrollToCaret() });
$zzSrp0=ssRBtMenu "[ツール]";
  (ssRBtSMnu "yyyy/MM/dd取得").add_Click({ $tBox.SelectedText=Get-date -Format "yyyy/MM/dd(ddd)"; });
  (ssRBtSMnu "年月日時取得"  ).add_Click({ $tBox.SelectedText=Get-date -format "yyyy年MM月d日(ddd) HH:mm:ss"; });
  (ssRBtSMnu "Dir/File取得"  ).add_Click({ $tBox.SelectedText=((dir -name)-join "`r`n")+"`r`n" });
  (ssRBtSMnu "Dir/File取得:再帰").add_Click({ $tBox.SelectedText=((dir -name -Rec)-join "`r`n")+"`r`n" });
  (ssRBtSMnu "[@FntNo:]一覧" ).add_Click({ $ii=1; $zcc="@FontNo:N`n`n"; foreach( $cc in $szFntKind ){ $zcc+=""+($ii++)+": $cc`n"; }; dbg $zcc; });

##★マウス[WC]/[Ctl+n]操作 ★[>][>>]DOS処理 ★[!][http]Web ★[Dir/File] ★[&]行連結 ★[&&&] ★[&FSet&] ★[&] ★[&&] ★機能追加File 
$tBox.Add_DoubleClick({ssWCAct 0 }); $tBox.Add_KeyDown({ if($_.Control){;}else{return;}; switch($_.KeyCode){ "n" { ssWCAct 1;} };  });
function ssWCAct($zcmd){ $ln=((($tBox.Text).substring(0,$tBox.SelectionStart)).split("`n")).count-1; $zcc=$tBox.Lines[$ln];
  if( $zcc.startsWith("##★") ){ $ln++; $zcc=$tBox.Lines[$ln]; }; $zcc=(($zcc-split"##")[0]).trim()+" "; if( $zcc.length -le 2){ return; };
  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";return; }; 
  if( $zcc.startsWith("&") ){;}else{ if( Test-Path $zcc -PathType Container ){ explorer $zcc; return; };
      if( ($zcc.startsWith("http"))-or ($zcc.startsWith("!") -and $zcc.contains("http")) ){ 
          if($zcc.startsWith("!")){ $zcc=($zcc.split(";"))[1]; }; $zcc=($zcc.replace("`'","")).trim(); Iex("Start `'$zcc`'"); return; };
      if( Test-Path $zcc ){ if($zcc.endswith('.rtf') ){ ssRtfMemo $zcc }else{ Start -NoN Cmd -Arg "/c `"$zcc`""; }; return; }; return; };
  for( $ii=1; $ii -lt 300; $ii++ ){ $cc=$tBox.Lines[$ln+$ii]; if($cc -eq $null){ break; };
      if( $cc.startsWith(";") ){ $zcc+="`n"+($cc.substring(1)).trim(); }else{ if( $cc.startsWith("#") ){ continue;}; break; }; };
  if( $zcc.startsWith("&&& ")){ $zcc=$zcc.substring(3); $tBox.SelectionStart+=4; Iex($zcc); return; }; 
  if( $zcc.startsWith("&FSet&")){ $zcc=$zcc.substring(6).trim(); Iex("ssFileSet `"$zcc`""); return; };
  if( $zcc.startsWith("&FSet ")){ $zcc=$zcc.substring(6).trim(); $zcc=Iex("`"$zcc`""); if( $zcc.endswith('.rtf') ){ ssRtfMemo $zcc; return;};##▲
      if( $zcc.endswith('.txt')-or $zcc.endswith('.ps1')-or $zcc.endswith('.bat')-or (Test-Path $zcc) ){ ssPshAct 1 "$szTool $fln $zcc" ;return; };##▲
  };
  if( $zcc.startsWith("& ")  ){ ssPshAct 0 ($zcc.substring(1).trim()); return; };
  if( $zcc.startsWith("&& ") ){ ssPshAct 1 ($zcc.substring(2).trim()); return; }; (ssWClkCmd $ln $zcc); ##★ssWC追加対応
};
##★PSH短文起動(0:窓あり/1:無し)  ★ssWC追加対応  ★add機能追加  ★Rtfメモ帳対応  ★ドラッグ&ドロップ登録
function ssPshAct($zcmd,$zcc){ $zcc=$zcc.replace('"','\"'); 
    if($zcmd-eq 0){ Start powershell -Arg "-noe $zcc";}else{ Start -NoN powershell -Arg "$zcc"; }; };
##$zdir=[String](pwd)
##    if($zcmd-eq 0){ Start powershell -Wor $zdir -Arg "-noe $zcc";}else{ Start -Wor $zdir -NoN powershell -Arg "$zcc"; }; };
function global:ssWClkCmd($ln,$zcc){;}; $fladd=$szTool.replace(".ps1","_add.ps1"); if( Test-Path $fladd ){ . $fladd; }; 
function global:ssRtfMemo($zfl){ if(Test-Path $szRtfMemo){ Start -NoN powershell -Arg "-noe $szRtfMemo `'$zfl`'"; }; };
$tBox.Add_DragEnter({$_.Effect ="All";}); $tBox.Add_DragDrop({ $zcc=@(([DataObject]$_.Data).GetData("FileDrop")); if(Test-Path $zcc ){;}else{ return; };
  if($zcc.endsWith(".ps1") ){ Start powershell -Arg "-noe $zcc"; }else{ ssFileSet $zcc; }; });

##★ファイル取得&表示  ★新規File  ★Dir_!ReadMe.txt対応  ★Rtf_FIle対応  ★cd Dir移動  
function ssFileSet($zfl){ if(($zfl -eq "")-or($zfl -eq $null)){return;}; if(Test-Path $zfl -PathType Container){ $zfl="$zfl\!readMe.txt"; }; 
  if( $zfl.endswith('.txt')-or $zfl.endswith('.ps1')-or $zfl.endswith('.bat')){;}
  else{ if( $zfl.endswith('.rtf') ){ ssRtfMemo $zfl ; return; }; dbg "[ERROR]`n>>> No File.txt/rtf/ps1`n$zfl"; return; }; 
  if($szFile -eq ""){ $global:szTPage=$tBox.Text; }else{ if( $szFile -ne $zfl ){$global:szFlBk1=$szFile;}; }; ##TopPage退避(szTPage)
   $szMenu3.ForeColor=$szMenu6.ForeColor="Blue";
  if(Test-Path $zfl){ $tBox.Text=Cat $zfl -Raw; $zcc0="▲File読取▲$zfl"; } 
  else{ $tBox.Text="#![管理] @BakColor:$szBkColor @FntSize:13 @WndSize:$szWSize`r`n"; $zcc0="【新規】$zfl"; };

  if( $zfl.Contains("!readMe.txt") ){ $global:szFlBk1+=";"+([String](pwd));
      cd (Split-Path $zfl -Parent); $zfl=([String](pwd))+"\!readMe.txt"; $global:szFlBk0=$zfl; $szMenu7.ForeColor="Blue"; 
      if(Test-Path $zfl){;}else{ $tBox.Text +=(((pwd)-join "`r`n")+"`r`n`r`n`r`n"+((dir -name)-join "`r`n")+"`r`n"); }; };
  $global:szFile=$zfl; $tBox.SelectionStart=0; $zcc=[String](pwd); ssViewColor; dbt("[$zcc] $zcc0");
};
##★File保存(bak保存選択) ##★TopPage保存
function ssFileSave($zcmd,$zfl){ if( $zfl -eq ""){ ssTopPageSav; return; };
  if( $zcmd -eq 1 ){ $dSaveBox.InitialDirectory=(Split-Path $zfl -Parent); $dSaveBox.FileName=(Split-Path $zfl -Leaf);
     if( $dSaveBox.ShowDialog() -ne "OK" ){ return; }; $zfl=$dSaveBox.FileName; if($zfl -eq ""){ return;}; }
  else{ if( ($zfl -eq "")-or(($cc=ssMsgYesNo "[上書き保存 (BackUP:Y/N)] or [キャンセル]" $zfl "YesNoCancel" ) -eq "Cancel" ) ){ return; }; };
  if( ($cc -eq "Yes")-and (Test-Path $zfl) ){ if(Test-Path "bak" -PathType Container){;}else{ New-Item "bak" -ItemType Directory };
      $zfl2="bak_"+(Split-Path $zfl -Leaf); Copy-Item $zfl "bak\$zfl2" -Force; };
  $global:szFile=$zfl; SC $zfl ($tBox.Text); $tBox.Modified=$false; $zcc=[String](pwd); ssViewColor; dbt("[$zcc] ▼File保存▼$zfl");
};
function ssTopPageSav(){ if( ($szFile -eq "")-and ((ssMsgYesNo "[TopPage]をFileへ反映保存(Y/N)" $fln) -eq "Yes") ){;}else{ return; };
  $zcc=Cat $fln -Raw; SC ($fln+".bak") $zcc -Force; SC $fln ($zcc.substring(0,$zcc.indexof('<#'+'#'))+$tBox.Text) -Force; ssViewColor; $tBox.Modified=$false; };

##★背景色 ★FNT寸法 ★Wnd寸法 ★Wnd右端
function ssViewColor(){ $zcc=$tBox.Lines[0]; if($zcc-eq $null){ return;}; $zcm=$zcc.replace(" ","").split("@?:");
  for( $ii=0; $ii -lt $zcm.count; $ii++ ){ $cc=$zcm[$ii]; $cc1=$zcm[$ii+1]; if($cc.StartsWith("BakColor") ){ $tBox.BackColor=$cc1; };
      if($cc.StartsWith("FntSize") ){ $global:szFntSize=$cc1; $tBox.Font="$szFont,$cc1"; }; if($cc.StartsWith("WndSize") ){ $mMain.Size=$cc1; };
      if($cc.StartsWith("FntNo") ){ $tBox.Font=(""+$szFntKind[$cc1-1]+",$szFntSize"); };
      if($cc.StartsWith("WndRtan")){ $tBox.SelectionStart=0; if($cc1-eq 1){ $tBox.WordWrap=$false }else{$tBox.WordWrap=$true}; };  };
};
##★文字検索DLG窓
$global:szfindPos=0; $global:szShBox=$tBox;
$global:szSchForm=New-Object Form -Pro @{ Text="【検索Box】"; Size="520,108"; MaximizeBox =$False; MinimizeBox=$false; AutoSizeMode="GrowAndShrink"; 
    Topmost=$True; StartPosition="CenterScreen"; }; $szSchForm.Add_Closing({ $_.Cancel =$True; $szSchForm.Visible =$false; });
##  ★入力BOX   ★釦0  ★釦1
$global:szSchBox1=New-Object TextBox -Pro @{ Font="$szFont,12"; Location="10,2" ; Size="400,16"; }; 
function ssSetBtn($pm0,$pm1,$pm2){ $zob=New-Object Button -Pro @{ Text=$pm0; Location=$pm1; Size=$pm2; Font="$szFont,12"; }; return $zob; };
    ( $szSchBtn0=ssSetBtn "【Top】"  "420,2"   "80,30" ).Add_Click({ $global:szSetChaText=$szSchBox1.Text; $aa=ssSchFind 0 $szShBox }); 
    ( $szSchBtn1=ssSetBtn "【検索】" "420,34"  "80,30" ).Add_Click({ $global:szSetChaText=$szSchBox1.Text; $aa=ssSchFind 1 $szShBox }); 
$szSchForm.Controls.AddRange(@($szSchBox1, $szSchBtn0, $szSchBtn1)); $szSchForm.Add_Click({ $tBox.Focus() });
##  ★検索go(zwBox null時 tBox)  ##0:Top  ##1:継続
function ssSchBoxSet($zwBox){ $szSchBox1.Text=$szSetChaText; $global:szfindPos=$zwBox.SelectionStart; $global:szShBox=$zwBox; $szSchForm.Show(); }
function ssSchFind($zcmd,$zwBox,$zcc){ if($zcc -eq $null){ $zcc=$szSchBox1.Text; }; if($zcmd -eq 0){ $global:szfindPos=0; };
    if( $zwBox -eq $null ){ $zwBox=$tBox; }; $zPos =($zwBox.Text).indexof($zcc,$szfindPos); if($zPos -ge 0 ){;}else{ $zwBox.Focus(); return 1; };
    $zwBox.Select($zPos, $zcc.length); $zwBox.ScrollToCaret(); $zwBox.Focus(); $global:szfindPos=$zPos+1; };

##★MSG表示Call関数   ★DLG窓の生成  ★MSG窓の文字BOX
function MsgBox($cc,$ww,$ms){ if($ww-eq $null){$ww="720,400";}; if($ms-eq $null){$ms="【MSG】";}; $fmMBox=New-Object Form -Pro @{ Size=$ww;Text=$ms; }; 
    $global:mBox=New-Object TextBox -Pro @{ Font="$szFont,14"; Dock="Fill"; Multiline=$True; AcceptsReturn=$True; ScrollBars=[ScrollBars]::Vertical;};
    $fmMBox.Controls.Add($mBox); $mBox.Text=($cc.replace("`n","`r`n")); $mBox.SelectionStart=0; $fmMBox.Show(); };
##★基本窓表示[TopPage]
$zcc=$args[1]; if( $zcc -eq $null ){ ssTopView 1 }else{ ssFileSet $zcc }; $mMain.ShowDialog();

[機能追加add]  sys\wndPshPrg201_add.ps1  [Ver1.332]
◎List[Copy]釦→[ツール2]→[ps1アプリ更新]で更新[4.2項以降]、他は[4.2項]参照
##Ver1.332 wndPshPrg201_add.ps1 by ryu 2024/1130 ###############################
##●●[PSHメモ帳]拡張機能ファイル(応用編[42])

##★[ファイル]釦:szMenu1:メニューに追加
$global:szMnBas=$szMenu1; (ssDMnMSet "[<Add編集>]" ).add_Click({ & $szEditor $fladd  });  $aa=(ssDMnMSet "----");
(ssDMnMSet "電源OFF"   ).Add_Click({ Stop-Computer -Force });
(ssDMnMSet "スリープ"  ).Add_Click({ [Application]::SetSuspendState(0, $false, $false) });

##★[フォルダ]釦:szMenu8:メニューに追加
$global:szMnBas=$szMenu8; $aa=(ssDMnMSet "----"  );
(ssDMnMSet "[現在フォルダ表示]").add_Click({ ssViewDir });
  $global:szMnBas=$szMnBas2;(ssDMnMSet "[explorerで]").add_Click({ explorer (pwd) }); $global:szMnBas=$szMenu8;
(ssDMnMSet "[デスクトップDir]").add_Click({ ssViewDir 0 $home\Desktop });
  $global:szMnBas=$szMnBas2;(ssDMnMSet "[explorerで]").add_Click({ explorer $home\Desktop }); $global:szMnBas=$szMenu8;
(ssDMnMSet "[ダウンロードDir]").add_Click({ explorer $home\Downloads });
(ssDMnMSet "[BakUPフォルダ]" ).add_Click({ $zcc=(pwd); explorer "$zcc\bak" });
(ssDMnMSet "[Windows設定]").add_Click({ explorer ms-settings: });           
(ssDMnMSet "[アプリ一覧Dir]").add_Click({ explorer shell:AppsFolder });       
(ssDMnMSet "[ゴミ箱]"     ).add_Click({ explorer shell:RecycleBinFolder }); 

##★[編集]釦:szMenu4
$global:szMnBas=$szMenu4; (ssDMnMSet "Top移動[TagRet]").add_Click({ $tBox.SelectionStart=0; $tBox.ScrollToCaret() });
(ssDMnMSet "Bottom移動").add_Click({ $tBox.SelectionStart=$tBox.Text.Length; $tBox.ScrollToCaret() });
(ssDMnMSet "右端折返し切替" ).add_Click({ if( $tBox.WordWrap ){$tBox.WordWrap=$false;}else{$tBox.WordWrap=$true;}; }); $aa=(ssDMnMSet "----");
(ssDMnMSet "TList[##★]取得").add_Click({ ssTagListGet "720,600" });
(ssDMnMSet "TList[]前後表示").add_Click({ $fmTgBox.TopMost=$false });

##★[ツール1]釦:Menu9
$global:szMenu9=(ssDMnMenu "ツール1" );
(ssDMnMSet "[現在フォルダ表示]").add_Click({ ssViewDir });      
(ssDMnMSet "[現在フォルダ再帰表示]").add_Click({ ssViewDir 1 });
(ssDMnMSet "[Dir容量表示]"  ).add_Click({ ssToolAct !DirV 1 });
(ssDMnMSet "[DirのTree表示]").add_Click({ ssToolAct !DirV 0 });  $aa=(ssDMnMSet "----");
(ssDMnMSet "[大きいカレンダ]"  ).add_Click({ ssToolAct !BCal });
(ssDMnMSet "[マクロ一覧]"   ).add_Click({ MsgBox ($szLstMacro.replace(","," ")) "960,520"; $mBox.BackColor="#E8FFD0";});
(ssDMnMSet "[PSH高速化(ngen)]").add_Click({ ssToolAct !Ngen });
(ssDMnMSet "[UTF8->ANSI変換]" ).add_Click({ ssToolAct !ANSI });  $aa=(ssDMnMSet "----");
(ssDMnMSet "[アプリ変数表示]" ).add_Click({ ssToolAct !AplD });
(ssDMnMSet "[画面クリア]"   ).add_Click({ ssToolAct !DClr 0 });
(ssDMnMSet "[画面クリア->クリップ取得]" ).add_Click({ ssToolAct !DClr 1 });
(ssDMnMSet "[HTML特殊文字変換]").add_Click({ ssToolAct !HtmC });

##★[ツール2]釦:Menu10
$global:szMenu10=(ssDMnMenu "ツール2" );
(ssDMnMSet "[サイズ色設定BOX]").add_Click({ ssSizeColor });$aa=(ssDMnMSet "----");
(ssDMnMSet "[電卓]").add_Click({ calc.exe });
(ssDMnMSet "[画面コピー]").add_Click({ SnippingTool.exe });
(ssDMnMSet "[Win設定]"   ).add_Click({ start ms-settings: });
(ssDMnMSet "[コントロールパネル]").add_Click({ control.exe });   $aa=(ssDMnMSet "----");
(ssDMnMSet "[PSH窓]").add_Click({ Start powershell });
(ssDMnMSet "[PSH管理者]").add_Click({ Start -Verb runas powershell });
(ssDMnMSet "[ps1アプリ更新]" ).add_Click({ ssToolAct !VrUp });

##★[ツール3]釦:Menu11
$global:szMenu11=(ssDMnMenu "ツール3" ); ##(ssDMnMSet "----").add_Click({;});
##★[ツール4]釦:Menu12
($global:szMenu12=ssDMnMenu "ツール4" ).add_Click({ if( Test-Path $fladd3 ){ . $fladd3; }; });

##★[Help]釦:Menu19
$global:szMenu19=(ssDMnMenu "Help" );
(ssDMnMSet "[背景色サイト]" ).add_Click({ start "https://ryupapa008.blogspot.com/p/blog-page_6.html" });
(ssDMnMSet "[HELP操作説明]" ).add_Click({ ssHelpView 0 0 });
(ssDMnMSet "[日めくりカレンダ]").add_Click({ start "https://www.himekuricalendar.com/" }); $aa=(ssDMnMSet "----");
(ssDMnMSet "[Web:Psh入門]").add_Click({ start "https://step-learn.com/article/powershell/index.html" });
(ssDMnMSet "[Web:PSHサイト]" ).add_Click({ start "https://forsenergy.com/ja-jp/windowspowershellhelp/html/7908faf0-0e08-443d-8060-aac911e5a7e0.htm" });
(ssDMnMSet "[Psh短縮Cmd]" ).add_Click({ start "https://mseeeen.msen.jp/research-powershell-command-alias" }); $aa=(ssDMnMSet "----");
##(ssDMnMSet "[<Help編集>]" ).add_Click({ if( Test-Path $szHelpDoc ){ $zcc=$szHelpDoc }else{ $zcc=$fladd }; & $szEditor $zcc });
##★ユーザ拡張(usr)登録 ★ツール拡張(etc)登録
function global:ssWClkUsrCmd($ln,$zcc){ return 0;};
$global:fladd2=$szTool.replace(".ps1","_usr.ps1"); if( Test-Path $fladd2 ){ (ssDMnMSet "[<usr編集>]" ).add_Click({ & $szEditor $fladd2 }); };
$global:fladd3=$szTool.replace(".ps1","_etc.ps1"); if( Test-Path $fladd3 ){ (ssDMnMSet "[<etc編集>]" ).add_Click({ & $szEditor $fladd3 }); };

##★マウス右釦メニュに追加
(ssRbtMenu "[検索窓]").add_Click({ssSchBoxSet $tBox});
(ssRbtMenu "クリップ1行取得").add_Click({ $ln=((($tBox.Text).substring(0,$tBox.SelectionStart)).split("`n")).count-1;
    $zcc=($tBox.Lines[$ln]).trim();  Set-Clipboard $zcc; });

##★サイズ/背景色/フォント設定BOX($szFntKind+=@(XXXX))
$global:szLstSize="[サイズ:9], [サイズ:10], [サイズ:11], [サイズ:12], [サイズ:14], [サイズ:16], [サイズ:18],[サイズ:20],";
$global:szLstColr="[薄とまと:#FFE0DF], [薄赤紫色:#FFE5FE], [薄水色:#E5F2FE], [薄緑色:#E5FFE4],[薄黄色:#FFFFE4],[薄みかん:#FFEFDF],";
$global:szFont00=$szFont; $global:szfSize00=$szFntSize;
##★ListBox処理
function ssSizeColor(){ $global:fmSizeBox =New-Object Form -Pro @{ Size ="260,520"; Text="サイズ/色"};
  $global:scBox=New-Object ListBox -Pro @{ Dock="Fill"; Font='"BIZ UDゴシック",14'; BackColor="#E5F2FE";}; $fmSizeBox.Controls.Add($scBox); 
  foreach($cc in ($szLstSize+$szLstColr+$szLstFont).split(",")){ $cc=$cc.trim(); if( $cc.startsWith("[") ){ $aa=$scBox.Items.Add( $cc ); }; };
  foreach($cc in $szFntKind ){ $aa=$scBox.Items.Add( "[font:!$cc]" ); }; $fmSizeBox.Show();##★表示
  $scBox.Add_Click({ $zcc=(($scBox.SelectedItem).split(":]"))[1].trim();
      if( $zcc.startsWith("#") ){ $tBox.BackColor=$zcc; return; };
      if( $zcc.startsWith("!") ){ $global:szFont00=$zcc.substring(1); }else{ $global:szfSize00=$zcc; }; $tBox.Font="$szFont00,$szfSize00"; });
};

##★[&CCCC][WC]起動処理の追加(マクロ登録)
$global:szLstMacro="【マクロ一覧V1.0】
#
#--&マクロ,-Web名称,------検索Url,---------------------------------------#
   &KKK, MSN検索,      https://www.bing.com/search?q=
   &KKG, Google検索,   https://www.google.co.jp/search?q=
   &KKY, Yahoo検索,    https://search.yahoo.co.jp/search?p=
   &KKA, Amazon,       https://www.amazon.co.jp/s?k=
   &KKR, R楽天市場,    https://search.rakuten.co.jp/search/mall/
   &KK5, 一括検索,     KKK/KKG/KKY/KKA/KKR
★
   &KBD, 株Doraチャート,  https://www.kabudragon.com/s?t=
   &KBC, Cost株価Yahoo,   !YahooNow
   &KBY, Yahooチャート,   !YahooCha
   &KBT, 株Tan情報,       !KtanCha
   &KBN, Nikkei3分5日,  !NikeCha
★
   &KEI, keisan計算[31]
   &KEY, 自動キー操作[32]
   &FS,  説明文  ;file名  ##マルチ窓起動(&FSet)
   &FS&, 説明文  ;file名  ##入替え(&FSet&)
   &EXE, 説明文  ;exefile名(XXXX.exe)  ##説明文先行exe
";
##
function global:ssWClkCmd($ln,$zcc0){ $zcmd=$zcc0.split(" ")[0]; $zcc1=($zcc0.substring(5)).trim(); ##dbc "$ln  $zcc0";
   ##★キー入力  ★計算  ★HTML  ★CSS
   if( ($zcmd-eq "&KEY")-or ($zcmd-eq "&KEI")-or ($zcmd-eq "&HTML")-or ($zcmd-eq "&CSS") ){
      for( $ii=1; $ii -lt 300; $ii++ ){ $cc=$tBox.Lines[$ln+$ii]; if(($cc -eq $null)-or($cc.length -le 2 )){break;};
          if($cc.startsWith("#")){continue;}; $zcc1+="`n"+($cc.trim()) };   ## dbg $zcc1
   };
   switch($zcmd){
   "&KEI"{ ssKeisan $zcc1  ; return;} ##▲▲V1
   "&KEY"{ ssKeyAuto $zcc1 ; return;}
   "&FS&"{ $zcc=($zcc1.split(";"))[1].trim(); Iex("ssFileSet `"$zcc`""); return; };
   "&FS" { $zcc=($zcc1.split(";"))[1].trim(); $zcc=Iex("`"$zcc`""); if( $zcc.endswith('.rtf') ){ ssRtfMemo $zcc; return; }; ##▲
           if( $zcc.endswith('.txt')-or $zcc.endswith('.ps1')-or $zcc.endswith('.bat')-or(Test-Path $zcc) ){ ssPshAct 1 "$szTool $fln $zcc" ; return;}; }
   "&EXE"{ $zcc=($zcc1.split(";"))[1].trim(); Start -NoN Cmd -Arg "/c `"$zcc`""; return; } ##▲
   };
   if( (ssWClkUsrCmd $ln $zcc0) -eq 0 ){ ssWebSrh $zcmd $zcc1; }; ##★usrマクロ⇒##★Web検索
};
##★Web検索List&スーパ検索処理
##
function global:ssWebSrh($zcmd,$zcc1){ $zcm=$szLstMacro.split(",`n");
  for($ii=0; $ii -lt $zcm.length; $ii++ ){ if(($zcm[$ii].trim()) -ne $zcmd){ continue; }; break; };
  $zcc=(($zcm[$ii+2]).trim()); if($zcc.startsWith("http")){ $zcc+=$zcc1; Iex( "Start `'$zcc`'" ); Start-Sleep -m 500; return; }
  if( $zcmd -eq "&KK5" ){ foreach($cc in $zcc.split("/")){ if($cc.length -eq 3){ ssWebSrh "&$cc" $zcc1; }; }; };
  if( $zcmd.substring(0,3) -eq "&KB" ){ ssKabView $zcc $zcc1; };
};

##★[31]式表計算の処理【 ssKeisan zpam 】
##
function global:ssKeisan($zcmd ){ $zcmd=$zcmd; $dd0=$zcmd; $zcc0="`r`n"; $ss=0;
   foreach($cc in ($dd0-replace("[=]","")).split(";`n") ){     ##★式分割
      if($cc.startsWith("_") ){ $zcc0+="$cc`r`n"; continue;};  ##★!コメント行
      $zcc0+="    "; if($cc.Contains("_") ){ $cc2=$cc.split("_"); $zcc0+=$cc2[0]+"_"; $cc=$cc2[1]; };
      if($cc.length -ge 3  ){ $dd=Iex($cc); $ss+=$dd; $zcc0+="$cc = $dd`r`n"; }else{ $zcc0+="$cc`r`n";};
   }; $zcc0+="合計= $ss"; (MsgBox $zcc0);
};
##★[32]キー操作自動化の処理【ssKeyAuto zpam】
##
function global:ssKeyAuto($zcc0){ 
   if((ssMsgYesNo "注" "[英]入力モードを確認し`nキー入力BOXをクリアし、[Y]釦押下し`n素早く入力BOXをクリック")-ne "Yes" ){ return;};
   Start-Sleep -m 2500; $zcc0=$zcc0.replace("{T}","{TAB}").replace("{D}","{DELETE}").replace("{E}","{ENTER}");
   foreach( $cc in $zcc0.split(";`n") ){ if($cc.length -lt 3){ continue; }; $zcc=$cc.trim();
      if( $zcc.startsWith("@Wait") ){ $zdd=[int]($zcc.substring(6)); dbc("[Wait(s)] $zdd"); Start-Sleep -m ($zdd*1000); continue; };
      if( $zcc.startsWith("@Stop") ){ $zcc1="送信継続は[Y]押下し素早く入力BOXをクリック`n停止は[N]をクリック";
           if( (ssMsgYesNo "停止中" $zcc1)-ne "Yes" ){ return;}; Start-Sleep -m (2*1000); continue;  };
      [SendKeys]::SendWait("$zcc");
   };
};
##★[33][34][35]googleグラフの処理 【ssGraf (zType[,No]) zOption zData zColum zPrg zBody】
##  No指定のときClipにHTML-List設定、未指定時はClip未使用
function global:ssGraf($zTp,$zOption,$zData,$zColum,$zAddProg,$zAddBody){ $szfile="$home\Desktop\gChart01.html";
    $zcm=$zTp.split(","); $zType=$zcm[0].trim(); if( $zcm[1]-eq $null){ $zNum=""; }else{ $zNum=$zcm[1].trim(); };
    $zpkg='corechart';
    foreach($cc in 'AnnotationChart','TreeMap','Timeline','Table','VegaChart','GeoChart','Gauge','Sankey','Calendar','WordTree' ){ 
        if($cc -eq $zType){ $zpkg=$cc; break; }; };
    $zcc0='<html>
<head><script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
<script type="text/javascript"> google.charts.load("current", {packages:["'+$zpkg+'"]}); 
    google.charts.setOnLoadCallback(draw@@chart); var @@chart; var @@options; var @@data; 
function draw@@chart(){ @@chart = new google.visualization.'+$zType+'(document.getElementById("@@chart_val"));
    @@options='+$zOption+'; ';
    if( $zData.startsWith("[") ){ $zcc0+='@@data =new google.visualization.DataView( google.visualization.arrayToDataTable( '+$zData+' ) );' }
    else{ $zcc0+='@@data =new google.visualization.DataTable(); '+$zData+'; ' };
    $zcc0+=$zColum+';@@chart.draw(@@data, @@options); };'
    $zcc0+=$zAddProg+';</script></head>
<body><div id="@@chart_val" ></div>'+$zAddBody+'</body></html>' ;
    ##★
    $zcc0=$zcc0.replace('@@chart',"chart$zNum").replace('@@options',"options$zNum").replace('@@data',"data$zNum");
    SC $szfile $zcc0; & $szfile;  ##★Web.html起動
    if( $zNum-ne ""){ Set-Clipboard ($zcc0.replace("<html>","").replace("</html>","").replace("<body>","").replace("</body>","")); }; ##▲V1
};
##★[36]株表示の処理 【 ssKaView zKind zKabNo zUrl】
##
function global:ssKabView($zzcmd,$zzcc,$zzurl){
   if($zzurl.length -gt 10){ $zUrl =$zzurl; if( $zzcmd -eq "!KabMany"){ Start ($zzurl.replace("@@@@",$zzcc )); return;}; }
   else{ switch($zzcmd){
     !KdoraCha{ Start ("https://www.kabudragon.com/s?t="+$zzcc ); return; }
     !YahooNow{ Start ("https://finance.yahoo.co.jp/search/?query=$zzcc" ); return; }
     !YahooCha{ $zUrl="https://finance.yahoo.co.jp/quote/@@@@.T/chart?";
          $zUrl+="styl=lne&frm=mntly&scl=stndrd&trm=1w&evnts=&ovrIndctr=sma%2Cmma%2Clma&addIndctr=slwStchstc"; break; }
     !KtanCha { $zUrl="https://s.kabutan.jp/stocks/@@@@/"; break; }
     !NikeiCha{ $zUrl="https://www.nikkei.com/smartchart/?code=@@@@&timeframe=3d&interval=3Minute&upperIndicators=bollinger"
                $zUrl+="%2Csma&lowerIndicators=slowstochastics&eventsShow=0"; break;}
   }; };
   foreach( $cc in $zzcc.split("+ ") ){ if( $cc.length -ge 4 ){ Start ($zUrl.replace("@@@@",$cc)); Sleep -m 1000; }; }; ##▲SPC追加
};
##★[36]【STag [文字] pm】移動 ## [WebTable] 移行で検索、、、
##
$global:szsTagIndx="[WebTable]";  ##★sTagの検索開始文字[WebTable]
function global:sTag($zcc,$zpm){ $szSchBox1.Text=($zcc.split(" "))[0]; $global:szfindPos=($tBox.Text).indexof($szsTagIndx);
   if( $zpm -eq 0){ $tBox.WordWrap=$false }; $tBox.SelectionStart=$tBox.Text.Length; $tBox.ScrollToCaret(); ssSchFind(1); }; 

##★[37][右釦]へQR処理組込み(szQRSaveMode=1で[QRcd]へQRcode保存)
##
$global:szCMn10=ssRbtMenu "[!name;QRcode]生成"; $global:szQrDir="QRcd";##開始時QRDir
$szCMn10.add_Click({ $ln=((($tBox.Text).substring(0,$tBox.SelectionStart)).split("`n")).count-1;
   $zcm=($tBox.Lines[$ln].replace("`'","")).split(";"); $zFl=$zcm[0].trim(); $zQR=$zcm[1].trim();
   if( $zFl.startsWith("!") -and ($zQR.length -ge 5) ){;}else{return;}; 
   if( $szQRSaveMode -eq 1 ){ $zFl="$szQrDir\$zFl.png";}else{ $zFl="$home\Desktop\QRcode.png";};
   MsgBox "$zFl`n$zQR"; New-QRCodeText -Text $zQR -Width 10 -Show -Out $zFl;
}); 

##★キー入力BOX窓(VB)
##  cmd:処理No  chr0:入力コメント  chr1:初期値
function global:ssVBKeyInp( $zcmd, $zchr0, $zchr1){ Add-Type -Assembly Microsoft.VisualBasic; 
    $zcc=[Microsoft.VisualBasic.Interaction]::InputBox($zchr0,$zcmd,$zchr1); return $zcc;
};
##★キー入力BOX窓:fmKeyBox(KeyBox)  ##キー入力[return]で起動
##  cmd:処理No  chr0:入力コメント  chr1:初期値
function global:ssDlgKeyInp( $zcmd, $zchr0, $zchr1){ $global:fmKeyBox=New-Object Form -Pro @{ Size="600,100"; StartPosition ="manual"; TopMost=$true; };
    $global:KeyBox =New-Object TextBox -Pro @{ Location ="5,5"; Size ="575,50"; Font ="Meiryo UI,12";}; $fmKeyBox.Controls.Add( $KeyBox );
    $fmKeyBox.Location=New-Object Drawing.Point( ([Cursor]::Position.X -300),([Cursor]::Position.Y -20) ); $fmKeyBox.Show();
    $global:szKeyMode =$zcmd; $fmKeyBox.text =$zchr0; $KeyBox.text =$zchr1;
    ##キー入力
    $KeyBox.Add_KeyPress({ if( $_.KeyChar -ne "`r" ){ return;}; $_.Handled =$true; $fmKeyBox.Visible =$false;
        $zmd=$szKeyMode; $zcc=$KeyBox.Text; if( $zcc -ne ""){ ssKeyCmp1 $zmd $zcc; ssKeyCmp2 $zmd $zcc; ssKeyCmp3 $zmd $zcc;};
    });
}; function global:ssKeyCmp1($zmd,$zcc){}; function global:ssKeyCmp2($zmd,$zcc){}; function global:ssKeyCmp3($zmd,$zcc){};

##★[38]TagListBoxから[WC]で移動  [##★[XXX]]の行へ移動
##
$global:szTagListCha="##★"; ##★TagList作成文字
function global:ssTagListGet($zpam1){ $zDat=($tBox.Text).replace("`r",""); $zcc0="";
    foreach($cc in $zDat.split("`n") ){ if( $cc.startsWith($szTagListCha) ){;}else{ continue;}; $zcc0+=$cc+"`n"; };
    $ww=$zpam1; $global:fmTgBox=New-Object Form -Pro @{ Size=$ww; Text="【移動Tag-List】" ; TopMost=$True; }; 
    $global:tgBox=New-Object TextBox -Pro @{ Font="$szFont,14"; Dock="Fill"; Multiline=$True; AcceptsReturn=$True; ScrollBars=[ScrollBars]::Vertical;};
    $fmTgBox.Controls.Add($tgBox); $tgBox.Text=($zcc0.replace("`n","`r`n")); $tgBox.SelectionStart=0; $fmTgBox.Show(); $tgBox.WordWrap=$false; 
    ##★[WC]処理
    $tgBox.Add_DoubleClick({ $ln=((($tgBox.Text).substring(0,$tgBox.SelectionStart)).split("`n")).count-1; $zcc=($tgBox.Lines[$ln]).trim();
        if($zcc.length -le 2){return; }; $szSchBox1.Text=$zcc; $tBox.SelectionStart=$tBox.Text.Length; $tBox.ScrollToCaret(); ssSchFind(0);##★PSH窓TXT
    });
    $tgBox.ContextMenuStrip =$global:conMenu =New-object ContextMenuStrip -Pro @{ Font="BIZ UDゴシック,12"; };
    (ssRbtMenu "[検索窓]" ).add_Click({ ssSchBoxSet $tgBox }); (ssRbtMenu "[コピー]").add_Click({ $tgBox.Copy() });
    (ssRbtMenu "[Top移動]").add_Click({ $tBox.SelectionStart=0; $tBox.ScrollToCaret() });
};

##★[41]フォルダ表示(cmd=0:現在DIR 1:再帰表示)
##
function ssViewDir($zcmd, $zdir){ if($zdir-eq $null){ $zdir=(pwd);}; $zcc="[ダブルクリック起動]`n"; $global:szViDir=$zdir;
  if($zcmd -eq 1 ){ $zcc +="[$zdir]`n___[Dir/File]_________________________________________`t#__`n";
      dir $zdir -name -rec |%{ $nn=[System.Text.Encoding]::GetEncoding("shift_jis").GetByteCount($_);
         if( $nn -gt 52 ){ $nn=2; }else{ $nn=52-$nn; }; $zcc+=$_ + (" "*$nn)+"`t## `n" ;   };
  }else{ $zcc +="[$zdir]`n___[Dir/File]________________________________`t#__[Date/Time]________[Size](D=1)`n";
      dir $zdir|%{ $nn=[System.Text.Encoding]::GetEncoding("shift_jis").GetByteCount($_.Name);
         if( $nn -gt 46 ){ $nn=2; }else{ $nn=46-$nn; }; $zcc+=($_.Name + (" "*$nn)) ;
         $zcc+="`t## "+($_.LastWriteTime)+(([int]$_.Length).ToString("#,#")).PadLeft(10)+"`n";   };
  }; MsgBox $zcc "960,720" ("["+(pwd)+"]"); $mBox.AcceptsTab=$true; $mBox.WordWrap=$false; $mBox.BackColor="#EAF4FE";
  $mBox.Add_DoubleClick({ $ln=((($mBox.Text).substring(0,$mBox.SelectionStart)).split("`n")).count-1; 
      $zcc=(($mBox.Lines[$ln]-split"##")[0]).trim(); if($zcc.length -le 2){return; }; $zcc="$szViDir\$zcc";
      if( Test-Path $zcc -PathType Container ){ explorer $zcc; return; };
      if( Test-Path $zcc ){ if($zcc.endswith('.rtf') ){ ssRtfMemo $zcc }else{ Start -NoN Cmd -Arg "/c `"$zcc`""; }; };
  });##★右釦メニュ
  $mBox.ContextMenuStrip =$global:conMenu =New-object ContextMenuStrip -Pro @{ Font="$szFont,12"; };
  (ssRbtMenu "[クリップ取得(コピー)]").add_Click({ $mBox.Copy() });
  (ssRbtMenu "[クリップ取得(#の左側)]").add_Click({ $zcc="";
     foreach( $cc in ($mBox.SelectedText).split("`n") ){ $zcc+=(($cc.split("#"))[0]).trim()+"`r`n"; }; dbc $zcc; Set-Clipboard $zcc; });
  (ssRbtMenu "[窓へ取得Txt/ps1/bat]" ).add_Click({ $ln=((($mBox.Text).substring(0,$mBox.SelectionStart)).split("`n")).count-1; 
     $zcc=(($mBox.Lines[$ln]-split"##")[0]).trim(); if($zcc.length -le 2){return; }; $zcc="$szViDir\$zcc";
     if( (Test-Path $zcc)-and ($zcc.endsWith(".txt")-or $zcc.endsWith(".ps1")-or $zcc.endsWith(".bat")) ){ 
        if( $szFile -ne $zcc ){$global:szFlBk1=$szFile;}; $tBox.Text=Cat $zcc -Raw; $tBox.Font="$szFont,11"; $global:szFile=$zcc; ; dbt("△File読取△$szFile");
     };
  });
};

##★[41]addツール処理(起動時間短縮より別adcファイル化)
##
function global:ssToolAct($zcmd,$zpam){ switch($zcmd){
##★アプリ変数DLG表示
 !AplD{ $zcc=(pwd); $zVer1=((cat $szTool)[0].split(" "))[0]; $zVer2=((cat $fladd)[0].split(" "))[0];
    $zcc1 =("[PshMemo] $zVer1  [PshAdd] $zVer2").replace("#","");
    $zcc1+= "`n[編集] $szFile`n[戻り] $szFlBk1`n[TopPage] $fln`n[Dir] $zcc" ;
    $zcc1+= "`n`n[Apl] $szTool`n[add] $fladd`n[usr] $fladd2`n`n[editor] $szEditor";
    MsgBox $zcc1 "820,450";
    return; }

##★画面クリア //0:のみ//1:クリップ取得
 !DClr{ if((ssMsgYesNo "【画面クリア(Y/N)】" "画面クリアしてOKですか?")-ne "Yes" ){ return; };
    $tBox.Text=""; $tBox.SelectionStart=0; if( ($szFile-ne "")-and ($szFlBk1-ne $szFile) ){ $global:szFlBk1=$szFile; };
    if( ($zpam-eq 1)-and ((ssMsgYesNo "【取得(Y/N)】" "クリップボードから取得(Y/N)?")-eq "Yes" ) ){ $tBox.Paste() };
    return; }

##★UTF8->ANSI変換
 !ANSI{ if( ($szFile -ne "")-and (Test-Path $szFile) ){;}else{ return; }; $tBox.Text=Cat $szFile -Raw -Encoding UTF8; $tBox.SelectionStart=0;
    if( (ssMsgYesNo "注:UTF8->ANSI変換OKですか?(Y/N)" "[File保存]押下(Y/N)で上書き保存します`n`n$szFile" )-eq "Yes" ){ return; };
    $tBox.Text=Cat $szFile -Raw; $tBox.SelectionStart=0;
    return; }

##★HTML特殊文字変換(変換文字:&,<,>,",') MSGBOXに出力
 !HtmC{ $zcm=@("&","&amp;",  "<","&lt;",  ">","&gt;",  "`'","&#039;",  "`"","&quot;",  "`r","");
    $zcc=$tBox.Text; for( $ii=0; $ii -lt $zcm.length; $ii+=2){ $zcc=$zcc.replace($zcm[$ii],$zcm[$ii+1]); }; MsgBox $zcc "1180,720";
    return; }

##★Dir容量表示【ssDir zpam】[0]Tree表示//[1]Dir容量表示)
 !DirV{ $zcc0= '$zDir=Read-Host "[DIR名/Enter]= "; if($zDir -eq "" ){ $zDir=(pwd); }; echo "[Dir] $zDir" ;'
    if($zpam -eq 0){ $zcc0+='tree $zDir /f ;';  ssPshAct 0 $zcc0; return; }; ##★Tree
    $zcc0+='$zlist =dir $zDir -Directory |%{ [PsCustomObject]@{ "Name"=$_.Name; "Size"=(dir $_.FullName -File -Recurse |measure -Sum -Property Length).Sum }; };
    $zmes =$zlist |measure -Max -Min -Property Size; $zlist |%{ [PSCustomObject]@{ "Name"=$_.Name; "Size"=( ([int]$_.Size).ToString("#,#") ).PadLeft(16);
    "Graph"=("*" * [int]($_.Size/($zmes.Maximum)*10)); }; };';
    ssPshAct 0 $zcc0;
    return; }

##★[41]大きいカレンダ(カスタマイズ)
 !BCal{ $fmCal=New-Object Form -Pro @{ Location="100,50"; Size="380,500"; };
    $zMonCal=New-Object MonthCalendar -Pro @{ Font="'Meiryo UI',28"; TrailingForeColor="192,192,0"; }; 
    $fmCal.Controls.Add($zMonCal); $fmCal.Show();
    return; }

##★[41]PSH起動の高速化
 !Ngen{ $zcc='-noe cd c:\
    Set-Alias ngen   @(dir (join-path ${env:\windir} \"Microsoft.NET\Framework\")   ngen.exe -recurse |sort -descending lastwritetime)[0].fullName
    Set-Alias ngen64 @(dir (join-path ${env:\windir} \"Microsoft.NET\Framework64\") ngen.exe -recurse |sort -descending lastwritetime)[0].fullName
    [appdomain]::currentdomain.getassemblies() | %{ if($_.location -match $(\"\\assembly\\GAC_64\") ){
    ngen64 install $_.location }else{ ngen install $_.location }; } ';
    Start -Verb runas -FilePath powershell.exe -Arg "$zcc";
    return; }

##★PS1ファイル半自動VerUP(一旦MsgBoxに表示->Ver確認OK->BackUP->画面入替->[File保存])
 !VrUp{ $zcc0=((Get-Clipboard)-join "`r`n"); 
    if( $zcc0.startsWith("##Ver") ){;}else{ dbg "[★]更新ps1ファイルをマウスコピー取得ください"; return; };
    MsgBox $zcc0 "1280,760"; $mBox.Font="$szFont,11"; $mBox.BackColor="#E5F2FE";
    $zcm=($mBox.Lines[0]).split(" "); $zvr21=$zcm[0].replace("#",""); $zcc22=$zcm[1].trim(); $zcc24=$zcm[3].trim();##[ryu]
    if( $zcc22.endswith('.ps1')-and $zcc24.contains('ryu') ){$zfl="$szToolDir\$zcc22"; }else{ dbg "[★]pshファイルでないため処理不可"; return; };
    if( Test-Path $zfl){ $zccm=(cat $zfl); $zvr11=(($zccm[0]).split(" "))[0].replace("#","");
        $zBakDir=$szToolDir+"Bak"; if(Test-Path $zBakDir -PathType Container){;}else{ New-Item $zBakDir -ItemType Directory };
        $zflbak=("$zBakDir\$zcc22"+"_$zvr11").replace(".","_")+".txt"; }else{ $zvr11="V00"; $zflbak=""; };
    $zcc3="`n[File名]`n$zfl`n`n[現在] $zvr11  --->  [更新] $zvr21";
    if( $zvr11.startsWith("V")-and $zvr21.startsWith("Ver")-and ($zvr11-ne $zvr21) ){;}else{ dbg "$zcc3`n`n[★]同一VerなどでNG"; return; };
    if( (ssMsgYesNo "MSG" "[★]更新のとき[Y]を押下`n`n$zcc3`n`n[BakUP_File]`n$zflbak")-ne "Yes" ){ return;};
    if( Test-Path $zfl){ Copy-Item $zfl $zflbak -Force; }; SC $zfl $zcc0 -Force;
    return; }
};};

##★[38]Help処理
$szHelpDoc="$szToolDir\wPshHelpDoc101.txt";
function ssHelpView($zcmd,$zpam){
    if( Test-Path $szHelpDoc ){ $zcc=(Cat $szHelpDoc -Raw); }else{ $zcc=(Cat $fladd  -Raw); $zcc=$zcc.substring($zcc.indexof("<##★"+"[HELP]")+1); }; 
    $zcc=$zcc.replace("`r",""); MsgBox $zcc "1140,780";  if($mBox -eq $null){ return; }; $mBox.BackColor="#FFF7EE";
    $mBox.Add_DoubleClick({ $ln=((($mBox.Text).substring(0,$mBox.SelectionStart)).split("`n")).count-1; $zcc=($mBox.Lines[$ln]).trim(); ##dbc $zcc;
        $cc="https://ryupapa008.blogspot.com"; $zcc=$zcc.replace("@GUr4","$cc/2024").replace("@GUr5","$zcc0/2025").replace("@GUr6","$cc/2026").replace("@GUrl",$cc);
        if( $zcc.startsWith("!") -and $zcc.contains("http") ){ Iex("Start `'"+(($zcc.split(";"))[1]).trim()+"`'"); return; };
    });
};
##★ユーザ拡張ファイル(usr)登録
if( Test-Path $fladd2 ){ . $fladd2; };

<##★[HELP]画面 ###( [@GUr]行ダブルクリックで関連Webサイト表示 )####################################

!【サイトマップ】; @GUrl/p/blog-page_14.html
!【操作説明】;     @GUr4/09/psh.html

----
 11)ファイル1行目: [#!  @BakColor:#F0E0C0   @FntSize:14  @WndSize:1080,740]で指定する。
!  背景色は[@BakColor:#F0E0C0]で指定。色値サイト; @GUrl/p/blog-page_6.html
  文字寸法は[@FntSize:14]で指定。画面寸法(幅,高さ)は[@WndSize:1080,740]で指定。
----
 21)[&]行:PSH起動。  [&&]行:窓無し起動。[&&&]行:継続起動(内部関数(dbg/dbc/MsgBox)等を利用可能)。
    [;]行:行連結([&]行以降の[;]行を連結し[&][&&][&&&]行の対応処理を実行)。
    [##★]行:次の行へスキップ(次の行をダブルクリック処理対象)

 22)[>]行:DOS-CMD起動。   [>>]行:窓無し起動。
    [> cd Dir名]行で指定フォルダへ移動。 [TopPage]表示で元のフォルダへ戻る。

 23)[&FSet& File名]行:ファイル名(txt/rtf)を設定し、新規/編集/保存する。

 24)[&FSet& Dir名]行: フォルダ管理処理をする。
  [!readMe.txt]を仮作成し、そのフォルダへ移動([File保存]押下で保存)。
  [右釦]>[ツール]>[Dir/File取得]でフォルダ/ファイル名を取得し、[##]コメント記載で管理する。
  [フォルダ/ファイル名]行をダブルクリックでそのファイルを起動する。

 25)[!コメント; Http:xxxxxxxxxxxx]行でWebサイトを表示する。

 26)ファイル(txt)を[D&Drop]で表示/編集/保存。 ファイル(ps1)を[D&Drop]で起動。
    フォルダを[D&Drop]で(24)項の処理をする。

 27)[File][Help]のサブメニュで次の編集をする。
  [TopPage]反映/編集、[Psh編集]:PSHメモ帳、[Add編集]:追加機能

!31) 計算表示マネージャ_____参照;@GUr4/09/psh_8.html
!32) 自動キー入力マネージャ_参照;@GUr4/09/pshpsw.html
!33) PSW管理マネージャ___参照;@GUr4/09/pshpsw.html
!34) googleグラフマネージャ_参照;@GUr4/09/google.html
!35) WEB表示マネージャ___参照;@GUr4/09/pshwebpsh.html
!36) QR生成マネージャ_____参照;@GUr4/09/qrpshweb.html
!37) テキストマネージャ_____参照;@GUr4/09/qrpshweb.html

##>

[ユーザ追加usr]  sys\wndPshPrg201_usr.ps1  [Ver1.581]
◎List[Copy]釦→[ツール2]→[ps1アプリ更新]で更新[4.2項以降]、他は[4.2項参照]
##Ver1.581 wndPshPrg201_usr.ps1 by ryu 2024/1215 ####################################
##●●PSHメモ帳:機能追加その3.2(usr)
##

##★メニュ3へ登録設定
$global:szMnBas=$szMenu11;
if($szMnTool3-eq $null){ $global:szMnTool3=1; $global:szPshMemoSts=1;
    ($global:szMnBas=ssDMnMSet "[予定帳A]").add_Click({ if( Test-Path $fladdSch ){ . $fladdSch 1 }; });
      (ssDMnMSet "[予定帳B]").add_Click({ if( Test-Path $fladdSch ){ . $fladdSch 1 "zPsh" }; }); $global:szMnBas=$szMenu11; 
    (ssDMnMSet "[日記帳]").add_Click({ if( Test-Path $fladdSch ){ . $fladdSch 1 "zNiki" "日記帳" }; });
    (ssDMnMSet "----" ).add_Click({;});
    (ssDMnMSet "[マクロ一覧]" ).add_Click({ MsgBox ($szLstMacro.replace(","," ")) "960,540"; $mBox.BackColor="#E8FFD0";});
    (ssDMnMSet "----" ).add_Click({;});
    (ssDMnMSet "DB[Winコマンド300窓] L12" ).add_Click({ ssBatAct winCmd251.bat L12 });
    (ssDMnMSet "DB[Psh短文登録窓] L23" ).add_Click({ ssBatAct wndPshShort151.bat L23 });
    ($global:szMenu11A=ssDMnMSet "★DB:Gui窓DB->" ).add_Click({ ssBatActSet;});
    (ssDMnMSet "----" ).add_Click({;});
    (ssDMnMSet "[キー入力処理テスト]" ).add_Click({ ssDlgKeyInp !Imp1 "キー入力[RET]" "AAA" });
    (ssDMnMSet "----" ).add_Click({;});
    (ssDMnMSet "[<usr編集>]" ).add_Click({ & $szEditor $fladd2  });
    (ssDMnMSet "[<usr再ロード>]" ).add_Click({ . $fladd2; dbg "再ロード`n`n$fladd2" });
    (ssDMnMSet "----" ).add_Click({;});
    (ssDMnMSet "[ps1アプリ更新]"  ).add_Click({ ssPs1VerUp1 });
    (ssDMnMSet "[<Sch編集>]" ).add_Click({ & $szEditor $fladdSch });

    ##★文字色BOXへのサイズ/背景色/フォント設定の追加
    $global:szLstSize +="[サイズ:22],[サイズ:24],";
    $global:szLstColr +="[黄緑色:#DBFFB6],[薄水色:#C6FFFE],";
    $global:szFntKind +=@("HG丸ゴシックM-PRO");
};

##★Web検索List&スーパ検索処理
##
$global:szLstMacro="【マクロ一覧V2.0】
★Web検索:例[&KKK コピペ gui]でダブルクリック[WC] 
#-&マクロ,-名称,----------Web-Url------------------------------------#
  &KKK, Msn検索,       https://www.bing.com/search?q=
  &KKG, Google検索,    https://www.google.co.jp/search?q=
  &KKY, Yahoo検索,     https://search.yahoo.co.jp/search?p=
  &KKB, Bing検索,      https://www.bing.com/search?q=
  &KKA, Amazon,        https://www.amazon.co.jp/s?k=
  &KKM, モノタロウ,    https://www.monotaro.com/s/?c=&q=
  &KKR, R楽天市場,     https://search.rakuten.co.jp/search/mall/
  &KK5, 一括検索5,    KKK/KKG/KKY/KKA/KKR
  &KK3, 一括検索3,    KKA/KKM/KKR
  
★(add登録:例[&KBC   8233 8848 9064]で[WC])
  &KBD, 株Doraチャート,  https://www.kabudragon.com/s?t=
  &KBC, Cost株価Yahoo,   https://finance.yahoo.co.jp/search/?query=
  &KBY, Yahooチャート,   !YahooCha
  &KBT, 株Tan情報,       !KtanCha
  &KBN, 日経チャート,    !NikeiCha
  
★(addで登録)
  &KEI, keisan計算[31]
  &KEY, 自動キー操作[32]
  &FS,  説明文  ;file名 ##マルチ窓起動(&FSet)
  &FS&, 説明文  ;file名 ##入替え(&FSet&)
★(usrで登録)
  &BAT, GuiPsh-Bat処理; ssbat(L11/L12/L13/L21/L22/L23)
  
";

##★[WC]起動 [&XXXX]マクロの登録
##
function global:ssWClkUsrCmd($ln,$zcc){ ##return 0;
   $zcmd=$zcc.split(" ")[0]; $zcc1=($zcc.substring(5)).trim(); ##dbc "$ln  $zcmd  $zcc1";
   switch( $zcmd.substring(0,3) ){
   "&KK" { return (ssWebSach $zcmd  !cp1 $zcc1); } ##List利用
   "&KB" { return (ssWebSach $zcmd  !cp5 $zcc1); } ##List利用
   "&BA" { $zcc="ssBatAct $zcc1"; Iex($zcc); return 1;}
   }; return 0;
};

##★マクロList処理
##
function global:ssWebSach($zcmd,$zsub,$zcc1){ $zcm=$szLstMacro.split(",`n");
  for($ii=0; $ii -lt $zcm.length; $ii++ ){ if(($zcm[$ii].trim()) -ne $zcmd){continue;}; break; }; $zcc=($zcm[$ii+2]).trim(); 
  if( $zcc.startsWith("http") ){ $zcc+=$zcc1; Iex( "Start `'$zcc`'" ); Start-Sleep -m 500; return 1; };
  switch($zsub){
  !cp1 { if( [int]($zcmd.substring(3,1)) -ge 1 ){ foreach($cc in $zcc.split("/")){ if($cc.length -eq 3){ ssWebSach "&$cc" !cp1 $zcc1; }; }; return 1; };  }
  !cp5 { if( $zcc.startsWith("!") ){ ssKabView $zcc $zcc1; }; return 1; }
  }; return 0;
};

##★PS1ファイル半自動VerUP(一旦MsgBoxに表示->Ver確認OK->BackUP->画面入替->[File保存])
##
function global:ssPs1VerUp1(){ $zcc0=((Get-Clipboard)-join "`r`n"); 
  if( $zcc0.startsWith("##Ver") ){;}else{ dbg "[★]更新ps1ファイルをマウスコピー取得ください"; return; };
  MsgBox $zcc0 "1280,760"; $mBox.Font="$szFont,11"; $mBox.BackColor="#E5F2FE";
  $zcm=($mBox.Lines[0]).split(" "); $zvr21=$zcm[0].replace("#",""); $zcc22=$zcm[1].trim(); $zcc24=$zcm[3].trim();##[ryu]
  if( $zcc22.endswith('.ps1')-and $zcc24.contains('ryu') ){$zfl="$szToolDir\$zcc22"; }else{ dbg "[★]pshファイルでないため処理不可"; return; };
  if( Test-Path $zfl){ $zccm=(cat $zfl); $zvr11=(($zccm[0]).split(" "))[0].replace("#","");
      $zBakDir=$szToolDir+"Bak"; if(Test-Path $zBakDir -PathType Container){;}else{ New-Item $zBakDir -ItemType Directory };
      $zflbak=("$zBakDir\$zcc22"+"_$zvr11").replace(".","_")+".txt"; }else{ $zvr11="V00"; $zflbak=""; };
  $zcc3="`n[File名]`n$zfl`n`n[現在] $zvr11  --->  [更新] $zvr21";
  if( $zvr11.startsWith("V")-and $zvr21.startsWith("Ver")-and ($zvr11-ne $zvr21) ){;}else{ dbg "$zcc3`n`n[★]同一VerなどでNG"; return; };
  if( (ssMsgYesNo "MSG" "[★]更新のとき[Y]を押下`n`n$zcc3`n`n[BakUP_File]`n$zflbak")-ne "Yes" ){ return;};
  if( Test-Path $zfl){ Copy-Item $zfl $zflbak -Force; }; SC $zfl $zcc0 -Force;
};

<##★キー入力BOX窓:fmKeyBox(KeyBox)  ##キー入力[return]で起動
##  cmd:処理No  chr0:入力コメント  chr1:初期値
function global:ssDlgKeyInp( $zcmd, $zchr0, $zchr1){ $global:fmKeyBox=New-Object Form -Pro @{ Size="600,100"; StartPosition ="manual"; TopMost=$true; };
    $global:KeyBox =New-Object TextBox -Pro @{ Location ="5,5"; Size ="575,50"; Font ="Meiryo UI,12";}; $fmKeyBox.Controls.Add( $KeyBox );
    $fmKeyBox.Location=New-Object Drawing.Point( ([Cursor]::Position.X -300),([Cursor]::Position.Y -20) ); $fmKeyBox.Show();
    $global:szKeyMode =$zcmd; $fmKeyBox.text =$zchr0; $KeyBox.text =$zchr1;
    ##キー入力
    $KeyBox.Add_KeyPress({ if( $_.KeyChar -ne "`r" ){ return;}; $_.Handled =$true; $fmKeyBox.Visible =$false;
        $zmd=$szKeyMode; $zcc=$KeyBox.Text; if( $zcc -ne ""){ ssKeyCmp1 $zmd $zcc; ssKeyCmp2 $zmd $zcc; ssKeyCmp3 $zmd $zcc;};
    });
}; function global:ssKeyCmp1($zmd,$zcc){}; function global:ssKeyCmp2($zmd,$zcc){}; function global:ssKeyCmp3($zmd,$zcc){};
##★キー入力テスト
function global:ssKeyCmp3($zmd,$zcc){if($zmd -eq "!Imp1" ){ dbg $zcc; }; };
##>

##★月日スケジュ処理
$global:fladdSch="sys\wPshSchAct101.ps1";


##★DB:GUI基本窓DB生成
##
function global:ssBatActSet(){ if( $szBatActSet-eq $null ){ $global:szBatActSet=1;}else{ return;};
    $global:szMnBas=$szMenu11A; $szMenu11A.Text="[Gui窓DB]"
##    (ssDMnMSet "L13 [Gui窓のadd機能ps1]" ).add_Click({ ssBatAct winCmd251_add.ps1 L13 });
    (ssDMnMSet "L11 [Gui基本窓]"   ).add_Click({ ssBatAct winCmd051.bat L11 });
    (ssDMnMSet "L21 [Psh基本窓]"   ).add_Click({ ssBatAct wndPsh151.bat L21 });
    (ssDMnMSet "L22 [Psh入門窓]"   ).add_Click({ ssBatAct wndPshKiso151.bat L22 });
    (ssDMnMSet "L25 [ssPshメモ帳]" ).add_Click({ ssBatAct ssPshMemoPup.bat L25 });
    (ssDMnMSet "L262[Psh分割窓TopPage]").add_Click({ ssBatAct wndPshList051.bat L262 });
    (ssDMnMSet "L261[Psh分割窓アプリ部]" ).add_Click({ ssBatAct ..\sys\wndPshPrg001.ps1 L261 });
};
##★GUI基本窓DB生成処理
##  fl:処理ファイル、mod:WebListNo、sub:fl起動
function global:ssBatAct($zfl,$zmod,$zsub ){ $zDir=$szToolDir+"\..\ssbat"; $zzFl="$zDir\$zfl";
    if( Test-Path $zDir -PathType Container ){;}else{ New-Item $zDir -ItemType Directory };
    if( ($zsub-eq $null)-and(Test-Path $zzFl)-and( (Cat $zzFl).length -ge 2 ) ){ ##bat起動
        if( ($zmod-ne $null)-and (Test-Path $zmod) ){;}else{ $zmod=$szFile; if( $zmod-eq "" ){ $zmod="None" }; };
        Start -NoN Cmd -Arg "/c $zzFl $zmod" ; return;
    };
    $zcc="https://ryupapa008.blogspot.com/";  ##  <a name="_List1.1.1">  </a>#
    $zcc1="
    L11,@url2024/08/guiwin.html#_List1.1.5
    L12,@url2024/08/guiwin_24.html#_List1.2.5
    L13,@url2024/08/guiwin_9.html#_List1.3.1
    L21,@url2024/08/guipsh.html#_List2.1.5
    L22,@url2024/08/guipsh_24.html#_List2.2.5
    L23,@url2024/08/guipsh9.html#_List2.3.5
    L25,@url2024/12/sspsh25.html#_List2.5.5
    L261,@url2024/08/gui.html#_List2.6.1.1
    L262,@url2024/08/gui.html#_List2.6.1.5
    ";
    ##★File追加
     if( $zmod.startsWith("@url") ){ $zcc=$zmod.replace("@url",$zcc); }else{ $zcm=$zcc1.split(",`n"); $nn=$zcm.length;
        for($ii=0; $ii-lt $nn; $ii++){ $cc=$zcm[$ii].trim(); if( $cc-eq $zmod ){ $zcc=$zcm[$ii+1].replace("@url",$zcc); break; }; };
    }; $zcc=$zcc.trim();
    start $zcc; ssPshAct 1 "$szTool $fln  $zzFl";##Web表示 ##Pshメモ帳起動
};
[履歴] wndPshPrg201.ps1
◎V2.053D
  1)[保存]釦で、[TopPage反映]or[File保存]をこの釦でアプリ側で自動選択し保存する。
  2)[&FSet/&FS]で新規ファイル操作可能にした。またDir指定時の処理を見直した。
  3)[ファイル]→[前File戻り]処理、[Dir]移動時のDir変更処理を見直し改善した。
◎V2.052...[4.2]項参照(ps1/batファイル処理、https行の起動など)
◎V2.05...[3.9]項参照(窓のマルチ化など)

[履歴] sys\wndPshPrg201_add.ps1
◎Ver1.332
  1)[ツール1]→[画面クリア->クリップ取得]の追加(PSH窓DB化対応)
  2) &EXE 説明文先行型のマクロ追加
  3) googleグラフのブログへHTML張付け対応処理追加[3.3][3.4][3.5]項参照
      (グラフを画面コピーでなくHTMLソース組込みに変更)
  4) キー入力BOX処理追加
  5) PSHメモ帳起動時間短縮化に向けた関数配置変更

[履歴] wndPshPrg201_usr.ps1
◎Ver1.581
  1) Gui窓処理DB処理の改善


◎実践編...rtfメモ帳関連(暫定)

[TopPage起動bat].. wRtfMemo101.bat
◎[TopPage]に[&FSet wRtfMemo101.bat] 登録し[WC]→[ツール1]→画面クリア→クリップ取得]で作成
@echo off &rem if not "%~0"=="%~dp0.\%~nx0" (start /min cmd /c,"%~dp0.\%~nx0" %* &exit) &rem ★DOS窓mini化
powershell -Exe RemoteSigned "$fln=(echo %0); .\sys\wPshRtfMemo501.ps1 $fln %1"
pause&exit; pause&exit

<##[rtfMemo Ver2.05]--[TopPage]  @BakColor:#e0ffe0   @WndSize:1080,780
##●●[rtfめも帳]●●  [&][>][!]行をダブルクリック起動[WC]。マウス右釦:コピー操作など。

##  1) [&]PSH起動  [&&]窓無し  [&&&]継続  [;]行連結
##  2) [&FSet&]ファイル(rtf)の読込/新規作成、[&FSet]新しい窓で開く
##  3) [&FS  コメント; ファイル名] [&FS コメント; ファイル名] 説明文先行型で同上
##  4) Drag&Drop⇒rtfファイル読込、ps1ファイル起動、txtファイル/フォルダはPSHメモ帳起動
##  5) [>][>>]DosCmd起動、背景色/窓設定、MsgBox/dbg/dbcなど


[本体アプリ(試行版)] sys\wPshRtfMemo501.ps1 [Ver1.52]
◎List[Copy]釦→[ツール2]→[ps1アプリ更新]で更新[4.2項以降]他は[4.2項]参照
##Ver1.52 wPshRtfMemo501.ps1 by ryu 2024/10/01
##●● wPshRtfファイル編集 by ryu
##ACT: wPshRtfMemo501.ps1 [rtfFile/batFile] [[rtfFile]]
##★
using namespace System.Windows.Forms; Add-Type -AssemblyName System.Windows.Forms, System.Drawing; ##★GUI
function dbg($cc){[MessageBox]::Show($cc)}; function dbc($cc){Write-Host $cc;}; function dbt($cc){$mMain.Text="【rtfメモ帳】[V1.015][Dir] $szFileDir  $cc";};
function ssMsgYesNo($cc0,$cc1,$cc2){ if($cc2-eq $null){$cc2="YesNo"}; return [MessageBox]::Show($cc1,$cc0,$cc2); };##★YesNo
##★
$szTool=$MyInvocation.MyCommand.Path; $szToolDir=Split-Path $szTool -Parent; $global:fln=$global:szFile=$global:szFlBak1=$global:szFile2="";
$szEditor="C:\winfree\Sakura\sakura.exe"; if(Test-Path $szEditor){;}else{ $szEditor="notepad.exe"; };
$szBkColor="#e0ffc1"; $szFont="BIZ UDゴシック"; $szFSize="13"; $szWSize="1080,720"; $global:szStyle=""; $szFileHelp="wRtfHelp101.rtf";
##
##★起動ファイル取得  [1:szTool aaa.rtf ]  [2:szTool bbb.bat]  [3:szTool bbb.bat aaa.rtf] ★aaa.rtfのフォルダ設定
$zcc=$args[0]; if( $zcc -ne $null){ $zPm0=$zcc; }else{ $zPm0=$szFileHelp; }; ##★編集ファイルの設定
if( $zPm0.endswith('.bat') ){ $global:fln=$zPm0; $zPm0=""; if( $args[1] -ne $null ){ $zPm0=$args[1]; }; };
if( $zPm0-ne "" ){ $zcc=(Split-Path $zPm0 -Parent); if(Test-Path $zcc){ cd $zcc; }; $global:szFile=(Split-Path $zPm0 -Leaf); }; $global:szFileDir=(pwd);
##
##★TopPage表示($fln)
function ssTopView(){ if( Test-Path $fln ){ $global:szFile=""; }else{return;}; 
  $bb=(Cat $fln -Raw); $rfBox.Text=$bb.substring( $bb.indexof("`n<"+"##" )+1); ssViewColor; $rfBox.SelectionStart=0; dbt(" 【TopPage】 "+$fln); };
##
##★【基本窓&RichTextBox】窓の生成 ★DLG登録
$mWW=1100;  $mHH=650; $szVer="[V1.50]";
$global:mMain =New-Object Form -Pro @{ Size="$mWW,$mHH" }; $global:rfBox =New-Object RichTextBox -Pro @{ Font="$szFont,13"; Dock="Fill";
   Multiline=$True; AcceptsTab=$True; AllowDrop=$true; ScrollBars=[ScrollBars]::Both; BackColor="#F9FFFB"; WordWrap=$false;}; $mMain.Controls.Add($rfBox); 
$mMain.Add_Closing({ if($rfBox.Modified){ if((ssMsgYesNo "【保存(Y/N)?】" "$szFile")-eq "Yes"){ ssFileSave 0 $szFile; return;}; }; 
    $rfBox.Modified=$false; $_.Cancel=$True; $mMain.Visible=$false; });

$dReadBox =New-Object OpenFileDialog -Pro @{ Title="【読取】ファイル選択"; Filter='ファイル(*.rtf)|*.rtf'; InitialDirectory=(pwd);};
$dSaveBox =New-Object SaveFileDialog -Pro @{ Title="【保存】ファイル設定"; Filter='ファイル(*.rtf)|*.rtf|全て(*.*)|*.*'; InitialDirectory=(pwd);};
$dColor=New-Object ColorDialog; $dgFont=New-Object FontDialog -Pro @{ ShowColor=$true; FixedPitchOnly=$false; AllowVerticalFonts=$false;};
##
##★メニュ生成 ★メニュ登録関数 ★メニュバーへ登録
$dListMenu =New-Object MenuStrip -Pro @{ Font="$szFont,12"; };  $mMain.MainMenuStrip =$dListMenu; $mMain.Controls.Add($dListMenu);
function ssDMnMenu($zcc){ $zmm=New-Object ToolStripMenuItem; $zmm.Text=$zcc; $dListMenu.Items.AddRange($zmm); $global:szMnBas=$zmm; return $zmm;}
function ssDMnMSet($zcc){ $zmm=New-Object ToolStripMenuItem; $zmm.Text=$zcc; $szMnBas.DropDownItems.AddRange($zmm); $global:szMnBas2=$zmm; return $zmm;}
$szMenu1=ssDMnMenu "◎ファイル◎";
  (ssDMnMSet "[Dir/File名]取得" ).add_Click({ $rfBox.SelectedText=((dir -name)-join "`n")+"`n" });
  (ssDMnMSet "[Dir/File名]再帰取得" ).add_Click({ $rfBox.SelectedText=((dir -name -Rec)-join "`n")+"`n" }); $aa=(ssDMnMSet "----");
  (ssDMnMSet "[前Fileへ戻り]").add_Click({ ssFileSet $szFlBak1 0 }); 
  (ssDMnMSet "[File再読取り]").add_Click({ ssFileSet $szFile 1 }); $aa=(ssDMnMSet "----");
  (ssDMnMSet "File読取[窓]").add_Click({ if( $dReadBox.ShowDialog() -eq "OK" ){ ssFileSet($dReadBox.FileName) 0 }; });
  (ssDMnMSet "File保存[窓]").add_Click({ ssFileSave 1 $szFile });
  (ssDMnMSet "[BakUp]フォルダ").add_Click({ $zcc=(pwd); explorer "$zcc\bak" }); 
if($fln -ne ""){ $global:szMnBas=(ssDMnMSet "[TopPage]"); ##★[TopPage]処理
  (ssDMnMSet "表示").add_Click({ if($szFile -ne ""){ $global:szFlBak1=$szFile; }; ssTopView; });
  (ssDMnMSet "反映").add_Click({ if( ($szFile -ne "")-or ( (ssMsgYesNo "反映しますか?(Y/N)" "$fln")-ne "Yes") ){ return;};
        $zcc=Cat $fln -Raw; SC ($fln+".bak") $zcc -Force; SC $fln ($zcc.substring(0,$zcc.indexof('<#'+'#'))+$rfBox.Text) -Force; ssViewColor; });
  (ssDMnMSet "編集").add_Click({ Iex("$szEditor $fln") }); }; $global:szMnBas=$szMenu1; $aa=(ssDMnMSet "----"); 
$global:szMnBas=$szMenuDBG=ssDMnMSet "[DBG]"; (ssDMnMSet "[Rtf編集]").add_Click({ & $szEditor $szTool}); (ssDMnMSet "[Add編集]").add_Click({ & $szEditor $fladd});
(ssDMnMenu "{保存}"  ).add_Click({ ssFileSave 0 $szFile}); (ssDMnMenu "{explorer}").add_Click({ explorer (pwd) }); 
(ssDMnMenu "{書式取得}->").add_Click({ssFnc !Kat1 }); (ssDMnMenu "{反映}").add_Click({ssFnc !Kat2 });
$szMenu5=ssDMnMenu "編集"; (ssDMnMSet "[左端]").add_Click({ssFnc !Move "Left" }); (ssDMnMSet "[中央]").add_Click({ssFnc !Move "Center"});
  (ssDMnMSet "[右端]").add_Click({ssFnc !Move "Right"});
$szMenu6=ssDMnMenu "文字色";(ssDMnMSet "{色}DLG窓" ).add_Click({ssFnc !ColD}); ##★DLG窓
$szMenu7=ssDMnMenu "サイズ"; (ssDMnMSet "サイズ[10]").add_Click({ssFnc !Size 10}); (ssDMnMSet "サイズ[12]").add_Click({ssFnc !Size 12});
  (ssDMnMSet "サイズ[14]").add_Click({ ssFnc !Size 14}); (ssDMnMSet "サイズ[16]").add_Click({ssFnc !Size 16});
$szMenu8=ssDMnMenu "フォント";  (ssDMnMSet "[フォント]DLG窓").add_Click({ ssFnc !Fnt1 });  (ssDMnMSet "[普通]").add_Click({ssFnc !Fnt3 "Regular"});
  (ssDMnMSet "[太い]").add_Click({ssFnc !Fnt4 "Bold"});  (ssDMnMSet "[斜め]").add_Click({ssFnc !Fnt4 "Italic"});
(ssDMnMenu "{図形}").add_Click({ mspaint.exe });
(ssDMnMenu "{Word帳}" ).add_Click({ if((Test-Path $szFile)-and ($szFile.endswith('.rtf')) ){ Start -NoN Cmd -Arg "/c `"$szFile`""; }; });
$szMenuA=ssDMnMenu "ツールA";
  (ssDMnMSet "図形作成->クリップ取得").add_Click({ mspaint.exe }); (ssDMnMSet "[1行目設定:背景色/窓]").add_Click({ ssFnc !Kat5 });
  (ssDMnMSet "[背景色サイト]").add_Click({ start "https://ryupapa008.blogspot.com/p/blog-page_6.html" });
##
##★右釦メニュ(★元に戻す★切り取り★コピー★張付け★移動Top/Bottom
$global:conMenu=$rfBox.ContextMenuStrip=New-object ContextMenuStrip -Pro @{ Font="BIZ UDゴシック,12"; };
function ssRBtMenu($zcc){ $aa=$conMenu.Items.Add(($ccc=New-Object ToolStripMenuItem)); $ccc.Text=$zcc; $global:zzSrp=$ccc; return $ccc;};
function ssRBtSMnu($zcc){ $aa=$zzSrp.DropDownItems.Add( ($ccc =New-Object ToolStripMenuItem) ); $ccc.Text=$zcc; return $ccc;};
  (ssRBtMenu "元に戻す").add_Click({ if( $rfBox.CanUndo -eq $true ){ $rfBox.Undo() }; });
  (ssRBtMenu "切り取り").add_Click({$rfBox.Cut()}); (ssRBtMenu "コピー").add_Click({$rfBox.Copy()}); (ssRBtMenu "貼付け").add_Click({$rfBox.Paste()});
  (ssRBtMenu "全選択"  ).add_Click({$rfBox.SelectAll()}); (ssRBtMenu "移動Top" ).add_Click({ $rfBox.SelectionStart=0; $rfBox.ScrollToCaret() });
  (ssRBtMenu "移動Bottom").add_Click({ $rfBox.SelectionStart=$rfBox.Text.Length; $rfBox.ScrollToCaret() });
##
##★マウス[WC]操作 ##★[>][>>]DOS処理 ★[!]Web ★[Dir/File] ★[&]行連結 ★[&&&] ★[&FSet&] ★[&] ★[&&] ★機能追加File
$rfBox.Add_DoubleClick({ssWCAct 0 }); $rfBox.Add_KeyDown({ if($_.Control){;}else{return;}; switch($_.KeyCode){ "n" { ssWCAct 1;} };  });
function ssWCAct($zcmd){ $ln=((($rfBox.Text).substring(0,$rfBox.SelectionStart)).split("`n")).count-1;
  $zcc=(($rfBox.Lines[$ln]-split"##")[0]).trim()+" "; if( $zcc.length -le 2){ return; };
  if( $zcc.startsWith("> ") ){ $zcc=$zcc.substring(1); Start Cmd -Arg "/k $zcc"; return; };
  if( $zcc.startsWith(">> ")){ $zcc=$zcc.substring(2); Start -NoN Cmd -Arg "/c $zcc"; return; };
  if( $zcc.startsWith("&") ){;}else{ if( Test-Path $zcc -PathType Container ){ explorer $zcc; return; };
      if( ($zcc.startsWith("http"))-or ($zcc.startsWith("!") -and $zcc.contains("http")) ){ 
          if($zcc.startsWith("!")){ $zcc=($zcc.split(";"))[1]; }; $zcc=($zcc.replace("`'","")).trim(); Iex("Start `'$zcc`'"); return; };
      if( Test-Path $zcc ){ if($zcc.endswith('.rtf') ){ ssRtfMemo $zcc }else{ Start -NoN Cmd -Arg "/c $zcc"; }; return; }; return; };
  for( $ii=1; $ii -lt 300; $ii++ ){ $cc=$rfBox.Lines[$ln+$ii]; if($cc -eq $null){ break; };
      if( $cc.startsWith(";") ){ $zcc+="`n"+($cc.substring(1)).trim(); }else{ if( $cc.startsWith("#") ){ continue;}; break; }; };
  if( $zcc.startsWith("&&& ")){ $zcc=$zcc.substring(3); $rfBox.SelectionStart+=4; Iex($zcc); return; };
  if( $zcc.startsWith("&FSet&") ){ $zcc=$zcc.substring(6).trim(); ssFileSet "$zcc" 0; return; };
  if( $zcc.startsWith("&FS&") ){ $zcc=($zcc.split(";"))[1].trim(); ssFileSet "$zcc" 0; return; };
  if( $zcc.startsWith("&FSet ")-or $zcc.startsWith("&FS ") ){
      if( $zcc.startsWith("&FSet ") ){ $zcc=$zcc.substring(6); }else{ $zcc=($zcc.split(";"))[1]; }; $zcc=$zcc.trim(); $zcc=Iex("`"$zcc`"");
      if( $zcc.endsWith(".txt")-or (Test-Path $zcc -PathType Container) ){ ssFileSet "$zcc" 0; }else{ ssPshAct 1 "$szTool $zcc"; }; return; };
  if( $zcc.startsWith("& ")  ){ ssPshAct 0 ($zcc.substring(1).trim()); return; };
  if( $zcc.startsWith("&& ") ){ ssPshAct 1 ($zcc.substring(2).trim()); return; }; (ssWClkCmd $ln $zcc); 
};
##★PSH短文起動(0:窓あり/1:無し) ★ドラッグ&ドロップ
function ssPshAct($zcmd,$zcc){ $zcc=$zcc.replace('"','\"'); if($zcmd-eq 0){ Start powershell -Arg "-noe $zcc";}else{ Start -NoN powershell -Arg "$zcc"; }; };
function global:ssWClkCmd($ln,$zcc){;}; $fladd=$szTool.replace(".ps1","_add.ps1"); if( Test-Path $fladd ){ . $fladd; }; 
$rfBox.Add_DragEnter({ $_.Effect ="All"; }); $rfBox.Add_DragDrop({ $zcc=@(([DataObject]$_.Data).GetData("FileDrop")); if(Test-Path $zcc){ ssFileSet $zcc 0 }; });

##★表示( szFile: 編集rtfファイル/変換txtファイル) ★編集fileの設定★背景色の設定
function ssFileSet($zzFl,$zcmd){ 
  if( $zzFl.endswith('.rtf') ){ $rfBox.clear(); if( ($zcmd-eq 0)-and ($szFlBak1 -ne $szFile)){ $global:szFlBak1=$szFile; }; $global:szFile =$zzFl; 
    if( Test-Path $szFile ){;}else{ $rfBox.Text="#![管理] @BakColor:$szBkColor @WndSize:$szWSize`r`n"; ssViewColor; dbt "【新規】$szFile"; return; };
    $rfBox.SelectedRtf =Cat $szFile -Raw; ssViewColor; dbt "【読取】$szFile"; 
    $rfBox.SelectionStart=0; $rfBox.ClearUndo(); $rfBox.Modified=$false; $global:szFile2="";
    return;};
  if( $zzFl.endswith('.txt')-or (Test-Path $zzFl -PathType Container) ){ ssPshAct 1 "$szToolDir\wndPshPrg201.ps1 '' $zzFl" ; return;};
  dbg "[ERROR]`n>>> No rtf/txt-File`n$zzFl"; return;
};
##★File保存(bak保存)
function ssFileSave($zcmd,$zfl){ if( ($zfl -ne "")-and ($rfBox.Modified -eq $true)-and $zfl.endswith('.rtf') ){;}else{ dbt "◇未変更◇$zfl"; return; };
  if( $zcmd -eq 1 ){ $dSaveBox.FileName=$zfl; if( $dSaveBox.ShowDialog() -ne "OK" ){ return; }; $zfl=$dSaveBox.FileName; if($zfl -eq ""){ return;}; }
  else{ if( ($cc=(ssMsgYesNo "[上書き保存 (BackUP:Y/N)] or [キャンセル]" ("[DIR]`n"+(pwd)+"`n`n[File]`n$zfl") "YesNoCancel" ))-eq "Cancel" ){ return;}; };
  if( ($cc -eq "Yes")-and (Test-Path $zfl) ){ if(Test-Path "bak" -PathType Container){;}else{ New-Item "bak" -ItemType Directory };
      $zfl2="`$`$bak_"+(Split-Path $zfl -Leaf); Copy-Item $zfl "bak\$zfl2" -Force;  };
  $global:szFile=$zfl; $rfBox.Rtf |Out-File "$zfl" -Enc default; ssViewColor; $rfBox.Modified=$false; dbt("▼保存▼$szFile");
};
##★背景色 ★WND寸法 ★Wnd右端
function ssViewColor(){ $zcc=($rfBox.Lines[0]).replace(" ","").split("`$@?:");
  for( $ii=0; $ii -lt $zcc.count; $ii++ ){ $cc=$zcc[$ii]; $cc1=$zcc[$ii+1]; if( $cc.StartsWith("BakColor") ){ $rfBox.BackColor=$cc1; };
      if( $cc.StartsWith("WndSize") ){ $mMain.Size=$cc1; };
      if( $cc.StartsWith("WndRtan")){ if($cc1-eq 1){ $rfBox.WordWrap=$false; }else{ $rfBox.WordWrap=$true; }; };  };
};
##★MSG表示Call関数   ★DLG窓の生成  ★MSG窓の文字BOX
function MsgBox($cc,$ww){ if($ww-eq $null){$ww="720,400";}; $fmMBox=New-Object Form -Pro @{ Size=$ww;Text="【MSG】" }; 
  $global:mBox=New-Object TextBox -Pro @{ Font="$szFont,14"; Dock="Fill"; Multiline=$True; AcceptsReturn=$True; ScrollBars=[ScrollBars]::Vertical;};
  $fmMBox.Controls.Add($mBox); $mBox.Text=($cc.replace("`n","`r`n")); $mBox.SelectionStart=0; $fmMBox.Show();
};
##★MENU関数処理
function ssFnc($zcmd,$zpam){ $rfBox.ContextMenuStrip.Close(); switch( $zcmd ){
##★フォント/DLG窓/スタイル ★サイズ  ★[31][32]文字色  ★型処理(1:現行取得、2:設定  5:1行目Pam追加
  !Fnt1{ if( $dgFont.ShowDialog()-ne "OK" ){return;}; $rfBox.SelectionFont=$dgFont.Font; $rfBox.SelectionColor=$dgFont.Color; return;}
  !Fnt2{ ssSetFont $zpam "" "" ; return;}   !Fnt3{ ssSetFont "" "" $zpam; $global:szStyle=""; return;}
  !Fnt4{ if( $szStyle-eq ""){ $global:szStyle=$zpam; }else{ if($szStyle.contains($zpam)){;}else{$global:szStyle+=",$zpam"; }; }; ssSetFont "" "" $szStyle; return;}
  !Size{ ssSetFont "" $zpam "" ; return;}   !ColD{ if($dColor.ShowDialog()-eq "OK"){$rfBox.SelectionColor=$dColor.Color;}; return;}
  !Colr{ $rfBox.SelectionColor=$zpam; return;}  !ColB{ $global:szBakCOLOR=$rfBox.SelectionBackColor=$zpam; return;}
  !Kat1{ (ssSetFont "" "" ""); $global:szCOLOR =$rfBox.SelectionColor; $global:szBakCOLOR=$rfBox.SelectionBackColor; return;}
  !Kat2{ $rfBox.SelectionFont =$szFONTinfo; $rfBox.SelectionColor=$szCOLOR; $rfBox.SelectionBackColor=$szBakCOLOR; return;}
  !Kat5{ $rfBox.SelectionStart=0; $rfBox.SelectedText=("#![管理]  @BakColor:$szBkColor  @WndSize:$szWSize  @WndRtan:0`r`n"); return;}
##★移動 ##★Redo ##★操作歴Clear
  !Move{$rfBox.SelectionAlignment=$zpam;return;}  !Redo{if($rfBox.CanRedo -eq $true){$rfBox.Redo();};return;}  !Cler{$rfBox.ClearUndo();return;}
}; };
##★rfBoxフォント設定関数
function ssSetFont($zpm1,$zpm2,$zpm3){  if($zpm1-eq ""){ $zpm1=$rfBox.SelectionFont.name; if($zpm1-eq $null){ $zpm1=$szFont; }; };
  if($zpm2-eq ""){ $zpm2=$rfBox.SelectionFont.Size; if($zpm2-eq $null){ $zpm2=14; }; };
  if($zpm3-ne ""){ $zpm3=",style=$zpm3"; }else{ $zpm3=$rfBox.SelectionFont.style; if($zpm3-eq $null){ $zpm3="";}else{$zpm3=",style=$zpm3"; }; };
  $rfBox.SelectionFont =$global:szFONTinfo="$zpm1,$zpm2$zpm3";
};
##★フォーム表示
if( ($fln-ne $null)-and( $szFile-eq "") ){ ssTopView; }else{ ssFileSet $szFile; }; $mMain.ShowDialog();


[機能追加add(試行版)].. sys\wPshRtfMemo501_add.ps1 [Ver1.002]
◎List[Copy]釦→[ツール2]→[ps1アプリ更新]で更新[4.2項以降]、他は[4.2項]参照

##Ver1.002 wPshRsfMemo501.ps1 by ryu  2024/0830 ####################################
##●●[PSH-rsfメモ帳]拡張機能ファイル(add) by ryu

##★[ファイル][DBG]釦メニューに追加
##$global:szMnBas=$szMenuDBG; (ssDMnMSet "[Add編集]").add_Click({ & $szEditor $fladd  });

##★[編集]メニューに追加
$global:szMnBas=$szMenu5; $global:szMnBas=ssDMnMSet "!配置->";
  (ssDMnMSet "配置クリア").add_Click({ ssFnc2 !Haic 0 });
  (ssDMnMSet "配置->+8"  ).add_Click({ ssFnc2 !Haic 8  });
  (ssDMnMSet "配置->+16" ).add_Click({ ssFnc2 !Haic 16 });
  (ssDMnMSet "配置->+32" ).add_Click({ ssFnc2 !Haic 32 });
  (ssDMnMSet "箇条書き"   ).add_Click({ ssFnc2 !Kajo 1 });
  (ssDMnMSet "箇条書きOFF").add_Click({ ssFnc2 !Kajo 0 });
##★
$global:szMnBas=$szMenu5; $global:szMnBas=(ssDMnMSet "!行間->");
  (ssDMnMSet "間隔クリア").add_Click({ ssFnc2 !GyoK 0 });
  (ssDMnMSet "間隔up +2" ).add_Click({ ssFnc2 !GyoK 2 });
  (ssDMnMSet "間隔up +4" ).add_Click({ ssFnc2 !GyoK 4 });
  (ssDMnMSet "間隔up +8" ).add_Click({ ssFnc2 !GyoK 8 });
  (ssDMnMSet "間隔up +32").add_Click({ ssFnc2 !GyoK 32 });
  (ssDMnMSet "間隔dwn-2" ).add_Click({ ssFnc2 !GyoK -2 });
  (ssDMnMSet "間隔dwn-4" ).add_Click({ ssFnc2 !GyoK -4 });
##★
$global:szMnBas=$szMenu5;
  (ssDMnMSet "![右端折り切替]").add_Click({ if( $rfBox.WordWrap ){$rfBox.WordWrap=$false;}else{$rfBox.WordWrap=$true;}; });
  (ssDMnMSet "![検索窓]" ).add_Click({ $szSchBox1.Text=$szSetChaText; $global:szfindPos=$rfBox.SelectionStart; $szSchForm.Show(); }); 
  (ssDMnMSet "![TagList:##★]取得").add_Click({ ssTagListGet "720,600" });
  (ssDMnMSet "![TagList]前後表示").add_Click({ $fmTgBox.TopMost=$false });
##★
$global:szMnBas=$szMenu6;  ##★[色]メニューに追加
  (ssDMnMSet "!黒" ).add_Click({ ssFnc !Colr "Black" });
  (ssDMnMSet "!青" ).add_Click({ ssFnc !Colr "Blue"  });
  (ssDMnMSet "!アクア").add_Click({ ssFnc !Colr "Aqua"  });
  (ssDMnMSet "!赤" ).add_Click({ ssFnc !Colr "Red"   });
  (ssDMnMSet "!マジェンタ" ).add_Click({ ssFnc !Colr "Magenta" });
  (ssDMnMSet "!灰" ).add_Click({ ssFnc !Colr "Gray" });
  (ssDMnMSet "!白" ).add_Click({ ssFnc !Colr "White" });
  $aa=ssDMnMSet "---";
  (ssDMnMSet "!B:黒" ).add_Click({ ssFnc !ColB "Black" });
  (ssDMnMSet "!B:青" ).add_Click({ ssFnc !ColB "Blue"  });
  (ssDMnMSet "!B:アクア").add_Click({ ssFnc !ColB "Aqua"  });
  (ssDMnMSet "!B:赤" ).add_Click({ ssFnc !ColB "Red"   });
  (ssDMnMSet "!B:マジェンタ" ).add_Click({ ssFnc !ColB "Magenta" }); 
  (ssDMnMSet "!B:灰" ).add_Click({ ssFnc !ColB "Gray" });
  (ssDMnMSet "!B:白" ).add_Click({ ssFnc !ColB "White" });

$global:szMnBas=$szMenu7;  ##★[サイズ]メニューに追加
  (ssDMnMSet "!サイズ[8]" ).add_Click({ ssFnc !Size 8  });
  (ssDMnMSet "!サイズ[9]" ).add_Click({ ssFnc !Size 9  });
##(ssDMnMSet "!サイズ[10]").add_Click({ ssFnc !Size 10 });
  (ssDMnMSet "!サイズ[11]").add_Click({ ssFnc !Size 11 });
##(ssDMnMSet "!サイズ[12]").add_Click({ ssFnc !Size 12 });
  (ssDMnMSet "!サイズ[13]").add_Click({ ssFnc !Size 13 });
##(ssDMnMSet "!サイズ[13]").add_Click({ ssFnc !Size 14 });
  (ssDMnMSet "!サイズ[15]").add_Click({ ssFnc !Size 15 });
##(ssDMnMSet "!サイズ[16]").add_Click({ ssFnc !Size 16 });
  (ssDMnMSet "!サイズ[18]").add_Click({ ssFnc !Size 18 }); (ssDMnMSet "!サイズ[20]").add_Click({ ssFnc !Size 20 });
  (ssDMnMSet "!サイズ[22]").add_Click({ ssFnc !Size 22 }); (ssDMnMSet "!サイズ[24]").add_Click({ ssFnc !Size 24 });
  (ssDMnMSet "!サイズ[26]").add_Click({ ssFnc !Size 26 }); (ssDMnMSet "!サイズ[28]").add_Click({ ssFnc !Size 28 });

$global:szMnBas=$szMenu8;  ##★[フォント]メニューに追加
##(ssDMnMSet "![普通]").add_Click({ ssFnc !Fnt3 "Regular" });
##(ssDMnMSet "![太い]").add_Click({ ssFnc !Fnt4 "Bold" });
##(ssDMnMSet "![斜め]").add_Click({ ssFnc !Fnt4 "Italic" });
  (ssDMnMSet "![下線]").add_Click({ ssFnc !Styl "Underline" });
  (ssDMnMSet "![取消]").add_Click({ ssFnc !Styl "Strikeout" });
##
$global:szFnt=@("MS UI Gothic","BIZ UDゴシック","BIZ UDPゴシック","MS UI Gothic","MS ゴシック","MS Pゴシック","Meiryo UI","メイリオ",
                "HGゴシックE","HGPゴシックE","HG創英角ゴシックUB","HG創英角ポップ体" );
  (ssDMnMSet $szFnt[1] ).add_Click({ ssFnc !Fnt2 $szFnt[1] });
  (ssDMnMSet $szFnt[2] ).add_Click({ ssFnc !Fnt2 $szFnt[2] }); (ssDMnMSet $szFnt[3] ).add_Click({ ssFnc !Fnt2 $szFnt[3] });
  (ssDMnMSet $szFnt[4] ).add_Click({ ssFnc !Fnt2 $szFnt[4] }); (ssDMnMSet $szFnt[5] ).add_Click({ ssFnc !Fnt2 $szFnt[5] });
  (ssDMnMSet $szFnt[6] ).add_Click({ ssFnc !Fnt2 $szFnt[6] }); (ssDMnMSet $szFnt[7] ).add_Click({ ssFnc !Fnt2 $szFnt[7] });
  (ssDMnMSet $szFnt[8] ).add_Click({ ssFnc !Fnt2 $szFnt[8] }); (ssDMnMSet $szFnt[9] ).add_Click({ ssFnc !Fnt2 $szFnt[9] });
  (ssDMnMSet $szFnt[10]).add_Click({ ssFnc !Fnt2 $szFnt[10]}); (ssDMnMSet $szFnt[11]).add_Click({ ssFnc !Fnt2 $szFnt[11]});
  (ssDMnMSet $szFnt[12]).add_Click({ ssFnc !Fnt2 $szFnt[12]});

$global:szMnBas=$szMenuA;  ##★[ツールA]メニューに追加
$aa=ssDMnMSet "----";
(ssDMnMSet "![年月日(曜)時間]").add_Click({ $rfBox.SelectedText=get-date -format "yyyy年MM月d日(ddd) HH:mm:ss" });
(ssDMnMSet "![yyyy/mmdd(曜)]").add_Click({ $rfBox.SelectedText=get-date -format "yyyy/MM/dd(ddd)" });
(ssDMnMSet "![大きいカレンダ]").add_Click({ ssBigCalen });
(ssDMnMSet "![カレンダ縦列の生成]" ).add_Click({ ssKeyInpCmp !Inp5 });
$aa=ssDMnMSet "----";
(ssDMnMSet "![マクロ一覧]" ).add_Click({ MsgBox ($szLstMacro.replace(","," ")) "960,520"; $mBox.BackColor="#E8FFD0";});
(ssDMnMSet "![アプリ変数表示]").add_Click({ ssToolAct !AplD });

$szMenuB=(ssDMnMenu "ツールB" );##★ツールB登録
(ssDMnMSet "![Txt変換:UTF8->ANSI]" ).add_Click({ ssUtf8ANSI });
(ssDMnMSet "![rtf->TxtBox出力]").add_Click({ ssFnc2 !Tout ;});
$aa=ssDMnMSet "----";
$aa=ssDMnMSet "----";
(ssDMnMSet "![Win設定]" ).add_Click({ start ms-settings: });
(ssDMnMSet "![PSH窓]").add_Click({ Start powershell });
(ssDMnMSet "![PSH管理者]").add_Click({ Start -Verb runas powershell });

$szMenuC=(ssDMnMenu "ツールC" );##★ツールC登録 ##(ssDMnMSet "![----]").add_Click({;});
$szMenuD=(ssDMnMenu "ツールD" );##★ツールD登録 ##(ssDMnMSet "![----]").add_Click({;});

##★HELP登録
$szMenuD=ssDMnMenu "HELP";
(ssDMnMSet "[背景色サイト]").add_Click({ start "https://ryupapa008.blogspot.com/p/blog-page_6.html" });
(ssDMnMSet "![HELP操作説明]" ).add_Click({ ssHelpView 0 0 });
(ssDMnMSet "![日めくりカレンダ]").add_Click({ start "https://www.himekuricalendar.com/" }); ##★
$aa=ssDMnMSet "----";
$aa=ssDMnMSet "----";
(ssDMnMSet "![<Help編集>]"  ).add_Click({ if( Test-Path $szHelpDoc ){ $zcc=$szHelpDoc }else{ $zcc=$fladd }; & $szEditor $zcc });

##★ユーザ拡張(usr)登録 ★ツール拡張(etc)登録
function global:ssWClkUsrCmd($ln,$zcc){ return 0;};
$global:fladd2=$szTool.replace(".ps1","_usr.ps1"); if( Test-Path $fladd2 ){ (ssDMnMSet "![<usr編集>]" ).add_Click({ & $szEditor $fladd2 }); };
$global:fladd3=$szTool.replace(".ps1","_etc.ps1"); if( Test-Path $fladd3 ){ (ssDMnMSet "![<etc編集>]" ).add_Click({ & $szEditor $fladd3 }); };

##★コンテキ追加
(ssRBtMenu "yyyy/mmdd(曜)").add_Click({ $rfBox.SelectedText=get-date -format "yyyy/MM/dd(ddd)" });
##(ssRBtSMnu "SubSetTest" ).add_Click({;});

##★Web検索List&スーパ検索処理
##
$global:szLstMacro="【マクロ一覧V2.0】
★Web検索:例[&KKK コピペ gui]でダブルクリック[WC] 
#-&マクロ,-名称,----------Web-Url------------------------------------#
  &KKK, Msn検索,       https://www.bing.com/search?q=
  &KKG, Google検索,    https://www.google.co.jp/search?q=
  &KKY, Yahoo検索,     https://search.yahoo.co.jp/search?p=
  &KKB, Bing検索,      https://www.bing.com/search?q=
  &KKA, Amazon,        https://www.amazon.co.jp/s?k=
  &KKM, モノタロウ,    https://www.monotaro.com/s/?c=&q=
  &KKR, R楽天市場,     https://search.rakuten.co.jp/search/mall/
  &KK5, 一括検索5,    KKK/KKG/KKY/KKA/KKR
  &KK3, 一括検索3,    KKA/KKM/KKR
  
★(mainで登録)
  &FSet,  file名   ##説明文 (マルチ画面窓で起動)
  &FSet&, file名   ##説明文 (新規ファイル指定可能)
  &FS,    説明文  ;file名   ## &FSetに同じ
  &FS&,   説明文  ;file名   ## &FSet&に同じ
  
";

##★[WC]起動 [&XXXX]マクロの登録
##
function global:ssWClkCmd($ln,$zcc){ $zcmd=$zcc.split(" ")[0]; $zcc1=($zcc.substring(5)).trim(); ##dbc "$ln  $zcmd  $zcc1";
##   switch( $zcmd ){
##   "&FS&"{ $zcc=($zcc.split(";"))[1].trim(); Iex("ssFileSet `"$zcc`""); return 1; }
##   "&FS" { $zcc=($zcc.split(";"))[1].trim(); $zcc=Iex("`"$zcc`""); if( Test-Path $zcc ){ ssPshAct 1 "$szTool $fln $zcc" }; return 1; }
##   };
   switch( $zcmd.subString(0,3) ){
   "&KK" { return (ssWebSach $zcmd  !cp1 $zcc1); } ##List利用
   "&KB" { return (ssWebSach $zcmd  !cp5 $zcc1); } ##List利用
   }; return 0;
};

##★マクロList処理
##
function global:ssWebSach($zcmd,$zsub,$zcc1){ $zcm=$szLstMacro.split(",`n");
  for($ii=0; $ii -lt $zcm.length; $ii++ ){ if(($zcm[$ii].trim()) -ne $zcmd){continue;}; break; }; $zcc2=($zcm[$ii+2]).trim(); 
  if( $zcc2.startsWith("http") ){ $zcc2+=$zcc1; Iex( "Start `'$zcc2`'" ); Start-Sleep -m 500; return 1; };
  switch($zsub){
  !cp1 { if( [int]($zcmd.substring(3,1)) -ge 1 ){ foreach($cc in $zcc2.split("/")){ if($cc.length -eq 3){ ssWebSach "&$cc" !cp1 $zcc1; }; }; return 1; };  }
  !cp5 { if( $zcc2.startsWith("!") ){ ssKabView $zcc2 $zcc1; }; return 1; }
  }; return 0;
};
function global:ssKabView($zcc2,$zcc1){}; ##ダミー登録

##★文字検索DLG窓
$szSchFont=New-Object System.Drawing.Font("メイリオ",12); $global:szfindPos=0; $global:szShBox=$rfBox;
$global:szSchForm=New-Object Form -Pro @{ Text="【検索Box】"; Size="520,108"; MaximizeBox =$False; MinimizeBox=$false; AutoSizeMode="GrowAndShrink"; 
    Topmost=$True; StartPosition="CenterScreen"; }; $szSchForm.Add_Closing({ $_.Cancel =$True; $szSchForm.Visible =$false; });
##  ★入力BOX   ★釦0  ★釦1
$global:szSchBox1=New-Object TextBox -Pro @{ Font=$szSchFont; Location="10,2" ; Size="400,16";}; 
function ssSchBtn($pm0,$pm1,$pm2){ $zob=New-Object Button -Pro @{ Text=$pm0; Location=$pm1; Size=$pm2; Font=$szSchFont; }; return $zob; };
    ( $szSchBtn0 =ssSchBtn "【Top】"  "420,2"   "80,30" ).Add_Click({ $global:szSetChaText=$szSchBox1.Text; $aa=ssSchFind 0 $szShBox }); 
    ( $szSchBtn1 =ssSchBtn "【検索】" "420,34"  "80,30" ).Add_Click({ $global:szSetChaText=$szSchBox1.Text; $aa=ssSchFind 1 $szShBox }); 
$szSchForm.Controls.AddRange(@($szSchBox1, $szSchBtn0, $szSchBtn1)); $szSchForm.Add_Click({ $rfBox.Focus() });

##  ★検索go(zwBox null時 rfBox)  ##0:Top  ##1:継続
function global:ssSchBoxSet($zwBox){ $szSchBox1.Text=$szSetChaText; $global:szfindPos=$zwBox.SelectionStart; $global:szShBox=$zwBox; $szSchForm.Show(); }
function global:ssSchFind($zcmd,$zwBox,$zcc){ if($zcc -eq $null){ $zcc=$szSetChaText; }; if($zcmd -eq 0){ $global:szfindPos=0; };
    if( $zwBox -eq $null ){ $zwBox=$rfBox; }; $zPos =($zwBox.Text).indexof($zcc,$szfindPos); if($zPos -ge 0 ){;}else{ $zwBox.Focus(); return 1; };
    $zwBox.Select($zPos, $zcc.length); $zwBox.ScrollToCaret(); $zwBox.Focus(); $global:szfindPos=$zPos+1;
};

##★【STag [文字] pm】移動 ## [WebTable] 移行で検索、、、
$global:szsTagIndx="[TagTable]";  ##★sTagの検索開始文字[TagTable]
function global:sTag($zcc,$zpm){ $zcc=($zcc.split(" "))[0]; $global:szfindPos=($rfBox.Text).indexof($szsTagIndx);
    if( $zpm -eq 0){ $rfBox.WordWrap=$false }; $rfBox.SelectionStart=$rfBox.Text.Length; $rfBox.ScrollToCaret(); (ssSchFind 1 $rfBox $zcc);
}; 
##★TagListBoxから[WC]で移動  [##★[XXX]]の行へ移動
$global:szTagListCha="##★";  ##★TagList作成文字
function global:ssTagListGet($zpam1){ $zDat=($rfBox.Text).replace("`r",""); $zcc0="";
    foreach($cc in $zDat.split("`n") ){ if( $cc.startsWith($szTagListCha) ){;}else{ continue;}; $zcc0+=$cc+"`n"; };
    $ww=$zpam1; $global:fmTgBox=New-Object Form -Pro @{ Size=$ww; Text="【移動Tag-List】" ; TopMost=$True; }; 
    $global:tgBox=New-Object TextBox -Pro @{ Font="$szFont,14"; Dock="Fill"; Multiline=$True; AcceptsReturn=$True; ScrollBars=[ScrollBars]::Vertical;};
    $fmTgBox.Controls.Add($tgBox); $tgBox.Text=($zcc0.replace("`n","`r`n")); $tgBox.SelectionStart=0; $fmTgBox.Show(); $tgBox.WordWrap=$false; 
    ##★[WC]処理
    $tgBox.Add_DoubleClick({ $ln=((($tgBox.Text).substring(0,$tgBox.SelectionStart)).split("`n")).count-1;
        $zcc=($tgBox.Lines[$ln]).trim(); if( $zcc.length -le 4){ return; }; 
        $rfBox.SelectionStart=$rfBox.Text.Length; $rfBox.ScrollToCaret(); (ssSchFind 0 $rfBox $zcc);##★PSH窓TXT
    });
    $global:conMenu=$tgBox.ContextMenuStrip =New-object ContextMenuStrip -Pro @{ Font="BIZ UDゴシック,12"; };
    (ssRbtMenu "[検索窓]" ).add_Click({ ssSchBoxSet $tgBox }); (ssRbtMenu "[コピー]").add_Click({ $tgBox.Copy() });
    (ssRbtMenu "[Top移動]").add_Click({ $rfBox.SelectionStart=0; $rfBox.ScrollToCaret() });
};

##★[--]大きいカレンダ  ##★
function ssBigCalen(){ $fmCal=New-Object Form -Pro @{ Location="100,50"; Size="380,500"; };
  $zMonCal=New-Object MonthCalendar -Pro @{ Font="'Meiryo UI',28"; TrailingForeColor="192,192,0"; }; 
  $fmCal.Controls.Add($zMonCal); $fmCal.Show();
};
##★[--]UTF8->ANSI変換  ##★
function ssUtf8ANSI(){ if( ($szFile2 -ne "")-and (Test-Path $szFile2)-and ($szFile2.endsWith('.txt')) ){;}else{ return; };
  $rfBox.Text=Cat $szFile2 -Raw -Encoding UTF8; $rfBox.SelectionStart=0;
  if( (MsgYesNo "注:UTF8->ANSI変換OKですか?(Y/N)" $szFile2)-eq "Yes" ){ $global:szFile2=""; return; }; $rtBox.Text=Cat $szFile2 -Raw;
};
##★[41]ツール処理(カスタマイズ)
##
function ssToolAct($zcmd,$zpam){ switch($zcmd){
##★アプリ変数表示
 !AplD{ $zcc=(pwd); $zVer1=((cat $szTool)[0].split(" "))[0]; $zVer2=((cat $fladd)[0].split(" "))[0];
     $zcc1 =("[RtfMemo] $zVer1  [RtfAdd] $zVer2").replace("#","");
     $zcc1+= "`n[編集] $szFile`n[戻り] $szFlBak1`n[TopPage] $fln`n[Dir] $zcc" ;
     $zcc1+= "`n[Apl] $szTool`n[add] $fladd`n[usr] $fladd2`n`n[editor] $szEditor";
     MsgBox $zcc1 "820,450";
     return;}
};};
##(ssDMnMSet "![アプリ変数表示]").add_Click({ MsgBox "[編集] $szFile`n[戻り] $szFlBak1`n[Dir] $szFileDir`n[editor] $szEditor`n[Tool] $szTool`n[TopPage] $fln" });


##★拡張機能メニュ処理(★配置 ★箇条書き ★行間 ★TxtBox出力)
function ssFnc2($zcmd,$zpam){ $rfBox.ContextMenuStrip.Close(); switch($zcmd){
 !Haic{ if($zpam -eq 0 ){ $rfBox.SelectionIndent=0; $rfBox.SelectionBullet=$false; }else{ $rfBox.SelectionIndent +=$zpam; }; return;}
 !Kajo{ if($zpam -eq 0 ){ $rfBox.SelectionBullet=$false; }else{ $rfBox.SelectionBullet=$true; }; return;}
 !Gyok{ if($zpam -eq 0 ){ $rfBox.SelectionCharOffset =0; }else{ $rfBox.SelectionCharOffset +=$zpam; }; return;}
 !Tout{ MsgBox $rfBox.Text "1180,720"; return; }
};};

##★月日の生成(cmd=//0:順列//1:逆列 mm1=月 ii0=曜日No(0...6)
##
function global:ssWeakMake( $zcmd,$zyy0,$zmmm ){ if( $zmmm -gt 12 ){ $zyy0++; $zmmm-=12;};
    $zii0= (get-date (get-date -format "$zyy0/$zmmm/01")).DayOfWeek.value__ ; $zcc2 ="$zyy0"+"年`r`n"; 
    $zdd2=31; if( $zmmm-eq 2 ){ $zdd2=29; }; if( ($zmmm-eq 4)-or ($zmmm-eq 6)-or ($zmmm-eq 9)-or ($zmmm-eq 11) ){ $zdd2=30;};
    $zcm0="日,月,火,水,木,金,土,日".split(","); $dd0 =$zmmm*100+1; if( $dd0 -lt 1000){ $zcc1="0"; }else{ $zcc1=""; };
    for($ii=0; $ii -lt $zdd2; $ii++){ $cc="["+$zcc1+$dd0+"("+$zcm0[$zii0%7]+")`r`n"; $dd0++; $zii0++;
        $zcc=$cc.substring(0,3)+"/"+$cc.substring(3); if($zcmd -eq 0){ $zcc2+=$zcc; }else{ $zcc2=$zcc+$zcc2; };
    };  Set-Clipboard $zcc2; dbg "【クリップボードにCopy】`n`n$zcc2";
};

##★キー入力BOX窓:fmKeyBox(KeyBox)  ##キー入力[return]で起動
##  cmd:処理No  ch0:入力コメント  ch1:初期値
function global:ssDlgKeyInp( $zcmd, $zchr0, $zchr1){ $global:fmKeyBox=New-Object Form -Pro @{ Size="600,100"; StartPosition ="manual"; TopMost=$true; };
    $global:KeyBox =New-Object TextBox -Pro @{ Location ="5,5"; Size ="575,50"; Font ="Meiryo UI,12";}; $fmKeyBox.Controls.Add( $KeyBox );
    $fmKeyBox.Location=New-Object Drawing.Point( ([Cursor]::Position.X -300),([Cursor]::Position.Y -20) ); $fmKeyBox.Show();
    $global:szKeyInpMode =$zcmd; $fmKeyBox.text =$zchr0; $KeyBox.text =$zchr1;
    $KeyBox.Add_KeyPress({ if( $_.KeyChar -ne "`r" ){ return; }; $_.Handled = $true; $fmKeyBox.Visible = $false;
        $zcc0 =$KeyBox.Text; if( $zcc0 -ne ""){ ssKeyInpCmp $szKeyInpMode $zcc0 ; };
    });
};
##★キー入力窓&[return]処理の登録
function global:ssKeyInpCmp($zcmd,$zpam){ switch($zcmd){  0{ Start Cmd -Arg "/k $zpam"; return;}
  !ITst { (ssDlgKeyInp  !CTst  "【キー入力例を記載】例 AAAAA [RETURN]" "AAAAAA" ); return;}
  !CTst { dbg "$zcmd`n$zpam" ;return;}
  !Inp5 { (ssDlgKeyInp  !Cmp5  "【月/年の指定】例  10/2024 [RETURN]" (Get-Date -Format MM) ); return;}
  !Cmp5 { $zcm = ($zpam.trim()).split("/"); ##$zdd0 = [int]( Get-Date -Format yyyy ); ##$zdd1 = [int]$zpam; 
      $zdd1=[int]($zcm[0]); if( $zcm[1]-eq $null ){ $zdd0=[int](Get-Date -Format yyyy); }else{ $zdd0=[int]($zcm[1]); };
      ssWeakMake 0 $zdd0 $zdd1; return;}
};};
##★[38]Help処理
$szHelpDoc="$szToolDir\wPshHelpDoc101.txt";
function ssHelpView($zcmd,$zpam){
    if( Test-Path $szHelpDoc ){ $zcc=(Cat $szHelpDoc -Raw); }else{ $zcc=(Cat $fladd  -Raw); $zcc=$zcc.substring($zcc.indexof("<##★"+"[HELP]")+1); }; 
    $zcc=$zcc.replace("`r",""); MsgBox $zcc "1140,780";  if($mBox -eq $null){ return; }; 
    $mBox.Add_DoubleClick({ $ln=((($mBox.Text).substring(0,$mBox.SelectionStart)).split("`n")).count-1; $zcc=(($mBox.Lines[$ln]-split"##")[0]).trim();
        $cc="https://ryupapa008.blogspot.com"; $zcc=$zcc.replace("@GUr4","$cc/2024").replace("@GUr5","$zcc0/2025").replace("@GUr6","$cc/2026").replace("@GUrl",$cc);
        if( $zcc.startsWith("!") -and $zcc.contains("http") ){ Iex("Start `'"+(($zcc.split(";"))[1]).trim()+"`'"); return; };
    });
};
##★ユーザ拡張ファイル(usr)登録
if( Test-Path $fladd2 ){ . $fladd2; };


<##★[HELP]画面 ####################################################
!【サイトマップ】; @GUrl/p/blog-page_14.html ##★[WC]
!【操作説明】;     @GUr4/09/psh.html         ##★[WC]
----
(1)1行目:[#!  @BakColor:#F0E0C0   @WndSize:1080,740]で指定。
!  [@BakColor:#F0E0C0]で背景色。;  @GUrl/p/blog-page_6.html ##★[WC]
   [@WndSize:1080,740]で窓面寸法(幅,高さ)。[ツールA]->[1行目:背景色/窓]押下で設定可能。
----
(2.1)[&]行:PSH起動。[&&]行:窓無し起動。[&&&]行:継続起動(内部関数dbg/MsgBoxを利用可能)。
  ,2)[;]行:行を連結しPSH処理を実行。
  ,3)[>]行:DOS-CMD起動。[>>]行:窓無し起動。注.[> cd Dir]の利用不可。
  ,4)[&FSet& File名]行:ファイル(rtf)の表示/編集。(&FS&  コメント; File名)
  ,5)[&FSet  File名]行:新しい窓でファイル(rtf)の表示/編集。(&FS  コメント; File名)
  ,6)[!コメント; Http:xxxxxxxxxxxx] or [Http:xxxxxxxxxxxx]:指定Webサイト表示。
----
(3.1)ファイル(.rtf)を[D&Drop]で表示/編集。
  .2)ファイル(.txt)又はフォルダのとき、PSHメモ帳で表示/編集。
  .3)ファイル(.ps1)を[D&Drop]でPSH起動。
----
(4.0)◎ファイル◎
  .1)[Dir/File名]取得、再帰取得...現在のDir位置からDir名/File名を取得、又はDir以下の再帰取得。
  .2)File再読取...現在の編集内容をキャンセルして再読取。
  .3)前Fileへ戻り...
  .4)File読取窓/File保存窓/BackUPフォルダ...
  .5)[TopPage]表示/反映/編集..TopPage利用のとき
  .6)[DBG]->rtf編集/add編集...
----
(5.0)編集
  .1)移動(左端/中央/右端)
  .2)配置(クリア/+8/+16/+32/箇条書ON/OFF)
  .3)行間(クリア/+2/+4/+8/+32/-2/-4
  .4)右端折返し
  .5)検索窓/TagList取得
----
(6.0)マウス右釦
  .1)元に戻す/切り取り/コピー/張付け/全選択/
  .2)移動Top/移動Bottom
----
(7.0)文字色...色DLG窓、各種文字色指定
(8.0)サイズ.....各種文字寸法指定
(9.0)フォント.....フォントDLG窓、普通/太い/斜め/各種フォントList
----
(A.1){保存}...File表示の保存。
  .2){書式取得}->{反映}...マウス指定位置の書式を取得し、他の行へ反映。
  .3){explorer}..現在の位置でexplorer起動。
  .4){図形}....ペイントを起動し画像をペイント画面に取得後、prtメモ帳へ張付けで編集可能。
  .5){Word帳}..Windows設定のワードパッド又はワードで開く
  .6) Help.....

##>


[ユーザ追加usr].. sys\wPshRtfMemo501_usr.ps1


[PshDirツリー(改善DBG中)].. sys\wPshDirTree201.ps1 [Ver1.10]
◎List[Copy]釦→[ツール2]→[ps1アプリ更新]で更新[4.2項以降]、他は[4.2項]参照
##Ver1.10 wPshDirTree201.ps1 by ryu #######
##●フォルダTreeView処理 by ryu
##  treeMMode=0:単独起動、1:****** PSHメモ帳起動
#############
using namespace System.Windows.Forms;
if( $args[0] -eq $null ){ $global:treeMMode=0; Add-Type -AssemblyName System.Windows.Forms,System.Drawing;
    function dbg($zcc){ [MessageBox]::Show($zcc, "MSG");}; function dbc($zcc){ Write-Host $zcc;}; $global:sztreeStart="c:";
}else{ if( Test-Path $args[0] ){ $global:sztreeStart=$args[0]; }else{ $global:sztreeStart="c:"; }; };

##if($treeMMode -eq 0){;}else{
##    if($treeMMode -ne 1){ $global:treeMMode=1; }else{ (ssSetDirTree $treeView $sztreeStart); $fmTree.Show(); return; };
##};

##●メイン窓の生成( 起動pam: 高さHH0設定 )
$global:fmTreeHH0=680; $global:fmTreeWW0=360;
$global:fmTree =New-Object Form -Pro @{ Size="$fmTreeWW0,$fmTreeHH0"; Text="PshTree[V1.10] [ "+$sztreeStart+" ]"; StartPosition="Manual";
     Location=""+( ([Cursor]::Position.X)-$fmTreeWW0-30 )+","+(([Cursor]::Position.Y)-30); MinimizeBox=$false; MaximizeBox=$false; };
     $fmTree.Add_Closing({ $_.Cancel =$True; $fmTree.Visible=$false;});

##●メニュ行の生成
$global:treeMMu =New-Object MenuStrip -Pro @{ Font="'Meiryo UI',12"; }; $fmTree.MainMenuStrip =$treeMMu; $fmTree.Controls.Add($treeMMu);

##●ツリー窓の生成
$global:treeView =New-Object TreeView -Pro @{ Location="3,30"; Size=""+($fmTreeWW0-3-16)+","+($fmTreeHH0-30-45);
    Font="'Meiryo UI',14"; BackColor="#F0F0E0"; }; [void]$fmTree.Controls.Add($treeView);

##●メイン窓の枠変更
$fmTree.Add_ResizeEnd({  $WW0=$fmTree.DesktopBounds.Width;  $HH0=$fmTree.DesktopBounds.Height;
    $global:treeView.Size =""+($WW0-3-16) +"," +($HH0-30-45); });

##●メニュ生成関数
function ssMMuSet0($zcc){ $zmm=New-Object ToolStripMenuItem; $zmm.Text=$zcc; $treeMMu.Items.AddRange($zmm); return $zmm; };
function ssMMuSet1($zcc){ $zmm=New-Object ToolStripMenuItem; $zmm.Text=$zcc; $szTreeMenu.DropDownItems.AddRange($zmm); return $zmm; };

##●メニュ設定
  $global:szTreeMenu=$menuItem1=ssMMuSet0("[[ Menu ]]");
  (ssMMuSet1 "TreeClose"  ).add_Click({ ssTreeAct !TCls });
  (ssMMuSet1 "Tree再表示" ).add_Click({ ssTreeAct !TRvi });
  (ssMMuSet1 "-----"      ).add_Click({;});
  $global:szTreeMenu=(ssMMuSet1 "フォント寸法" );
      (ssMMuSet1 "12").add_Click({ ssTreeAct !FSiz 12 }); (ssMMuSet1 "14").add_Click({ ssTreeAct !FSiz 14 });
      (ssMMuSet1 "16").add_Click({ ssTreeAct !FSiz 16 }); (ssMMuSet1 "18").add_Click({ ssTreeAct !FSiz 18 });
      (ssMMuSet1 "20").add_Click({ ssTreeAct !FSiz 20 }); $global:szTreeMenu=$menuItem1;
  (ssMMuSet1 "Winフォルダ参照").add_Click({ if( $dFderBox.ShowDialog() -eq [DialogResult]::OK ){ ssFileSet $dFderBox.SelectedPath }; });
  (ssMMuSet1 "[<Tree編集>]").add_Click({ if( Test-Path $szDirTree ){ Iex("$szEditor $szDirTree") }; });

##●ドライブ設定(最大8個)
##$zcc=(GET-WMIOBJECT "win32_logicaldisk").DeviceID; 
function ssSetTreeMnMenu( $zcc ){ $global:szPcDrv=$zcc.split(" "); $nn=$szPcDrv.count-1; 
  (ssMMuSet0("["+$szPcDrv[0]+"]")).add_Click({ ssTreeFnc1($szPcDrv[0]) }); if($nn -le 0){return;};$nn--;
  (ssMMuSet0("["+$szPcDrv[1]+"]")).add_Click({ ssTreeFnc1($szPcDrv[1]) }); if($nn -le 0){return;};$nn--;
  (ssMMuSet0("["+$szPcDrv[2]+"]")).add_Click({ ssTreeFnc1($szPcDrv[2]) }); if($nn -le 0){return;};$nn--;
  (ssMMuSet0("["+$szPcDrv[3]+"]")).add_Click({ ssTreeFnc1($szPcDrv[3]) }); if($nn -le 0){return;};$nn--;
  (ssMMuSet0("["+$szPcDrv[4]+"]")).add_Click({ ssTreeFnc1($szPcDrv[4]) }); if($nn -le 0){return;};$nn--;
  (ssMMuSet0("["+$szPcDrv[5]+"]")).add_Click({ ssTreeFnc1($szPcDrv[5]) }); if($nn -le 0){return;};$nn--;
  (ssMMuSet0("["+$szPcDrv[6]+"]")).add_Click({ ssTreeFnc1($szPcDrv[6]) }); if($nn -le 0){return;};$nn--;
  (ssMMuSet0("["+$szPcDrv[7]+"]")).add_Click({ ssTreeFnc1($szPcDrv[7]) }); if($nn -le 0){return;};$nn--;
};
##●DIRメニュ釦処理
function global:ssTreeFnc1($zddr){ ssSetDirTree $treeView $zddr ; return; };

##●コンテキストメニュの生成
$global:treeCMenu =New-object ContextMenuStrip -Property @{ Font="'Meiryo UI',12";}; $fmTree.ContextMenuStrip=$treeCMenu;
function ssSetCMenuSub0( $zcha ){ $aa=$treeCMenu.Items.Add( ($zcc =New-Object ToolStripMenuItem) ); $zcc.Text=$zcha; return $zcc;};
  (ssSetCMenuSub0 "M.[readMe]表示" ).add_Click({ ssTreeFnc31 !DLvi 0 });
  (ssSetCMenuSub0 "M.[Dir窓]表示"  ).add_Click({ ssTreeFnc31 !DLvi 3 });
  (ssSetCMenuSub0 "M.[List窓]表示" ).add_Click({ ssTreeFnc31 !DLvi 1 });
  (ssSetCMenuSub0 "M.[readMe+List]").add_Click({ ssTreeFnc31 !DLvi 2 });
  (ssSetCMenuSub0 "[explorer]"     ).add_Click({ ssTreeFnc31 !DLvi 5 });
  (ssSetCMenuSub0 " ----"      ).add_Click({ });
  (ssSetCMenuSub0 "[Tree更新]" ).add_Click({ ssTreeFnc31 !Tnew });
  (ssSetCMenuSub0 " ----"      ).add_Click({ });
##  (ssSetCMenuSub0 "[Dir作成]"  ).add_Click({ ssTreeFnc32 !MkDr });
##  (ssSetCMenuSub0 "[名称変更]" ).add_Click({ ssTreeFnc32 !ReNm });
##  (ssSetCMenuSub0 "[ごみ箱]"   ).add_Click({ ssTreeFnc32 !Dust });
  (ssSetCMenuSub0 " ----"      ).add_Click({ });
  (ssSetCMenuSub0 "[プロパティ]"  ).add_Click({ ssTreeFnc32 !Prty });

##●ツリー項目の再帰生成(各ノード)
Function global:ssAddNodes( $zzMod, $zzCmd, $zzNode, $zzObj ){ if( $zzObj -is [System.IO.DirectoryInfo] ){;}else{ return;};
    if( $zzMod -eq 0){ $zNodeSub = $zzNode.Nodes.Add($zzObj.FullName, $zzObj.Name); if( $zzCmd -gt 1 ){ return;};}
    else{ $zNodeSub= $zzNode; $nn=$zzNode.Nodes.Count; for($ii=0;$ii -lt $nn; $ii++){ $zzNode.Nodes[0].Remove();}; }; 
    $FSObjSub = $zzObj | Get-ChildItem -Directory -ErrorAction SilentlyContinue;
    $zcnt=0; foreach( $zobj in $FSObjSub ){ $zcnt++; if( $zcnt -gt 30 ){ break;}; ssAddNodes 0 ($zzCmd+1) $zNodeSub $zobj; };
};

##●ツリー開始項目(開始ノード)の生成
Function global:ssSetDirTree( $zzNodeVi, $zzDrvs ){ $treeView.Nodes.Clear();
    foreach( $zddr in $zzDrvs ){ 
        if( $zddr.indexof("\") -lt 0 ){ $global:szTreeDirBase="";}else{ $global:szTreeDirBase=(Split-Path $zddr )+"\";}; ##dbc $szTreeDirBase;
        if( Test-Path $zddr ){ $zDrv= Get-Item -Path (Join-Path -ChildPath \ -Path $zddr); ssAddNodes 0 0 $zzNodeVi $zDrv; };
    };
    $TreeView.Nodes[0].Expand();
};
$global:szTreeDirBase="";
##●項目(ノード)の選定処理
##●選択後
$treeView.Add_AfterSelect({ $zSelctNode=$treeView.SelectedNode;
    if( $zSelctNode.IsSelected ){;}else{ return;}; if( $zSelctNode.Level -le 0){ return;};
    $nn=$zSelctNode.Nodes.Count; if( $nn -eq 0 ){ return;};
    if( $nn -eq $zSelctNode.GetNodeCount($true) ){ ##dbc ("Ct:" +$nn +":"+ $zSelctNode.GetNodeCount($true) );
        $zcc=$zSelctNode.FullPath;  $zcc=$szTreeDirBase+$zcc;  ##dbc "B:$szTreeDirBase  DDD:$zcc"
        $zDrv= Get-Item -Path (Join-Path -ChildPath \ -Path $zcc);
        ssAddNodes 1 0  $zSelctNode $zDrv;
    };
    if( $zSelctNode.IsExpanded ){;}else{ $zSelctNode.Expand();}
});

##●ダブルクリック選択
$treeView.Add_NodeMouseDoubleClick({ if( $_.Button -ne "Left" ){ return; }; $zSelctNode=$treeView.SelectedNode;
    if( $zSelctNode.IsSelected ){;}else{ return;}; if( $zSelctNode.Level -le 0){ return;};
    if( $zSelctNode.IsExpanded ){;}else{ $zSelctNode.Expand();}
    $zcc=$zSelctNode.FullPath;  ##$zSelectNode.Parent.Text  ##$zSelectNode.Text;
    $zcc=$zcc.replace(":\\",":\"); ssPshDirSet $szLstViMode $zcc;
});

##●ファイル取得&表示 [0:readMe表示] [1:List] [2:List/readMe] [3:Dir窓表示] [5:explorer]
$global:szLstViMode=0;
function global:ssPshDirSet($zcmd,$zfl){ if( ($zfl -eq "")-or($zfl -eq $null) ){return;}; 
    if( Test-Path $zfl -PathType Container ){;}else{ return;}; if( $zcmd -eq 5 ){ explorer $zfl; return;};
    $zcc5="$zfl\!readMe.txt"; $global:szLstViMode=$zcmd;  ##dbc $zcc;
    switch($zcmd){
      0{ if( $treeMMode -eq 0 ){ ssDlgDirView 10 $zfl; return; }; ssFileSet($zfl); return; }
      1{ ssDlgDirView  0 $zfl; return;}
      2{ ssDlgDirView  0 $zfl; if( $treeMMode -eq 0 ){ ssDlgDirView 10 $zfl; return; }; ssFileSet($zfl); return; }
      3{ ssDlgDirView 10 $zfl; return;}
    };
};

##●フォルダ表示(cmd=10:現在DIR 11:再帰表示)
##
function global:ssDlgDirView($zcmd, $zdir){ if($zdir-eq $null){ $zdir=(pwd);}; $zcc="[ダブルクリック起動]`n"; $global:szViDir=$zdir;
  switch($zcmd){
   0{ ssDirBox ("$zdir`r`n`r`n"+(( dir $zdir -name )-join "`r`n")+"`r`n" ); $fmDBox.Text="【Dir-List】$zdir";
      return;}
  11{ $zcc +="[$zdir]`n___[Dir/File]_________________________________________`t#__`n";
      dir $zdir -name -rec |%{ $nn=[System.Text.Encoding]::GetEncoding("shift_jis").GetByteCount($_); 
          if( $nn -gt 52 ){ $nn=2; }else{ $nn=52-$nn; }; $zcc+=$_ + (" "*$nn)+"`t## `n" ;
      };
      break;}
  10{ $zcc +="[$zdir]`n___[Dir/File]________________________________`t#__[Date/Time]________[Size](D=1)`n";
      dir $zdir|%{ $nn=[System.Text.Encoding]::GetEncoding("shift_jis").GetByteCount($_.Name);
         if( $nn -gt 46 ){ $nn=2; }else{ $nn=46-$nn; }; $zcc+=($_.Name + (" "*$nn)) ;
         $zcc+="`t## "+($_.LastWriteTime)+(([int]$_.Length).ToString("#,#")).PadLeft(10)+"`n";
      };
      break;}
  }; 
  ##★
  ssDirBox $zcc "960,720" ; $fmDBox.Text="【Dir-List】$zdir";
  
  $dBox.AcceptsTab=$true; $dBox.WordWrap=$false; $dBox.BackColor="#EAF4FE";
  ##★[WC]処理
  $dBox.Add_DoubleClick({ $ln=((($dBox.Text).substring(0,$dBox.SelectionStart)).split("`n")).count-1; 
      $zcc=(($dBox.Lines[$ln]-split"##")[0]).trim(); if($zcc.length -le 2){return; }; $zcc="$szViDir\$zcc";
      if( Test-Path $zcc -PathType Container ){ explorer $zcc; return; };
      if( Test-Path $zcc ){ if($zcc.endswith('.rtf') ){ ssRtfMemo $zcc }else{ Start -NoN Cmd -Arg "/c `"$zcc`""; }; };
  });
  
  ##★右釦メニュ
  $dBox.ContextMenuStrip =$global:conMenu =New-object ContextMenuStrip -Pro @{ Font="$szFont,12"; };
  (ssRbtMenu "[クリップ取得(コピー)]").add_Click({ $dBox.Copy() });
  (ssRbtMenu "[クリップ取得(#の左側)]").add_Click({ $zcc="";
     foreach( $cc in ($dBox.SelectedText).split("`n") ){ $zcc+=(($cc.split("#"))[0]).trim()+"`r`n"; }; dbc $zcc; Set-Clipboard $zcc; });
  (ssRbtMenu "[窓へ取得Txt/ps1/bat]" ).add_Click({ $ln=((($dBox.Text).substring(0,$dBox.SelectionStart)).split("`n")).count-1; 
     $zcc=(($dBox.Lines[$ln]-split"##")[0]).trim(); if($zcc.length -le 2){return; }; $zcc="$szViDir\$zcc";
     if( (Test-Path $zcc)-and ($zcc.endsWith(".txt")-or $zcc.endsWith(".ps1")-or $zcc.endsWith(".bat")) ){ 
        if( $szFile -ne $zcc ){$global:szFlBk1=$szFile;}; $tBox.Text=Cat $zcc -Raw; $tBox.Font="$szFont,11"; $global:szFile=$zcc; ; dbt("△File読取△$szFile");
     };
  });
};

##●MSG表示Call関数   ★DLG窓の生成  ★MSG窓の文字BOX
$global:szDirBox=0;
function global:ssDirBox($cc,$ww){ if( $szDirBox -eq 1 ){ $dBox.Text=($cc.replace("`n","`r`n")); $dBox.SelectionStart=0; $fmDBox.Show(); return; };
    if( $ww-eq $null ){ $ww="720,640";}; $global:fmDBox=New-Object Form -Pro @{ Size=$ww; Text="【Dir-List】" }; 
    $global:dBox=New-Object TextBox -Pro @{ Font="$szFont,14"; Dock="Fill"; Multiline=$True; AcceptsReturn=$True; ScrollBars=[ScrollBars]::Vertical;};
    $fmDBox.Controls.Add($dBox); $fmDBox.Add_Closing({ $_.Cancel =$True; $fmDBox.Visible=$false;}); $global:szDirBox=1;
    $dBox.Text=($cc.replace("`n","`r`n")); $dBox.SelectionStart=0; $fmDBox.Show();
}; 

##●制御メニュ釦処理 ##★TreeClear ##★Dir再表示 ##★Font寸法設定
function global:ssTreeAct($zzcmd,$zzpam){ 
    switch($zzcmd){
    !TCls { $TreeView.Nodes[0].Collapse(); $TreeView.Nodes[0].Expand(); return;}
    !TRvi { $treeView.Nodes.Clear(); (ssSetDirTree $treeView $sztreeStart); return;}
    !FSiz { $treeView.Font="Meiryo UI,$zzpam"; return;}
    };
};
##●Tree右クリックContMenu処理
function global:ssTreeFnc31($zcmd, $zpam){ $treeCMenu.Close();
    $zSelctNode=$treeView.SelectedNode;  $zcc0=$szTreeDirBase+$zSelctNode.FullPath;
    switch($zcmd){
##★DirList表示
    !DLvi { $zcc=$zSelctNode.FullPath; $zcc=$zcc.replace(":\\",":\"); ssPshDirSet $zpam $zcc; return; }
##★Tree更新
    !Rnew { $zDrv= Get-Item -Path (Join-Path -ChildPath \ -Path $zcc); ssAddNodes 1 0  $zSelctNode $zDrv; return;}
   };
};

##●Tree右クリックContMenu処理
function global:ssTreeFnc32($zcmd, $zpam){ $treeCMenu.Close();
  $zSelctNode=$treeView.SelectedNode;  $zcc0=$szTreeDirBase+$zSelctNode.FullPath;
  switch($zcmd){
##★DirList表示
  !DLvi { $zcc=$zSelctNode.FullPath; $zcc=$zcc.replace(":\\",":\");  ssPshDirSet 0 $zcc; return; }
##★Tree更新
  !Rnew { $zDrv= Get-Item -Path (Join-Path -ChildPath \ -Path $zcc); ssAddNodes 1 0  $zSelctNode $zDrv; return;}
##★複写
  !Copy{ Copy-Item -Path $zcc0 -Destination ($zcc0+"_cp") -recurse; 
       $treeView.SelectedNode=$zSelctNode.Parent; ssTreeFnc32 !Rnew 0; ##[11]表示更新
      return;}
##★Dir作成
  !MkDr{ return;}
##★名称変更
  !ReNm{ return;}
##★ゴミ箱
  !Dust{ $treeView.SelectedNode=$zSelctNode.Parent; $zcc=$zcc0.replace(":\\",":\");
      ssContItmAct 212 $zcc; ssTreeFnc32 !Rnew 0; ##[212]ゴミ箱->[11]表示更新
      return;}
##★プロパティ表示
  !Prty{ $zcc=$zcc0.replace(":\\",":\");  [MyMsgDlg]::SHObjectProperties( 0, 0x2, $zcc, "");  return;}
  };
};

##●Wscript.shellの組込み
$global:szWSobj   =New-object -Comobject Wscript.shell;
$global:shellAppl =New-Object -ComObject Shell.Application;
##●
function global:ssContItmAct( $zcmd, $zpam ){ $szCMenu.Close();
    switch( $zcmd ){
      0{ return;}
##★ゴミ箱へ
    212{  if( Test-Path $zpam ){;}else{ return;};
        $result = $szWSobj.popup( $zpam, 0, "ごみ箱へ", 1); ##0:Time 1:Btn数2個
        if( $result -eq 1){ $trash = $shellAppl.NameSpace(10); $trash.MoveHere( $zpam );}; ##dbg ("AAAA:"+$zpam); };
        return;}
    };
};

##★[Winプロパティ]組込み
Add-Type  @"
using System; using System.Runtime.InteropServices;
public class MyMsgDlg{ [DllImport("shell32.dll", CharSet = CharSet.Unicode)]
    public static extern bool SHObjectProperties(IntPtr hwnd, uint shopObjectType,
         [MarshalAs(UnmanagedType.LPWStr)] string pszObjectName,[MarshalAs(UnmanagedType.LPWStr)] string pszPropertyPage);
}
"@


##★★メイン処理の開始★★
$szDrives= (GET-WMIOBJECT "win32_logicaldisk").DeviceID;  ##dbg $szDrives;
ssSetTreeMnMenu( $szDrives ); ##( "c: d: r:" );
(ssSetDirTree $treeView $sztreeStart);

##★for DBG
if( $treeMMode -eq 0 ){ [void]$fmTree.ShowDialog();}else{ $fmTree.Show();};



[----].. ----

更新状況

新記事登録でgoogle検索不可の状態です。原因不明の全ページgoogleインデックス未登録の状態です。昨年11月から記事が書けずに非常に困っています。 MSNサイトから[コピペgui]で検索利用ください。最新の[コピペ一覧]ページを追加しました。

ブログ検索

QooQ