●PSHメモ帳ユーザ拡張ファイル(usr)利用紹介
◎スーパWeb検索機能パソコンでweb検索をよく使いますが検索サイトを開くのが結構手間です。そこで[&KKn]マクロで検索オペ操作して検索履歴も残せ、再検索も追加検索も簡単!スーパなオペ操作ができてとても便利です(ダブルクリック[WC]起動、[&KBn]の株式閲覧も相当強力)。
◎説明文先行型のファイル操作
ファイル名の前に説明文を記載しファイル操作すると判りやすく快適です。[&FS]マクロで説明文先行型でのアクセスを可能にします([;]の次にファイル名指定)。
◎PSHアプリのコピペ半自動更新
&KKK コピペ gui ##★NSN検索サイトで検索(KKG/KKA/KKMなど)
&KK5 ファンヒータ ##★5つのサイトを一括検索
&KBN 8233 8848 6526 7003 6753 ##★日経チャート
ファイル名の前に説明文を記載しファイル操作すると判りやすく快適です。[&FS]マクロで説明文先行型でのアクセスを可能にします([;]の次にファイル名指定)。
&FSet filename.txt ##★日本語説明文
VV
&FS ★日本語説明文 ;filename.txt
◎PSHアプリのコピペ半自動更新
PSHアプリ更新でWindowsメモ帳を使うのは結構手間です。そこで[ps1アプリ更新]押下で更新可能にします。
◎[ツール1]追加
◎Pshメモ帳の更新
更新Listをマウス[Copy]取得→[ツール]→[ps1アプリ更新]
今回は上記3点が主な改善点ですが大幅に快適性がアップすると思います。ご利用頂くと幸いします。また他の改善点は「今回の改善点」に記載します。
<戻る 進む>
★注:この記事を最初に閲覧の方は、応用編[3.9][4.1]をご参照頂き「PSHメモ帳V2.05」を構築ください。
[wPshMemo301.bat] [sys\wndPshPrg201.ps1] [sys\wndPshPrg201_add.ps1]
★補足:閲覧はMicrosoft検索サイトから[コピペGUI]検索でお願い致します。原因不明でgoogle審査15頁登録済みから全頁インデクス未登録となりたいへん困っています。原因解決するまでよろしくお願いいたします。。
●起動画面のメニュ表示
◎[ツール1]追加
- [現在フォルダ表示]の窓表示でのマウス右釦(窓へtxt/ps1/bat取得)
- [マクロ一覧]とマクロ基本処理(&FS/&FS&/&KKn/&KBn)
- [アプリ変数表示]でPSHメモ帳Verの表示
- [画面クリア]..txt/ps1/bat/TopPageの入替で利用
- [サイズ色設定BOX]..当該Listを表示し[WC]で一時的に文字寸法、背景色、フォントを設定する
- [ps1アプリ更新]
◎[ツール3]追加
- [マクロ一覧]..[ツール1]同釦に同じ..ユーザ拡張利用を想定
- [ps1アプリ更新]..[ツール2]同釦に同じ(次回Verで集約予定)
- [<usr編集>]..usrファイルの編集
- [usr再ロード]..PSHメモ帳の起動状態でusrファイル編集をしてusr再ロード設定可能にする
◎[ツール4]追加
..PSHメモ帳起動後に[ツール4]押下で機能追加する機能(後追い追加)
[wndPshPrg201_etc.ps1]で別途追加可能にする
..PSHメモ帳起動後に[ツール4]押下で機能追加する機能(後追い追加)
[wndPshPrg201_etc.ps1]で別途追加可能にする
●USRファイル組込み&Pshメモ帳の更新
◎USRファイル組込み
windowsメモ帳を使って下記のコピペ[List4.2.1]からファイルを作成し[wGuiPsh2\sys]フォルダに保存します(★ANSI設定を確認)。
[List4.2.1]-->[wndPshPrg201_usr.ps1]
◎Pshメモ帳の更新
PSHメモ帳[wPshMemo301.bat]をダブルクリック[WC]して起動します。
- 下記[List4.2.2]の右上[Copy]を押下→[ツール3]→[Ps1アプリ更新]→[Y]を押下します。
- 同様に[List4.2.3]の[Copy]を押下→[ツール3]→[Ps1アプリ更新]→[Y]を押下します。
これで更新完了です。PSHメモ帳を終了し再度[WC]起動します。
◎[TopPage]の説明文型オペ操作へ入替
下記[List4.2.4]の[Copy]押下→[TopPage]挿入箇所→マウス[右釦]→[張付け]した後、[ファイル]->[TopPage]反映→[Y]で反映します。
●今回の改善点
◎[本体](Ver2.05->2.052)
- ps1ファイル、batファイルの読取
- 1行目、@WndRran:0/1 右端折返し1:ON/0:OFF
- [https:XXXXXXXX] 行の直接記載でWebサイト表示
- 右釦メニュに[全選択]追加
- [読取/保存DLG窓]の開始フォルダ設定
◎機能拡張addファイル(Ver1.33)
- [サイズ色設定BOX]処理/メニュの追加
- &FS/&KKマクロ処理/メニュの追加
- [ps1アプリ更新]処理/メニュの追加
- ツール4:拡張ファイルetcの登録
◎ユーザ拡張usrファイル(Ver1.51)
- &KKマクロ処理/メニュの追加
- [ps1アプリ更新]処理/メニュの追加
- ユーザ拡張usrのDBG利用方法(再ロード)
●利用説明
今回はツーランクアップのPSH利用技術を使っていますが、利便性アップの観点で別途記載予定です。
●コピペリスト一覧
◎コピペ[List4.2.1] →[wndPshPrg201_usr.ps1] 拡張usrファイル
★windowsメモ帳で保存のとき[ANSI設定]で保存ください。
##Ver1.51 wndPshPrg201_usr.ps1 by ryu 2024/1215 ####################################
##●●PSHメモ帳:機能追加その3(usr)
##
##★メニュ3へ登録設定
$global:szMnBas=$szMenu11;
if($szMnTool3-eq $null){ $global:szMnTool3=1;
(ssDMnMSet "[マクロ一覧]" ).add_Click({ MsgBox ($szLstMacro.replace(","," ")) "960,540"; $mBox.BackColor="#E8FFD0";});
(ssDMnMSet "[ps1アプリ更新]" ).add_Click({ ssPs1VerUp1 });
(ssDMnMSet "----" ).add_Click({;});
(ssDMnMSet "----" ).add_Click({;});
(ssDMnMSet "----" ).add_Click({;});
(ssDMnMSet "[<usr編集>]" ).add_Click({ & $szEditor $fladd2 });
(ssDMnMSet "[<usr再ロード>]" ).add_Click({ . $fladd2; dbg "再ロード`n`n$fladd2" });
##★文字色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&)
";
##★[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利用
}; 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;
};
◎コピペ[List4.2.2] →[wndPshPrg201.ps1] PSHメモ帳本体
##Ver2.052 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.055]"+$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
$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){ $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;*.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({ 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; });
$aa=(ssDMnMSet "----"); (ssDMnMSet "[前File戻り]").add_Click({ssFileSet $szFlBk1 }); (ssDMnMSet "[File再読取]").add_Click({ ssFileSet $szFile });
(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 }); $aa=(ssDMnMSet "----");
(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; (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.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 1 }); (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 "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処理 ★[!][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]-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("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( Test-Path $zcc ){ if($zcc.endswith('.rtf') ){ ssRtfMemo $zcc }else{ 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')-or $zfl.endswith('.ps1')-or $zfl.endswith('.bat')){;}
else{ if( $zfl.endswith('.rtf') ){ ssRtfMemo $zfl }else{ 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;}; };
$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"); };
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"); }; }; $tBox.SelectionStart=0;
};
##★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寸法 ★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; };
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]
(ssTopView 1); $zcc=$args[1]; if( $zcc -ne $null ){ ssFileSet($zcc) }; $mMain.ShowDialog();
◎コピペ[List4.2.3] →[wndPshPrg201_add.ps1] 拡張addファイル
▲V1:V1.33->1.331: "&KEI"{dbg $zcc1;ssKeisan $zcc1;→"&KEI"{ ssKeisan $zcc1;
$fmCal.Showdialog();→$fmCal.Show();
$fmCal.Showdialog();→$fmCal.Show();
##Ver1.331 wndPshPrg201_add.ps1 by ryu 2024/1228 ###############################
##●●[PSHメモ帳]拡張機能ファイル(応用編[42])
##LOG:
##★[ファイル]釦メニューに追加
$global:szMnBas=$szMenu1; (ssDMnMSet "[<Add編集>]" ).add_Click({ & $szEditor $fladd }); $aa=(ssDMnMSet "----");
(ssDMnMSet "再起動" ).Add_Click({ Restart-Computer -Force });
(ssDMnMSet "電源OFF" ).Add_Click({ Stop-Computer -Force });
(ssDMnMSet "スリープ" ).Add_Click({ [Application]::SetSuspendState(0, $false, $false) });
##★[フォルダ]釦メニューに追加
$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 });
##★[編集]釦メニューに追加
$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 });
##★新規登録[Menu9]
$global:szMenu9=(ssDMnMenu "ツール1" );
(ssDMnMSet "[現在フォルダ表示]").add_Click({ ssViewDir });
(ssDMnMSet "[現在フォルダ再帰表示]").add_Click({ ssViewDir 1 });
(ssDMnMSet "[Dir容量表示]" ).add_Click({ $zcc0=ssDirVol(1); (ssPshAct 0 $zcc0); });
(ssDMnMSet "[DirのTree表示]").add_Click({ $zcc0=ssDirVol(0); (ssPshAct 0 $zcc0); }); $aa=(ssDMnMSet "----");
(ssDMnMSet "[大きいカレンダ]").add_Click({ ssBigCalen });
(ssDMnMSet "[マクロ一覧]" ).add_Click({ MsgBox ($szLstMacro.replace(","," ")) "960,520"; $mBox.BackColor="#E8FFD0";});
(ssDMnMSet "[PSH高速化(ngen)]").add_Click({ ssNgen });
(ssDMnMSet "[UTF8->ANSI変換]" ).add_Click({ ssToolAct !ANSI }); $aa=(ssDMnMSet "----");
(ssDMnMSet "[アプリ変数表示]").add_Click({ ssToolAct !AplD });
(ssDMnMSet "[画面クリア]" ).add_Click({ ssToolAct !DClr });
(ssDMnMSet "[HTML特殊文字変換]").add_Click({ ssToolAct !HtmC });
##★新規登録[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({ ssPs1VerUp });
##★新規登録[Menu11]
$global:szMenu11=(ssDMnMenu "ツール3" ); ##(ssDMnMSet "----").add_Click({;});
##★新規登録[Menu12]
($global:szMenu12=ssDMnMenu "ツール4" ).add_Click({ if( Test-Path $fladd3 ){ . $fladd3; }; });
##★新規登録[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&)
";
##
function global:ssWClkCmd($ln,$zcc){ $zcmd=$zcc.split(" ")[0]; $zcc1=($zcc.substring(5)).trim(); ##dbc "$ln $zcc";
##★キー入力 ★計算 ★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&"{ $zcc1=($zcc1.split(";"))[1].trim(); Iex("ssFileSet `"$zcc1`""); return; };
"&FS" { $zcc1=($zcc1.split(";"))[1].trim(); $zcc1=Iex("`"$zcc1`""); if( Test-Path $zcc1 ){;}else{ return; };
if($zcc1.endswith('.rtf') ){ ssRtfMemo $zcc1 }else{ ssPshAct 1 "$szTool $fln $zcc1" }; return; }
};
if( (ssWClkUsrCmd $ln $zcc) -eq 0 ){ ssWebSrh $zcmd $zcc1; };
};
##★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; };
};
##★Dir容量表示【ssDir zcmd】[0]Tree表示//[1]Dir容量表示)
##
function global:ssDirVol($zcmd){ $zcc0= '$zDir=Read-Host "[DIR名/Enter]= "; if($zDir -eq "" ){ $zDir=(pwd); }; echo "[Dir] $zDir" ;'
if($zcmd -eq 0){ $zcc0+='tree $zDir /f ;'; return $zcc0; }; ##★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)); }; };'; return $zcc0;
};
##★[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 zOption zData zColum zPrg zBody】
##
function global:ssGraf($zType,$zOption,$zData,$zColum,$zAddProg,$zAddBody){ $szfile="$home\Desktop\gChart01.html";
$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:["@@Package"]});
google.charts.setOnLoadCallback(drawChart); var chart; var options; var data;
function drawChart(){ chart = new google.visualization.'+$zType+'(document.getElementById("chart_values"));
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_values" ></div>'+$zAddBody+'</body></html>' ; $zcc1='corechart';
foreach($cc in 'AnnotationChart','TreeMap','Timeline','Table','VegaChart','GeoChart','Gauge','Sankey','Calendar','WordTree','TreeMap'){
if($cc -eq $zType){ $zcc1=$cc; break; }; }; $zcc0=$zcc0.replace('@@Package',$zcc1);
SC $szfile $zcc0; & $szfile; ##★Web.html起動
};
##★[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;
});
##★[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]PSH起動の高速化
##
function ssNgen(){ $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";
};
##★[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]大きいカレンダ(カスタマイズ)
##
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(); ##▲V1
};
##★[41]ツール処理(カスタマイズ)
##
function ssToolAct($zcmd,$zpam){ switch($zcmd){
##★アプリ変数表示
!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[戻り] $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;}
##★画面クリア
!DClr{ if((ssMsgYesNo "【画面クリア(Y/N)】" "画面クリアしてOKですか?")-ne "Yes" ){ return; };
$tBox.Text=""; $tBox.SelectionStart=0; if( ($szFile-ne "")-and ($szFlBk1-ne $szFile) ){$global:szFlBk1=$szFile; };
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保存]押下で`n上書処理(Y/N/キャンセル)します`n`n$szFile" )-eq "Yes" ){ return; };
$tBox.Text=Cat $szFile -Raw; $tBox.SelectionStart=0;
return;}
##★HTML特殊文字変換(変換文字:&,<,>,",') MSGBOXに出力
!HtmC{ $zcm=@("&","&", "<","<", ">",">", "`'","'", "`"",""", "`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;}
};};
##★PS1ファイル半自動VerUP(一旦MsgBoxに表示->Ver確認OK->BackUP->画面入替->[File保存])
##
function global:ssPs1VerUp(){ $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;
};
##★[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;
$zcc=$zcc.replace("@GUrl","https://ryupapa008.blogspot.com");
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
!【操作説明】; @GUrl/2024/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)計算表示マネージャ_____参照;@GUrl/2024/09/psh_8.html
!32)自動キー入力マネージャ_参照;@GUrl/2024/09/pshpsw.html
!33)PSW管理マネージャ___参照;@GUrl/2024/09/pshpsw.html
!34)googleグラフマネージャ_参照;@GUrl/2024/09/google.html
!35)WEB表示マネージャ___参照;@GUrl/2024/09/pshwebpsh.html
!36)QR生成マネージャ_____参照;@GUrl/2024/09/qrpshweb.html
!37)テキストマネージャ_____参照;@GUrl/2024/09/qrpshweb.html
##>
◎コピペ[List4.2.4] -> [wPshMemo301Top.txt] 説明文型トップページ
<##Ver2.10--[TopPage] @BakColor:#fff2e4 @FntSize:14 @WndSize:1080,780 @WndRtan:1
##
&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 ##日経チャート