GUIパワーシェル 実践編に向け大幅に利便性アップしたPSHメモ帳V2.05(3.9応用編)

●マルチ画面や操作性で使いやすくなったPSHメモ帳

今回実践編に向けて、操作性、快適性、利便性の観点から大幅にパワーアップ改善します。具体的には「マルチ画面で快適性・利便性の向上」、よく使う操作の「安全性・操作性の向上」の2つの観点で改善します。なおパワーアップ更新方法は[wndPshPrg201.ps1]を[List3.9.1]に入れ替えて行います。

★注:この記事を最初に閲覧される方は、基本編[2.7][2.8]、応用編[3.8]にて「PSHメモ帳」についての説明と「利用上の注意点」を記載していますので
ご参照ください。
<戻る 進む>

PSHメモ帳[V2.05]で改善した各種操作方法について次に記載します。各操作項目の利用説明については「●利用説明」欄に記載します。

(1)マルチ画面で快適性・利便性の向上

  • [フォルダ]->[複数窓の表示]押下でマルチ画面表示します。
  • [&FSet] ファイル名(.txt)登録で新たな画面表示します。
  • [フォルダ]->[Winフォルダ窓表示]押下でフォルダ窓を表示します。
  • [フォルダ選択]->[OK]押下でフォルダ管理処理します。(readMe.txt)

(2)安全性・操作性の向上

  • [File保存][Fileメモ帳][rdMeRet]が有効の時、青色釦にします。
  • [File保存]押下時、バックアップ保存を選択できます。
  • [ファイル]->[TopPage反映]の押下で画面の編集内容を[TopPage]ファイルに反映します。
  • 1行目に[@FntNo:番号]指定で文字フォント指定できます。
  • [&]行等の位置で[Ctrl]+[n]押下でダブルクリック[WC]処理します。
  • [& # ##★XXX]行等の登録でも[WC]実行可能にします。
  • Web表示登録の「!Web名; 'http...'」での[']で囲むも不要になります。
  • [rdMeRet]押下で直近のフォルダ管理[readme.txt]に戻ります。


改善点はまだ沢山あると思いますが、私個人の思いとしては次の観点から究極のPSHメモ帳レベルまで改善できたと思います。ご利用頂くと幸いいたします。

  • コピペ作業だけで利用可能で何かのダウンロードなど全く不要(初心者も利用可能)
  • アプリ操作が簡単(GUI窓、マウス、ダブルクリック、ドラッグ&ドロップなど)
  • 誰でも簡単にカスタマイズ改善が可能
  • オペ操作の利用環境に配慮(背景色/文字寸法/画面寸法の設定、確認窓など)
  • カスタマイズのDBG環境に配慮(DOS画面設定、dbg/dbc/MsgBox関数など)


●開始画面

次の項で[wndPshPrg201.ps1]をV2.05に更新した後、 PSHメモ帳[wPshMemo201.bat]又は、次項で作成の[wPshMemo301.bat]をダブルクリック[WC]してください。
下図は3画面表示とフォルダ窓表示したものです。

PSHメモ帳V2.05のマルチ画面表示
PSHメモ帳V2.05のマルチ画面表示


●各種メニュー画面

下図は各種メニュー窓を表示したところです。

  • [ファイル]、[フォルダ]
  • [編集]->[ツール]->[@FntNO:]一覧
  • [File保存]->保存窓

PSHメモ帳V2.05の各種メニュー表示
PSHメモ帳V2.05の各種メニュー表示

●パワーアップ更新方法

◎まず、次のファイル名を変更しbackup保存します。
 wndPshPrg201.ps1 -> wndPshPrg221.ps1 (保存版)
<補足>2番目の数字(0->2)はbackup保存用に利用しています。

◎次のコピペListから各ファイルを作成し[wGuiPsh2]フォルダに保存ください。

 [List3.9.1] -> [wndPshPrg201.ps1] PSHメモ帳[V2.05]
 [List3.9.2] -> [wPshMemo301.bat]  [TopPage]内容修正

◎PSHメモ帳[V2.05]のフォルダとファイルの構成を以下に記載します。

[wGuiPs2]
 +wndPshPrg201.ps1...今回のバージョン
 +wndPshPrg201_add.ps1...List3.8.1利用
 +wPshMemo301.bat...今回のTopPage


●利用説明

◎マルチ画面表示(PSHメモ帳)

旧[V2.02]バージョンは起動画面で[TopPage]またはファイル1つしかPSHメモ帳で操作できませんでした。一方応用編の複数マネージャを同時に操作するには複数窓を表示した方が便利です。それで今回[V2.05]バージョンから次の操作での複数窓表示を可能にしました。

  • [フォルダ]->[複数窓の表示]押下で同じ[TopPage]で複数窓表示
  • [&FSet TXTファイル名.txt ##マルチ画面表示]( &FSet& は従来の画面切替です)

◎マルチ画面表示(Winフォルダ窓)

今回[V2.05]の追加機能です。フォルダ管理するときexplorerからのドラッグ&ドロップでは何かと不便です。それで少し手間ですが[WinフォルダDLG窓]を使いフォルダ指定ができるようにしました。もう一つの理由はPSHメモ帳は安全利用の観点からフォルダのコピー・削除・移動・名称変更の処理をしていません。この処理をWinフォルダ窓でWindows機能を使って処理します。次の操作で利用します。

  • [フォルダ]->[Winフォルダ窓表示]押下で開く
  • このDLG窓から[管理したいフォルダをマウス設定]->[OK]押下で[!readMe.txt]表示
  • フォルダのコピー・削除・移動・名称変更の処理は、この窓から[処理したいフォルダをマウス設定]->マウス[右釦]->[処理項目の選定]して利用します(exploreと同じ操作)。

◎窓メニュ釦の青色表示([File保存][Fileメモ帳][rdMeRet])

旧[V2.02]では上記釦が有効か無効か判りませんでした(無効時は処理しないだけです)。今回の[V2.05]は釦が有効時に青色釦になり判りやすいです。

  • [File保存][Fileメモ帳]釦は[&FSet&]指定などで指定[TXTファイル.txt]が画面表示になったとき青色釦になり、[TopPage]表示のときは黒色釦になります。
  • [rdMeRet]釦はフォルダ管理ファイル[!readMe.txt]を画面表示したときそのフォルダ位置を記憶し青色釦にします。その後[TopPage]やTXTファイルを画面表示して処理した後、またそのフォルダ位置に戻りたいケースがあります。そのとき[rdMeRet](!readMeへReturnの意味)を押下すると[!readMe.txt]を画面表示してそのフォルダ位置に戻ります。

◎[File保存]時のバックアップ保存

今回[V2.05]の追加機能です。指定[TXTファイル]を画面表示し編集したあと[File保存]釦押下でバックアップ保存の[はい(Y)][いいえ(N)][キャンセル]釦の確認DLG窓が表示されます。そして各釦押下で次の処理となります。

  • [はい(Y)]..現在フォルダ位置にbakフォルダを作成し[bak_TXTファイル名]で前回ファイルをコピーしてbakフォルダにバックアップ保存したあと編集ファイルを上書き保存します。
  • [いいえ(N)]..編集ファイルを上書き保存のみします。(前回[V2.02](Y)と同じ処理)
  • [キャンセル]..編集ファイルの保存もしません。

◎[TopPage]編集後の[TopPage]反映

PSHメモ帳は大変便利で毎日利用しますが[TopPage]も頻繁に編集します。その都度Winメモ帳を利用するのは不便です。そのため[ファイル]->[TopPage]反映で画面編集内容を起動ファイルに反映する機能を組込みました(例[wPshMemo201.bat]のときその[TopPage]部分を入替保存する)。

◎[@FntNo:番号]で文字フォント指定

応用編の複数マネージャを複数画面操作するとき背景色は変更して利用しますが、更に表示フォントも変更したくなり次の8種類を登録して番号指定で変更可能にしました。
[1]BIZ UDゴシック,[2]MS UI Gothic,[3]MS ゴシック,[4]Meiryo UI,[5]HGゴシックE,[6]HGゴシックM,[7]HG創英角ゴシックUB,[8]HG創英角ポップ体

[Ctrl]+[n]押下でダブルクリック[WC]処理

PSHメモ帳を頻繁に使っていると文字登録はキー入力です。登録後はマウス利用で便利なのですが頻繁に登録する場合マウス操作が不便に思う時が多々あります。そんなとき[Ctrl]+[n]でダブルクリックと同じ処理をするようにしました。

◎[& ##★XXX]行の[WC]実行

[V2.05]では、[&&& ##★XXX]、[&& # ##★XXX]、[& # ##★XXX]の記述で[WC]動作します。TXTファイルにPSH短文処理を色々作成しているとダブルクリック行のマークとして「##★[WC]」を記述しています。ところが[&]行が長くなると見ずらい位置に[WC]がきてしまいます。また[WC]の後に説明文も記述しずらいため改善しました。補足です。PSHメモ帳は[##]からの右文字列をコメントとしています。これは[#]の1個だと見ずらい部分とPSH処理を簡単にする部分から[##]の2個としています。

Web表示「!Web名; 'http...'」での[']不要

[&  Start 'http.....']でWeb表示する場合[V2.05]も[']は必要ですが、[!XXX; http...]登録では[V2.05]から不要になります。これはWeb表示マネージャを頻繁に利用するとき[']付加が手間なためです。PSHメモ帳の処理としては一旦[']を削除して[&  Start 'http.....']に変換してPSH処理でWeb表示してるので[']有り/無しどちらでも動作します。

●コピペリスト一覧


●コピペ[List3.9.1]  -> [wndPshPrg201.ps1] PSHメモ帳[V2.05]本体

##Ver2.05 2024/1006 by ryu #####################################
##STT: ●●「Pshめも帳」(Gui窓PSH処理統合アプリ) 
##ACT: wndPshPrg201.ps1 [TopPageFile]  [[TxT-file]]
##
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.05]"+$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="dmy"; if($args[0] -ne $null){ $fln=$args[0];};
$szDirTree="$szToolDir\wPshDirTree201.ps1"; $szRtfMemo="$szToolDir\wPshRtfMemo501.ps1";##★DirTree.ps1 ★wRtfMemo.ps1 ##★★★sys
$szBkColor="#e0ffc1"; $szFont="BIZ UDゴシック"; $global:szFntSize=13; $szWSize="1080,720"; $global:szFile=$global:szFlBk1="";
$szFntKind=@("BIZ UDゴシック","BIZ UDPゴシック","MS ゴシック","Meiryo UI","HGゴシックE","HGPゴシックE","HG創英角ゴシックUB","HG創英角ポップ体"); ##Font:No1~8
function ssTopView($zfg){ if( Test-Path $fln ){;}else{return;}; $szMenu3.ForeColor=$szMenu6.ForeColor="Black"; $global:szFile="";
    if($zfg -eq 0){ $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);
$dReadBox =New-Object OpenFileDialog -Pro @{ Title="【読取】ファイル選択"; Filter='txtファイル|*.txt|rtfファイル|*.rtf'; InitialDirectory='Desktop';};
$dSaveBox =New-Object SaveFileDialog -Pro @{ Title="【保存】ファイル設定"; Filter='ファイル(*.txt)|*.txt|全て(*.*)|*.*'; InitialDirectory='Desktop';};
$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 "[File再読取]").add_Click({ ssFileSet $szFile }); (ssDMnMSet "[前File戻り]").add_Click({ssFileSet $szFlBk1 });
    (ssDMnMSet "[File保存]"  ).add_Click({ ssFileSave 0 $szFile });
    (ssDMnMSet "File読取[窓]").add_Click({ if( $dReadBox.ShowDialog() -eq "OK" ){ ssFileSet($dReadBox.FileName) }; });
    (ssDMnMSet "File保存[窓]").add_Click({ ssFileSave 1 $szFile });   (ssDMnMSet "----"  ).add_Click({;});
    (ssDMnMSet "[TopPage]反映").add_Click({ if( ($szFile -eq "" )-and ( (ssMsgYesNo "[TopPage]をFileへ反映保存(Y/N)" $fln) -eq "Yes") ){
        $zcc=Cat $fln -Raw; SC ($fln+".bak") $zcc -Force; SC $fln ($zcc.substring(0,$zcc.indexof('<#'+'#'))+$tBox.Text) -Force; }; ssViewColor; });
    (ssDMnMSet "[TopPage]編集").add_Click({ & $szEditor $fln });  (ssDMnMSet "[<Psh編集>]" ).add_Click({ & $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({ & $szEditor $szDirTree }); };
(ssDMnMenu "[TopPage]").add_Click({ if($szFile -ne ""){ $global:szFlBk1=$szFile; (ssTopView 0);}; });
(ssDMnMenu "[explorer]").add_Click({ explorer (pwd) }); 
($szMenu3=ssDMnMenu "[File保存]").add_Click({ ssFileSave 0 $szFile });
 $szMenu4=ssDMnMenu "編集"; (ssDMnMSet "[元に戻す]").add_Click({$tBox.Undo() }); (ssDMnMSet "[コピー]").add_Click({$tBox.Copy()});
    (ssDMnMSet "[貼付け]").add_Click({$tBox.Paste()}); (ssDMnMSet "[切り取り]").add_Click({$tBox.Cut()}); (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 1 });  (ssRbtMenu "[元に戻す]").add_Click({$tBox.Undo()});
  (ssRbtMenu "[コピー]").add_Click({$tBox.Copy()}); (ssRbtMenu "[貼付け]").add_Click({$tBox.Paste()}); (ssRbtMenu "[切り取り]").add_Click({$tBox.Cut()});
  (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 "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 "年月日時取得"  ).add_Click({ $tBox.SelectedText=Get-date -format "yyyy年MM月d日(ddd) HH:mm:ss"; });
  (ssRBtSMnu "yyyy/MM/dd取得").add_Click({ $tBox.SelectedText=Get-date -Format "yyyy/MM/dd(ddd)"; });
  (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処理 ★[!]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]-split"##")[0]).trim()+" "; if( $zcc.length -le 3){ 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("!") -and $zcc.contains("http") ){ $zcc=$zcc.replace("`'",""); Iex("Start `'"+(($zcc.split(";"))[1]).trim()+"`'");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(); if($zcc.endswith('.txt') ){ 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"; }; };
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') ){;}else{ if( $zfl.endswith('.rtf') ){ ssRtfMemo $zfl }else{ dbg "[ERROR]`n>>> No File.txt/rtf`n$zfl"; }; return; }; 
    if($szFile -eq ""){ $global:szTPage=$tBox.Text; }else{ if( $szFile -ne $zfl ){$global:szFlBk1=$szFile;}; };
    $global:szFile=$zfl; $szMenu3.ForeColor=$szMenu6.ForeColor="Blue";
    if(Test-Path $szFile){ $tBox.Text=Cat $szFile -Raw; ssViewColor; dbt("△File読取△$szFile"); }
    else{ $tBox.Text="#![管理] @BakColor:$szBkColor @FntSize:13 @WndSize:$szWSize`r`n"; ssViewColor; dbt("【新規】$szFile"); }; $tBox.SelectionStart=0;
    if($szFile.Contains('!readMe.txt') ){ cd (Split-Path $szFile -Parent); $global:szFlBk0=$szFile; $szMenu7.ForeColor="Blue";
        if(Test-Path $szFile){;}else{ $tBox.Text +=(((pwd)-join "`r`n")+"`r`n`r`n`r`n"+((dir -name)-join "`r`n")+"`r`n"); }; };
};
##★File保存(bak保存選択)
function ssFileSave($zcmd,$zfl){ if($zfl -ne ""){ $dSaveBox.InitialDirectory=(Split-Path $zfl -Parent); $dSaveBox.FileName=(Split-Path $zfl -Leaf); };
    if( $zcmd -eq 1 ){ 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); ssViewColor; dbt("▼File保存▼$zfl");
};
##★背景色 ★FNT寸法 ★WND寸法
function ssViewColor(){ $zcc=($tBox.Lines[0]).replace(" ","").split("@?:");
    for( $ii=0; $ii -lt $zcc.count; $ii++ ){ $cc=$zcc[$ii]; $cc1=$zcc[$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") ){ $zcc=(""+$szFntKind[$cc1-1]+",$szFntSize"); $tBox.Font=$zcc; }; };
};
##★文字検索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]
(ssTopView 1);  $zcc=$args[1]; if( $zcc -ne $null ){ ssFileSet($zcc) }; $mMain.ShowDialog();

●コピペ[List3.9.2]  -> [wPshMemo301.bat] [TopPage]を[V2.05]に対応

@echo off &rem if not "%~0"=="%~dp0.\%~nx0" (start /min cmd /c,"%~dp0.\%~nx0" %* &exit) &rem ★DOS窓mini化
powershell -ExecutionPolicy RemoteSigned "$fln=(echo %0); .\wndPshPrg201.ps1 $fln"
rem pause;
exit;
 
<##Ver2.05--[TopPage]  @BakColor:#c6ffc6   @FntSize:12  @WndSize:1080,780 
##
##●●[PSHめも帳]----[TopPage]は[ファイル]から反映/編集----●●
##  [&][>][!]行をダブルクリック[WC]。マウス右釦:表示/編集/クリップ/ツール/など。
##  1) [&]起動  [&&]窓無し起動  [&&&]継続起動  [;]行連結。
##  2) [&FSet&]:txt/rtfファイルの表示/編集/File保存。[&FSet]:別窓でtxtファイルを開く。
##  3) D&Dropで、txtファイル表示。Ps1ファイル起動。フォルダ管理(readMe)。Bakファイル保存。
##  4) 複数窓表示、Web表示、[>][>>]DosCmd、MsgBox、検索窓、Font設定、dbg、dbcなど。
##---------------------------------------------------------------------------------

&FSet   dat\wPshWebMng101.txt  ##★[3.6]Webサイト表示マネージャ

&FSet   dat\wPshDocRule101.txt ##★[3.8]PSH文法ファイルマネージャ
&FSet   dat\wPshMailLog101.txt ##★[3.8]Mail履歴ファイルマネージャ

&FSet&  dat\wndPshTxt201.txt       ##★[2.7]PSH登録の簡単な例
&FSet&  dat\wndPshTxtShort201.txt  ##★[2.7]PSH短文アプリ件(よく使う)

&FSet&  dat\wPshKeisan101.txt  ##★[3.1]式表計算+α
&FSet&  dat\wPshKeyAuto101.txt ##★[3.2]自動キー入力
&FSet&  dat\wPshQRCode101.txt  ##★[3.7]QRコード生成コントローラ

&FSet&  grf\wPshGraf101.txt    ##★[3.3]グラフ表示1(おもしろ+実用編)
&FSet&  grf\wPshGraf201.txt    ##★[3.4]グラフ表示2(折れ線/曲線/散布/面/階段/バブル)
&FSet&  grf\wPshGraf301.txt    ##★[3.5]グラフ表示3(縦棒/横棒/複合/円/他)

##★フォルダ指定で管理(!readMe.txtの生成)
&FSet&  $HOME\Desktop\wGuiPsh2 ##★[2.7] wGuiPsh2フォルダ管理

##---------------------------------------------------------------------------------
##★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窓


更新状況

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

ブログ検索

QooQ