■ 「くまらボタン」 マニュアル、マクロ サンプル集

メニュー  0. manual,  マクロ sample, ■ AP ←→ clipboard 方式比較  0_zop,  正規化man* /repl sendkeys 比較 c+family vocab C++ man

【能書き】
 売り機能は、メモ帳、 web page の区別なく、どこからでも、文字列選択&くまらボタン click 、の操作で、「page 内検索」「online 辞書検索」「Google 検索」できます、です。
現在、web page 上では、文字列選択&マウスの右 click&「Google で〜を検索」選択、で「Google 検索」出来ます、しかし、メモ帳からでは出来ませんでした。 ---(win10 のメモ帳には「Bing で検索(B)」がある。Google 以外の検索を知りたいときは、使えるカモ。)
くまらボタンは、このバリア(段差)を少し外します。バリアフリーな、おもちゃです。

2022/12/09 JavaScriptでWindowsアプリ(HTA)を作る
cf. HTML Applications Reference
cf. HTAファイルとは?サンプルアプリを動かすまで紹介! --- sjis で save のこと。
2022/12/08 ime の「A」「あ」popup アドハルーン、目障りなので出さない様にした。ime property,「IME 入力モードの通知」画面中央に表示。
2022/12/06 len = Len(xyz) が「不正な代入です。: 'Len'」で err.  原因は、len は system 予約語。
cf. 予約語
2022/12/04 vbs の変数名に特殊文字が使えないか調べていたら、下記発見。スゴイ。
VBScriptで変数名に日本語や空白を入れる方法 2019-11-18 by @shiozaki(株式会社ZOZO)
2022/11/19 rundll32.exe 自作 DLL モジュールを C++ コンパイラ環境で構築。 mszop (x座標=0 で zop mess)。c0( or c0[ の clipboard write directive もサポート。C++ DLL で世界が変わった感アリ。
2022/03/11 zop_chk = 0 規定値に変更した。
2022/01/09: 省エネ・性能的、にはやはり j0( が総合最強方式と判定する。ウソ。→ msgbox はNG. 改行が2倍に化ける。{end}{del}{up} loopの補正要。 自動補正したので、最強に復活した。記念に、最短 directive w0, r0, w(, r( 作成。
2011/01/17 inputbox で、数字入力で、「つ」で「select」に漢字変換し、「select」を漢字変換すると、1 から9 のリストが出る。
2022/01/02: g+ data url schema 方式。 Chrome window 経由。最強・本命。以後 g+/g- のみ使用のこと。
2021/12/25: c+, b+, jj, j0, d+ .. 全ての日本語入力方式は、 u-,u-[,u-(,u+[,u+( 方式 に統合された。以後 u-/ u+ or b+ 以外使わない方向。
2021/12/23: c+(/ c+[ echoux| clip 方式は b+(/ b+[ clip sdio 方式へ運用移行のこと。 j0 も jp 方向。
2021/03/22: target="_blank" を ta で 「<a target="_blank" href=""></a>」を ime に 「たー」 で単語登録した。
2019/07/24: al()/jj()/j0()/j0[]/sv()/eval() の右括弧は、目障りなので削除した。思考の邪魔になる。 以後、読み替えること。
つまり、 =(), ifeval(),if() の右括弧は必須[∵ 括弧外右パラメータがあるから。]。
これ以外は右括弧禁止。不用意に ) を付けると、eval の評価式の最後に ) が付き、コンパイルエラー発生。 ex. rsky1(1) は不正。
文字列 or 文字列式 内の「,」は、必ず「{}」とすること。drective の delimitter とみなされ、不整合により abort する。
directive 内の一般 data 内の「除外,」は、その先頭の「,」の直後に「\後続除外個数\ (escape サンドイッチ)」を付けると、その数分非コンマ扱いする。 尚、「,\1\」は、「,\\」 or 「{c}」(c は comma の c) or 「,\半角space (3 文字) (escape comma)」 or 「,` (grave) 2文字」も可とする。「\,」は考えたが、見難いので止めた。つまり、「後置エスケープ \」 mark。
  ex1. repl("bat,\4\cat,but,cut,cap"{}"c.t"{}"zzz",al(r_repl
  ex2. exe( msgbox "test",\\ ,\\"title"  は exe( msgbox "test"{} {}"title" と等価。
  ex3. alI like it,` too.   ---- al(I like it,` too. は、msgbox は正しく表示されるが、実効時 err 発生。 user ミス。∵ al(式 に違反。
これら「非コンマ」指示文字は、「,\〜」,「{c}」系は、 くまら処理先頭での directive のカンマ分割直後に「,」に戻される。従って、くまら内の個々の directive 処理では既に「,」の文字になっている。一方「{}」のコンマ戻しは、個々の directive 処理部が自己責任で判定 & 戻しを行う。    from 2021/12]
尚、eval(, eva( は、現在は、既に old 状態。 exe( directive に機能統一された。
2019/09/18: 新規 directive image を clipboard に事前に copy しておき、くまら入力枠を全選択 & {del} し、空状態にした所で、Ctrl+V 操作すると、出来ない・無視される。 why? 他の一般キーボードボタンは押せる。なのに、^v 操作は、無視される。非常に疲れる。 この状態で、メモ帳に対し ^v すると、正しく paste される。 why?  経験回避策は、くまら最立ち上げ。枠は空だが、前回 directive 実行の影響かも、@ を先頭に噛まし OK も試して。 枠に abc と入れて、枠内で、それを ^c,^v すると必ず治る。と判明。何かのタイミングで loop に陥る模様。落としても駄目な case も有った。
2019/10/25 現在、式の directive には [, ( の2様の表記がある。冗長で無駄である。これは原理的に統一できる。使い勝手は[ の方が良い。&によって spilit された偶数番目が、変数であることを保証すれば良い。&変数&変数& は、&変数&&変数& と変更すれば、&& は、空の奇数要素を生む。
ex. ,kb(trim(azz(6+ev))&"~", ⇔ ,kb[&trim(azz(6+ev))&~,   ダブルクォートのダブルの悪魔が少し緩和される。多分。
00.  永久loop の強制stop トリガ。   loop ってしまったとき、zop も入力不可の場合が多い。 なので、msxy を loop directive 内に忍ばせる方式の方が賢い。0_zop.html job も良い。 zop_chk = 0 を default にした。 on 2022/03/11
2021/04 現在の status: loop 強制停止法は、3通り アリ。①msxy 方式はやぼったい。②0_zop.html job 事前準備 --実践的。 ③loopck でサイクル値を 10 位にして、loop 時、shift+CapsLock を叩く。 → どれでも良い。
cf. VBScriptで、Do〜Loopを「Esc」ボタンで解除したい。 できない、だって。   ウソだろう。
cf. どうやってVBScriptやJScript (それぞれWSHあり )から WinAPIを使うか  投稿 2018/05/18 12:27
   |--- Hello, Win32 API(VBScript) World!  Posted on 4月 20th, 2012 by cx20
   |--- WindowsAPIを使ってキーボードの状態を取得する
   |--- This is how to call WIN32 API calls in vbscript and jscript. Sample Window's API functions.
 editable <span> =0,sk@1, disscus cherry,@1,if(ev=0)3,c+[◯,@,kb(trim(azz(1+ev))&"~",@chan,^a,^c1,=(replace(sv1{}vbCrLf{}"/ ")),j0(ev,sl500,^a,^c,@pro,j0[<a href="javascript:ear2('jies'{}1669);" title="発音 ♪">♪</a> ,   解説:ev=0 set。1/2.. 英単番号,@1 へ jump,英単 list..,@1 番地,if ev=0 なら次・否なら +3 jump, c+[日本語, kb( 式,
「shift + マウスクリック」 の選択範囲確定操作の左手は、左 shift ボタン押しは疲れる。右手・左手クロスして、右 shift ボタンを押す方が楽。∵ 手の移動距離が短い。伸ばす方が楽。 2019/08/23 発見
2019/09/24 jj(〜& , jj[式 の括弧(,[ を逆にした。jj[〜&変数&〜, jj(式 と、( を式 form のstandard にする統一仕様に直した。結果が文字列の場合、文字列を""で囲むよりは、変数を&&で囲む方が、楽で、見易い。escape 表記も楽。
2019/10/14 j0[, j0( は、亜種として、c+[, c+( または、C+[, C+( がある。方式的に異なる。c+ 系が、最速・最も軽い、しかし、文字化けする。詳細は、方式比較 を参照。どれも、優秀。
--------------
 現マクロ image を下記マクロ image に置換したい時は、対応の をクリックすると※ 、その下のマクロ image が clip board に copy されますので、これを くまらボタン の InputBox の入力枠に paste して下さい。
■inputbox 枠のクリア ---- tab ボタンを押すと、全選択&削除発生。inputbox 世界共通仕様みたい。 2022/02/03
[ i.e. 入力枠内をマウス右で、全選択 を click し、マウス右で貼り付け(P) を click。 (何故か、 CTRL+A キーボード操作が効かない。why? なので、{end}, shift+{home} のキーボード操作)or {home} で先頭にカーソルし、Ctrl+ {del} で、全削除。or 2021/05: 先頭に ^a,@ 挿入し、 OK ボタン。
※ onclick="document.execCommand('copy');" の汎用 java script 関数。選択部の string を clipboard へ copy。

【独り言】
(^c ≠ ^C -- why?, ∵ ^+n = ^N) --- 記憶の事。 (where, ^ = ctrl, + = shift, % = alt)
(ctrl+shft+B ボタンの sendkeys は、何故か、^+{b} である。それ以外は失敗する。vbs はイイカゲン。)

使い勝手が良い汎用(ホットキー)マクロなんて、多分、滅多に無い。また、カスタマイズは人によって異なるので、このマクロ集も役には立たない。適用したい自己のマクロをすぐに呼び出すには、このマニュアルの html を書き直すか、日本語漢字変換の「単語登録」に 自己のマクロ image を登録しておくと良い。例えば、「alc」に 1. の「^c,^1,^l,^v,{home},jjhttp://eow.alc.co.jp/search?q=,~」を登録しておき、必要なとき、くまらボタンの入力枠に「alc」と入れて、漢字変換キーを叩いて、書き直す。とか。必要な時直ぐ出てくる、という要件を満たすには、単語登録の方が良いと思う。html の書換えも自マニュアル化として必要だと思うが、即時性としては、漢字変換には負ける。
例えば、後で、【】で前後を囲むという操作は時々発生する。一発操作は、経験則として、すごく便利である。html editor の project2 にはそんなのが登録出来る機能があって、便利している。project2 を使っていると、メモ帳なんて低レベルな editor は非常に疲れる。今は日本語 FEP に、「ぶ」(ラケットの)に「【】」を個人単語登録してある。「^c1,jj【】,{left},^v1」 も追加登録してみた。--- おお、これなら、使えるね。いちいちマニュアルなんて開く訳がない。「^c1,jj[【&sv1&】,」or「^c1,sv[【&sv1&】,0rv」or「^x,clip0,sv[【&sv0&】,0rv」の方が賢い。(^c 直後、選択状態が解除される環境がある。 ex project2 の編集画面。なので、^x 方式も必要。)
「サンドイッチ・挿入」マクロ last answer = ^x1,j0(【&sv1&】)  です。  -- or  ^c1,IN,j0(【&sv1&】)
   sv1 のスペルを忘れたら、 ^x,jj【】, {left},^v (by clip 保存・復元) but, コレ遅い !, {left} 致命的 NG.
   --- 日本語 fep で、【】を先頭に挿入し、】をマウスでドラッグして、お尻に持って行く。が、楽。(cut&paste 不要、が、イイ)。メモ帳では不可。

(2018/09/27 発見: project2 の編集画面内で「^c1,jj【】,{left},^v1」をやったら、失敗した。メモ帳だと OK なのに。^c1 直後、選択エリアが開放され、jj【】、が右隣に挿入されて失敗。project2 さんは、CTRL+C 直後選択開放している。まあ、いいけど。「^x,jj【】,{left},^v」で代替可能。 --- 本機能、ハッキリ言って、スバラシイ。
(メモ帳でも {left 2} は {left} 扱いされる。つまり、反復回数指定の機能は機能していない。{left},{left} も駄目だった。{left},,{left} は遅れが発生してか ok だった。)
(2018/09 最近は クマラボタンに ^c を入れて、 CTRl+C 一発ボタン として利用している。手操作がだいぶ楽との印象で very good でオマス。)

-実践比較-
今まで: 挿入前に位置付け click①、「ぶ」と叩き漢字変換して【】を挿入、】を選択 & ^x(click② &選択 & 右click③, cut を click④)、後の挿入位置を click⑤, 右click⑥, paste を click⑦。 --- click 計 7 回(疲れるネ)。
今まで 2nd click① & サンドイッチ部選択、右click②, cut click③, 「ぶ」と叩き漢字変換して【】を挿入、【】の真ん中を click④, 右click⑤, paste click⑥ --- click 計 6 回
今度: click① & サンドイッチ部選択、くまらボタンの入力枠 double-click② して全選択,delキー叩く, 「ぶ」と叩き漢字変換して「^c1,jj【】,{left},^v1」を表示, OK ボタン click③ ---- click 計 3 回 ----- 勝った。

■ 似たソフト、cf. AutoHotkey (日本語ページ)←でもこれ、 programming です。win キーが asign 出来る。.ahk ファイル(アホカ、に見える)。VBS の亜種ですね。spec. を見ると、.vbs より汎用性があって多分使えるね。.ahk で、複数ボタンがある inputbox でも作ろうか。マウスの模擬もできる。日本サイトはダメですね。   cf. Auto Hot Keyで簡単にGUIフォームアプリを作る   cf2. 超便利に。メモ帳の文字列から一発Web検索へ。複数開き見比べWeb検索へ。 2011年4月  cf3. AutoHotkey_L   cf4. AutoHotkey Quick Reference
cf. WSH JScriptを使いこなそう 〜マウス操作〜 --- .vbs に書き直しても、そのまま動作した。JScript は関係ない。rundll32.exe 経由。
--- つまり、.vbs 下の mouse 操作は、 MouseEmulator.dll (9 KB) を置けば簡単に実現される。 GetMouseX (or Y) は結果不正。常に戻り値が 0 である。多分 bug. CSharp Mouse Emulator プロジェクト の MouseEmulator.dll は、同名の全くの別物である。
exe( directive で改めて test しても、やはり、get 系の戻り値は 0 だった。 2019/09/17   困る!
sl5000,exe(msgbox WshShell.Run ("rundll32.exe MouseEmulator.dll| _GetMouseX@16"| 0| true)
c. MouseControll.dll の test [正式な確認手順法が記述されている]をすると、(X,Y) の msgbox が出ている。しかし、「0」の msgbox も出ている。私の戻り値入手法の認識が間違っているらしい。-- 間違って無い。
MouseEmulator.dll の方は動作する。戻り値インタフェースは未サポートだが、 msgbox 出力する coding。しかし、部品としては、msgbox 出力はセンスが悪い。
exe( WshShell.Run "rundll32.exe MouseControll.dll|_GetMouseXY@16"
---------------------------
マウス位置
---------------------------
(x, y) = (1245, 708)
---------------------------
OK   
---------------------------
c. msgbox 応答画面で、OK ボタンを押す前に、^c ボタンを押すと、 clipboard に msgbox の message (下記、複数行 image) が copy される。スバラシイ。vbs 環境での msgbox を作った人は、天才です。イヤ、やはり、アホです。私なら、隠し機能にしない。範囲を選択可能にしておく。それで終わり。 cf. メッセージボックスの内容をコピー Win での常識みたい。でも、今迄、知らなかった。他所を見て、また戻ってきた時 msgbox が灰色脱たら、header 水平タイトル部を click して、灰色を解いて(再 active 化)、^c して。
--- MS の世界では、この隠し機能が半常識みたいだ、メモ帳の msgbox もそう。(ex. 真っ皿なメモ帳に「あああ」検索。その msg box。)、IE の alert(), confirm() の box も同じ。しかし、Chrome の alert は違う、box に title 行が無い、しかし、 msg エリアは選択でき (インド辞書の alert は、選択不可。 why?。local test では、選択可能。 why?)、 Ctrl+C 可能【普通】。やはり、MS は バカだ。Google は、まとも【普通】。 MS の msgbox の ^c の操作性は超優秀。Chrome の alert の操作性は 今一 or NG.
★ msgbox の最大文字数: 無制限との印象だったが、違っていた。msgbox の prompt の最大数は 半角で 2046 文字 (manual にもそうなっていた)。inputbox の入力枠と同じ。--- コレはオカシイ。al(sv1 の表示サイズは、2046 なんてもんじゃない、無制限だ。この違いは、al( directive は、WSH 用に拡張された msgbox 機能の拡張版WshShell.Popup メソッド だからだ。スバラシイ。
cf. Hey, Scripting Guy! カスタム メッセージ ボックスに 1,024 文字以上表示する方法はありますか Popup メソッド だって。
cf. javascriptでalertの文字列をコピー   prompt() も
cf. javascript初心者なのですが、alert関数に設定できる文字数は何文字まで設定できますか?
cf. Chrome, html local test. alert 文字位置で選択可能。 prompt 上 mes 選択不可、マウスポインタの形が I にならない。入力枠は、改行無視。なので、prompt は NG. alert() は、インド辞書の場合、マウスポインタの形が I にそもそもならない。 why?
cf. How to copy text of alert box  Chrome は、改行\n があると、選択不可に切り替えている、らしい。 local test でも確認した。----  ということは、使い物にならない。-- そうでも無いみたい、入力枠の一行を ^c して、メモ帳に ^v すると、一行表示で、改行は無効化されている。しかし、メモ帳では無く html textarea 相当の area へ ^v すると、正しく改行されている。html の入力枠の中をよくみると、\n 相当の一文字は、左上N右下L の四角い記号が表示してある。つまり、情報量としては、改行は、存在している。
cf. Using prompt() I am generating some html to and need to know the maximum length that I can put in the popup.  実質、無制限。
cf. How to copy text to clipboard with Javascript easily

c. 世の中アホだらけで、マウス位置取得は、MouseEmulator.dll は、bug で動かない、MouseControll.dll は msgbox 出力。で、使い物にナラヌ。マトモなのは無いのか。残るは、CSharp Mouse Emulator で C++ spec. だが、dll 部品としては、見れば、どんな言語から call されているなんて、意識不要。なので、CSharp Mouse Emulator の dll 部品を調べることにする。
cf. JavaScriptの例ではRunメソッドで、このDLLをWindowsに標準で組み込まれているRunDLL32.exeから呼び出すことでマウスを操作していました。
c. CSharp Mouse Emulator も、仕様が不明なので、やはり無理。dll の登録名も予測しても外れで不在。
RunDLL
---------------------------
MouseEmulator_CSharp.dll でエラーが発生しました。
エントリがありません: _GetMouseXY@16
---------------------------
OK   
c. 機能的に、マウスポイントの現在地なんて知る必要性が、そもそも無い。 というか、MouseEmulator.dll はう一部 big がある。何故直さないのだ。実に迷惑ダ。
そもそも、マウスの位置情報取得なんて javascript では簡単にできる[但し、自分の部品の領域内の話し]。なので、Jscript + vbs チャンポンにすれば、run メソッドなんて i/o の塊みたいなのは、不要なのでは。つまり、file を .vbs から、 .wsf(Windows Script File) にする。
cf. Getting the current mouse position by JS
cf. マウスポインタの位置、座標を取得する (JavaScript プログラミング)  動いている。 html coding. web 内の マウスxy 座標を表示。スゴイ。web 外の mouse はカウント出来ない。なので、今一。
cf. 第26話:WSHを利用したローカルアプリケーション
cf. WSH : VBScript から JavaScript の呼び出し
cf. VBScript から JavaScript (JScript) の関数を呼び出す
cf. javascriptのダイヤログ表示について(JSPを使っています)
c. MouseControll.dll の方は動作し、xy pos を msgbox 表示するので、この msgbox を表示させてままの状態で、例の隠し ^c を切る、にて、目的はほぼ達成。このキタナイ結果で我慢。下記が、そのマクロ。MS の世界内でのみ成立する実にキタナイ方式。また、run メソットに false 完了 option 指定。MouseEmulator.dll の bug は直しといて欲しい。void CALLBACK で無く、int CALLBACK 指定になっているのが臭い (?)。
exe( WshShell.run "rundll32.exe MouseControll.dll|_GetMouseXY@16":Wscript.Sleep 5000:WshShell.SendKeys("^c"):WshShell.SendKeys("~")

参考 コマンドラインからマウスを操作する方法 (rundll32.exeで動くDLLの作成法): GetMouseXY のVisual C++ ソース
// マウス座標を取得する関数
__declspec(dllexport) void CALLBACK GetMouseXY(HWND hwnd, HINSTANCE hinst, LPSTR lpszCmdLine, int nCmdShow)
{
	char out[100];
	POINT pos; // Point構造体

	// 取得
	GetCursorPos( &pos );

	// 表示
	sprintf( out, "(x, y) = (%d, %d)", pos.x, pos.y );
	MessageBox( hwnd, out, "マウス位置", MB_OK );
}

↑ コノ話、奥が深い。rundll32 の void の戻り値なし mode は動く。 しかし、  ↓ int 整数 型の戻り値アリ mode は動かない。 why? rundll32 caller には値「0」が返る。
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//	
//	 関数名:GetMouseX
//	  概要:マウス座標を取得する(X)。
//	  引数:なし
//	 戻り値:マウスのX座標
//	
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
__declspec( dllexport ) int CALLBACK GetMouseX( HWND hwnd, HINSTANCE hinst, LPSTR lpszCmdLine, int nCmdShow )
{
	POINT pt={ 0, 0 };

	//	現在のマウスの位置を取得
	GetCursorPos( &pt );

	return (int)pt.x;
}
cf. dialogboxでinputboxを作る (2012 年作成) を解読せよ。
■ Clipboard の排他制御管理、全くしていませんので、運用でカバーして下さい。ex. ^c,al準備ができたらOK押して,^v は、実は危険。^c1,al〜,^v1の方が安全。∵al〜の間、他のことをすると、clipboard内容が ^v するとき、^c したときと違うカモ。
■ 自動運転は、気をつけないと、実は危険。SendKeys を間違った場所で実行させると、data を簡単に壊すので気を付けて下さい。
ex.「 同一 browser 内の場所から ALC 利用。」のマクロを間違って、メモ帳の単語を選択して、実行させると、メモ帳が不正更新される(ALC の url がメモ帳に挿入される)。なので、14th は、お勧めしません、1ALC の「英辞郎 辞書引き from メモ帳 」を勧めます。性能差・ overhead 差は有りません。
■ 当初 AppActivation を発行する mode と、発行しない mode の 2つの運用操作をしていたが、廃止して、Activation 運用方式のみに統一した。方式的には、凝った造りになってしまった。「くまらボタン」の形状は、InputBox メソッドの入力画面そのままであるが、実は、別Task でありマクロの管理制御をする本体の Task とは別である。ワザとそうした(つまり、待機中は、WSH [wscript.exe] は、実は、 2 本走っている)。このお陰で、AppActivate を掛けた本人が Window の focus が移動しても InputBox を終了させると、activate された window がロック 状態(deadlock に近い)に陥るという、MS bug から開放された。(Activate 解除の explicit な interface が無い。無くても良いが、 focus の移動で、完全解除されるべきなのに、痕跡が残っており、それが違う状況で誤動作を引き起こす。排他制御の bug。activate という lock を掛けたまま消えた、と判定されるか、lock 主管理が乱れる。の feeling。なので、input のjob を1回で死ぬ他人に任せた。
つまり、制御本体の .vbs である AA_Kumara.vbs は、InputBox を発行しない、 InputBox 発行のみがメインの AA_Kumara_hand.vbs を毎回生成する。この .vbs は、1回の処理毎に Job を終了する。)

■ システム構成(二重階層構造)
ボタン部 --- AA_Kumara_hand.vbs (OK, キャンセル毎に消滅・生成)
本体部 ----- AA_Kumara.vbs (常駐)

AA_kumara_directive.txt --- ディレクティブ退避引き継ぎ file

 【from 2019/08 から、資源が無駄なので、2 taskjob 機構の default を uni に変更した。これにより、memory 約 2 MB の hand 対応 wscript.exe が無くなり、memory 約 4.5 MB の本体対応 wscript.exe のみの常駐となった。 Activate を発行したいときは、gemini mode を true 化し、=(1)gemini, または =(true)gemini, を動的に実施すること。戻しは、=(0)gemini, または、=(false)gemini,実施。 くまら終了・再起動実施。@save[適宜および終了時、マクロ img の file save], @last [適宜、マクロ restore] 単独マクロは、効かないので、事前に旧マクロイメージはメモ帳等に保存しておくこと。】
後日の タスクマネージャ表示では、uni_task mode 実行時の size は、2,465 K だった。尚、AHK の size は、2,100 K だった。

【from 2021/04/22】Activate を掛けるのは、くまら direct ではなく、第三の仲介 Task (別PID)にさせることにした。仲介 Task は、Run call される。つまり、SendKeys_J.exe を仲介者(瞬間消滅する)にし[SendKeys55k.exe による activate は、日本語 window name 未対応のため止めた。]、enable の window name だけ指定し、sendkeys 内容は「何もしない」とすればいいだけ。 ac,acPID 記述変更。@save, @last 制限なし。
--- これで、すっきりしました。


くまらボタンの図 くまらボタン本体 AA_Kumara.vbs (VBScript Script ファイル) をダウンロードしたら、そのショートカット file を作り desktop 等に置いて下さい。
 ショートカット file を右クリックし、プロパティ(R)/全般タブ/のプログラムの所が、Microsoft © Windows Based Script Host となっているかを確認して下さい。なっていなかったら、横の変更(C)... ボタンを押して、変更して下さい。
 これで、マウスでダブルクリックした時、メモ帳では無く WSH が call される様になります。メモ帳で開きたいときは、右クリック/編集(E) をクリックして下さい。

プログラムが分かる人は、メモ帳等で file の中身を見て研究して下さい。
セットアップ等の大袈裟なものは有りません。WSH も Windows に標準搭載されています。

くまらボタンは、画面に常駐します。既定値は 17" display で display の右下の少し上に配置する様に設定されています。この初期値は ソースの xpos, ypos の数値を書換えて変更出来ます。自 display に合う様 AA_Kumara_XYpos.vbs ツールで、最適数値を探って下さい(.ini ファイルを用意しても良かったのですが、大袈裟すぎるので、止めました。ソース(AA_Kumara.vbs)の頭にある xpos, ypos の数値を書換えて下さい。OK ボタンを押すと、位置は毎回初期位置に戻ります。ご不便をお掛けします。)。タスクバー上に WHS の赤い四角のアイコンも常駐します。
経験則では、くまらボタンは、右端に配置し、OK ボタンの部分が壁から 1 cm 位、常に見える様にさせておくのが良い。一版 window は(必要な時)、右壁から 1cm 離して、 OK ボタンを表示させて下さい。くまらボタンの他の部分は、いつも他の window の後ろに隠れています。他に迷惑は掛けない。また、当然ですが、待機中 cpu は食いません(らじる★らじるの様なバカじゃない)。

Windows管理者のためのWindows Script Host入門
■VBScript の言語マニュアル  (in msdn.microsoft.com)
cf. .Popup Popup method 文字数制限ナシ。
cf. MsgBox Function
cf. VBScript の関数
cf. VBScript関数リファレンス  ASCII 文字セット table もあり。vbCr ↓, vbLf ↓, vbTab ⇢
cf. 仮想キーコード一覧    この表には、「無変換」も登録されている。無変換なのに、半角で無い時、IME 「あ」→「ア」→「_A」と回転する。押しっ放しにすると、永久回転。 Caps Lock も似てる。Caps Lock は、半角/全角の両方で動く。まー、イイけど。半角の時は、回転しない。なので、半角のときは、文字通り「無影響」の優秀ボタン。F7、F8ボタンでカタカナ化するより、楽だね。知らなかった。[カタカナ ひらがな]ボタンの方は、ソフト的には、一回押すと、上がらない症状。なので没。
cf. VBScript メモ http://www.sage-p.com というサイト。たまたま見つけた。
cf. VBScript の使い方 ... 演算子
cf. CX's VBScript Diary
cf. VBスクリプト講座・基礎編
cf. 【VBA入門】正規表現で文字列を抽出、置換する方法(RegExp)
cf. 【VBA】正規表現を使用して検索や置換を行う
cf. 【VBScript】正規表現で置換【RegExp】   VBA と VBScript で違いはある?   どっちも同じ
cf. VBScript入門 (IT ガイド)--- VBScript: 正規表現による置換 Replace
cf. VBA で正規表現を使う(RegExp オブジェクトのメソッド)
cf. Lesson2 プロパティ・メソッド・オブジェクトの意味を理解しよう --- method の定義。
■C++ のマニュアル
cf. icon Programming Place Plus
cf. 【VBA機能拡張】C++でDLLを自作してExcelVBAで呼び出す方法
cf. BSTR とは? BSTR は COM で利用される一般的な文字列の形式です。

0. マニュアル

本ツールは、WSH のバッチの VBScript の Sendkeys メソッド(仮想キーボード操作)によりキーボード入力操作を自動化するものです。一連のキーボード入力を一発ボタンが代行します。
{あ} 「カタカナ・ひらがな・ローマ字」 ボタン = {VK 242}   常に「あ」へ移動。あ→あ、A→あ
{半} 「半角・全角・漢字」 ボタン = {VK 25} or {VK 243}   トグル「あ」⇄「A」。{あ}{半}連チャンは常に「A」
{変} 「変換」 ボタン = {VK 28}
{無} 「無変換」 ボタン = {VK 29}   あ→カ→カ→あ
c. 「かな入力」」⇄「ローマ字入力」のトグルは、 Alt+{あ}= %{VK 242} or {VK 21}
cf. 仮想キーコード一覧

環境としては、OS が MS Windows ならば OK。基本的には Browser 共通。

マクロ (Macro) = 「くまらボタン」の入力枠に入れられた、SendKeys code や directive を「,」 カンマで区切った複数命令群。

(カンマで区切られた部分には、内部的には 100msec の待ちを対応させています。詳細は .vbs file のソースを見て下さい。 )
(ex. SendKeys("^c^f^v") の様な複合機キーの連続指定は許されていません、なので、マクロも、「^c^f^v」はいけません、「^c,^f,^v」として下さい。)
メモ キーストロークのパターンを送信できるのは、単一のキーを複数回押す場合だけです。たとえば、X キーを複数回繰り返すことはできますが、Ctrl+X の組み合わせを複数回繰り返すことはできません。
ex. ^v~ はイイカ?。^v は ctrl+v の2つボタン押し、~ は{ENTER}の1つボタン。なので、OK。^v,~,にしなくても良い。
ex. +(EC)は、Shift キーを押したまま、E キー、C キーを順に押す、だって。本当かな?。「+{right},+{right}」と「+({right}{right})」と「+{right 2}」と「+({right 2})」と...の違いは何だ?。
ex. ^c,al今現在^cは本当に終わっているか?, ---- vbs の sendkeys が、完了待ちしているかは、疑問。,sl500, とかの sleep (Wscript.Sleep スリープ msec. 時間)を噛ました方が安全。
(ex. SendKeys("access") をして欲しい時、,access, はいけません。,a,ccess, [∵ SendKeys("a") と SendKeys("ccess") が順に実行される。] や ,jjaccess, や , access, や ,Access, ならイイです。∵ directive の ac と競合します。ご迷惑をお詫びします。意図的手抜きです。また、日本語変換 mode が「あ」の時、SendKeys("ccess")をやると、「そそいとと」に化けますので、一般文字列叩き模擬は、jj〜 がイイです。また、sleep 時間の tuning のことも考えなくて良い。 )
(ex. ,jj文字列, 等を場違いの場所で実行すると、最前画面の他の文書を簡単に破壊しますので、OK ボタンを押すときは、カレント window が操作対象の画面であるか確認して下さい。
■→ この注意は重要です。 sendkey の発行は一歩間違えると、編集可能 data を誤って勝手に簡単に破壊し、非常に危険な tool です。便利ですが、諸刃の剣です。
data の sendkey や jj... や jj(...) の directive の前にはペアで、alOK? 等の alert mess 発行のガードを常にする用心掛けて下さい。

sendkeys の「^+%~{」先頭以外の一般スペルは、スペルミスとみなし、拒否する、とした。文字入力は j0() を使うこと。 from 2019/07
[本マニュアルに無い スペルの directive は、昔は、すべて sendkeys 対象だった。今は、「^+%~{」の規制があるため、拒否される。従って、ファイル破壊の危険性はほぼガードされている。]
ex. sleep500, は abort。{r , は file ハカイ。今も。∵{ 先頭のスペルミス。完全 guard は無理。dummy補正}
--- 昔の話し。
もし、裏に隠れた window に対して操作したいときは、ac ディレクティブをかまして、その window を AppActivate して自動で叩き起こして下さい(安全対策)。さらに、もし、その window が未だ起動していないときは、手動で起動しておくか、自動起動したいなら、 rn (Run) や ex (Exec) をかます必要が有ります。)
c. 2020/11 ,^a,^c, は、^(ac) でイイ。だって。 ^a なんて big data でもたかが知れているので、 sleep 配慮不要みたい。


下記 directive (2文字ベースのディレクティブ、命令指示、指示書)を操作性を上げるために追加自作した。尚、大文字小文字を区別する (= case-sensitive)。
(ディレクティブと後ろの引数との間は詰めて下さい。手抜きです。)
マクロ全体が「空」 or 先頭ディレクティブが空「,〜」 default 機能(ページ内検索機能) --- ^c,^f,^v (ページ内検索)を生成。
尚、先頭以外での空 directive 「,,」は、空振り(何もしない:無害)し、次の directive へ行く。
ディレクティ部の先頭がブランク --- そのディレクティブは空振りで、次のディレクティブへ進む。これは、sendkeys に先頭文字がブランクのものを送ると、空振りとなるため、結果的にそうなる。このことは、つい最近知った。→ ウソでした。 on 2019/01
→ 勘違いだった。ファイル破壊していました。 directive 一覧に無いので、そのまま sendkey されて、次の directive 処理へと進んだ。メモ帳の内容が、「ブランク〜」の directive 指定文字列で壊されていた。スペルミスすると、とんでもないことが起こる。くまらボタンは、基本的に危険。   → sendkeys の運用ミスは、基本的に危険だが、現在は、くまらマクロは、ガートしているので安全。
下記の結果を予想しなさい。
ex1. al1,al2,al3
ex2. ,al1,al2,al3
ex3. al1, al2,al3
ex4. al1,@@,al2,al3
ex5. al1,,al2,al3
ex6. jj(x1,.txt) ---- これは、「jj(x1&.txt)」とすべきを、間違えた例。
マウスポインタを動かさずに、くまら実行させるには、キーボードのみの操作 「Alt + Tab」で、task くまら に矢印ボタンで位置づけ・リターンボタン。
vbscript には pulldown 複数入力インタフェースが無い。イイ迷惑である。代替案を示す。 inputbox で、番号付き複数選択肢の画面とし、入力には、全番号を詰めて並べる。マウスだけで入力枠 image を変更することは出来ない。キーボートが必要。選定番号の前に、半角または全角の space を入れて、ok ボタンを押す or リターンキー。とする。 2021/03/28
@broken 接尾辞 directive, inputbox 破壊回復ディレクティブ。  zz_ago は、ダメ押し変数。前回のOK 実施時 image への復元。 2021/06/02
(inbox が破壊されたら、@broken も良いが、「キャンセル」ボタンを押して save セズ & zz_ago2 復元を選択が楽。)
zz 内部変数名。現在のマクロ全体イメージの文字列 string. ex. =(zz)macro0_,al(zz,@, ex2. マクロが非常に長くて input box の一行枠では全体が見にくいとき、は、先頭に al(zz,@, を噛まし、確認すること。尚、al(UBound(azz), は、配列要素の最終番号、確認。各要素確認は、al(join(azz{}vbcrlf), al(join(azz{}vbcr) も可。 al(join(azz{}\n) も可。 等。
azz(番号) zz の「,」で分離した各要素。配列形式。azz(0) は、第一 directive, azz(1) は、第二 directive。
zz_ago1 〜 4 2世代前の zz image 退避変数。 --- input 破壊の復元対策用。@last とは違う。2つ前の OK ボタン時 image。memory 内 save。
zz_hist 過去 4 世代の zz_ago 一覧 4 行文字列
tmode tmode 確認・変更。内部変数名も兼務。   値は、真理値 false or true. ToMoClip 連携 modeつまり、tmode on の時、くまらボタンの「×」or 「Esc」or 「キャンセル」ボタンを押すと、inputbox 入力枠全選択の ToMoClip 待機状態に遷移(つまり、くまらが activate かつ inputbox が 全select状態)。tmode off の時、くまらボタンの「キャンセル」を押すと、tmode 値変更の問い合わせがある。
c. この機能は、tomoclip 連携の一つ。tomoclip のアイテムに貯められたくまら data をくまら inputbox に paste する時、1 click でinput 枠が全選択状態の受け入れ可能状態になってくれる。省力化の一環。その代わり、tmode on の時の くまら終了は 「boot」directive を新設。
  【関連補足】tomoclip と共存でクマラを使用していると、 関係者の数が、 user AP とクマラ、の 二人関係から、user AP, tomoclip, クマラ、の三人関係に変わる。現在クマラは directive が inputbox の OK ボタンを押すと、 input box が閉じ、 directive 処理に入り、処理が完了すると、再度 inputbox を表示し待機する。つまり、inputbox を再表示の際 activate 状態は inputpox に移ってしまう。二人関係のときはこれでも良かったが、三人関係になると、これは少しマズイ。 user AP の activate 状態が解除され、最前面 window 管理が乱れる。 user は tomocip を使いたいときは、user AP エリアを触り activate 化(最前面化)の手操作を毎回行う必要がある。
待機中は、最前面から自動的に退くべきである。日陰者 (obscure) に徹するべき。 そこで、Alt+tab を切って直した。最終的に、Alt+Esc を切る様に修正した。 on 2022/11/15。
--- xposv, xposvt, xposvf 3 directives にて、Alt+tab の mode 指示運用。
@big 単独 directive。 事前変数 big 内文字列を zz に格納。超 508 バイト(半角 254 文字)マクロ機能。input 枠 image は @big のまま実行。
  |--- big 定義は [〜]big は不適(∵カンマ 「,」 内包) 、メモ帳経由の、^c1,(sv1)big, が良い。or ed(big1, ed(big2, (big1 & big2)big が良い。 仮 test なら、 in,(x1)big,。 メモ帳のマクロ部を選択し、r(big で良い。 2022/11
 当初 @long の予定だったが、(x1)long が実行 err となり、予約名 long 抵触みたいなので、 big に変更。
bigzoom 変数 big の data 内容の msgbox 表示。カンマ毎に改行して表示。 al(big より見易い。
@big/ @Big(ディレクティブ文字列式 @big の拡張(Σ big 的)。指定式から内部変数 big を定義し、@big として実行。 inputbox には解凍 image は展開しない。大文字「B」の時は、debug mode.  式の中の「,」は escspe 必要、「,`」が良い。
@zop 平時 → 一時 test mode 突入指示。directive 接尾辞最後4文字)。 clipboard zop 文字(全小文字)と同一機能。 機能的には、pool の動的設定に近い。
   (directive 最後4文字が @zop で、OK ボタンされると、次実行 directive 作成 inputbox を表示、Cancel も効く。
    directive img or zop0〜zop5の番号 0〜5 or 10〜15 を叩ける。
    10〜15 は、 現 directive image を -10 した数字の zopN に格納するのみの特殊機能。
    zopN 変数の作成・管理は user 責任。by ed(zop0 等。 N 世代可能。今は、6世代。
    最後の4文字の @zop を除いた image が、bzop に格納。番号指定で無い場合、叩いた directive image は azop に格納。)
zopreg zop0,zop1,zop2,zop3,zop4,zop5,bzop,azop 表示。zop 接尾辞機能で、番号指定で directive 復元できる。
bzop clipboard zop 格納割込みの test mode 前の状態に before する。(bzop)defa と機能等価。変数名兼務。2世代 directives 切り替え機能。
azop clipboard zop 格納割込みの test mode 後の状態に after する。(azop)defa と機能等価。変数名兼務。2世代 directives 切り替え機能。
3d 選択部サンドイッチ機能(サンド機能)。 内部変数 p3d (ペア3d) の [前^後]p3d 事前用意要。(or ed(p3d も可) 。 くまらは、^ を選択 img で置換し、書き出す。尚、実行直後、実行前の選択文字列 image は、変数 select_3d に格納されている。
p3d p3d 変数の編集。
p番号 (番号 = 0 to 9)  p0 〜 p9 サンドイッチ変数の 3d 実行。 変数名と同じ directive 名。
3tタグ文字列 選択部 HTML-tag サンドイッチ機能(サンタ機能)。 ex. 3ti, --- <i>〜</i> 化。
emmet エミット VSCode emmet like editer. 工事中。from 2021/12
emode 実行時エラー監視環境変数。 abort しない様に emode = 1 が規定値。エラーか発生しても abort しない。 err 検出後は emode = 0 の行番号付きダンプ採取 mode に切り変えるかの否か問いがある。 from 2021/03/20
u_mess  user own message 格納変数。くまら Box の待機 dialog の表示 string 文字列式。改行は、"\n"使用。リセットは、,("")u_mess, or ,=u_mess="", を使用。z1, 機能などと共に使用する。 ex. ("test\nです。")u_mess,
ex. ^c1,(sv1)u_mess で、表示 string を定義するのが良い。 経験則。
man online html マニュアル(この html 文書)。単独使用、あるいは、行の先頭3文字が "man" (4文字目以降は無視される)。 --- ^t,^l, くまらボタンの url,~ を生成。新規タブに開きます。browser 画面上で実行のこと。
@〜 or @@ ディレクティブ終了指示、後はコメント扱い例外は、@last と @save --- この機能、便利です。 ex. ,@@,好きな文字列を記す。 「,@,」でも良いとする from 2019/07。「,@識別子,」のマイルズストーン表記(マクロ群グループ化 id 相当) も可。 sk@識別子 のスキップ directive とも連動。 from 2019/08。
  ex. sk@test2,@test1,al1,al2,@test2,al3,al4,@,al5   --- i.e.  当面使用の複数マクロを切り替え実施可能とした。
@last or @,last directive の先頭 5/6 文字オマジナイ。前回 dirctive 復元& comment 化。退避 file から復元。 ex. 前回 alkkk なら、@,alkkk 生成。
  ------ 新規立ち上げ直後に実施すると、前回終了時の img を復元してくれる。便利。
@save退避 image   後続 img のファイル退避、単独マクロ。「@,退避 img」に戻して終わる。
zoom  azz マクロ配列の2次元 msgbox。macro 確認用先頭マクロ。マクロの先頭のみ許可。 al(join(azz{}vbcr & "■"),@, 似模擬。
z1  azz の最終1文字の ev 格納。 in 1文字入力 機能代用。 2020/11 enhance.  ex. z1,sk#,
nop〜 [先頭3文字が nop]   no operation 「ノップ」  一時無効化機能。痕跡を保存したいとき使用。頭に 3 文字付加。
aww(番号), ww 内部変数名。 wordword。 text 文字列 の内部変数名。aww() は配列、番号は、行番号 0,1,..。
al文字列 or al文字列@数字@ alert ex. al文字列 --- WshShell.Popup 文字列  popup は、「非モーダル表示」方式。改行マークは 「\n」 とする。@数字@ は、語尾引数。消滅指定時間(秒)。
尚、後述の jj,jj[,j0[,j0( でも、改行文字は「\n」で同一仕様。また、文字式 al[,al(,jj[,j0[,j0( 系においては、vbCrLf [carriage return, line feed; char(13)+char(10)] の改行コードの vbs 変数が &vbcrlf& の文字式の形で適用可能。くまらでは、簡易に &~& の代替表記をも提供している。vbcrlf, \n なんてスペル覚えられない。,~, directive も有効。   cf. 特殊な文字の入力(エスケープシーケンス) 「\n」 のお話。
ex. 真っ皿なメモ帳を開いて、test してみて。jj, j0 の発行は active window を write するので、使用は気を付けて下さい。一般的には、危険です。
 検証マクロは、al①いう\nえお,al[②いう&~&えお,al("③いう"&~&"えお",j0[④いう&~&えお,j0("⑤いう"&~&"えお",j0[⑥いう,~,j0[⑦えお
al のスペルは、「アラート alert の頭2文字。」。機能は、javascript の alert() , vbs の msgbox, popup に対応。】
この popup mess. の問い合わせに対し、キャンセルボタンを押すと、後半マクロを全スキップする。(キマグレ my spec.)
Automatic 消滅機能:文字列の最後数文字に「 @数桁数字@」を指定すると、指定数字秒後 popup box は自然消滅する。応答操作不要。
  ex. alこれは5秒後に自然消滅します。OKを指定したとみなされます。@5@,
文字列の中にカンマ 「,」 は禁止。誤動作する。 「{}」と置換するか、「、」 や 「;」 に変える等して。
補足:alIN の棲み分け: IN は al と同一機能、しかし、message box は隠れない。】
al(文字列式 ■内部変数含有 mess: 数式なので、必ず文字列は、「"」で囲むこと。演算子「&」 とくまら AP 内部変数が使える。 ex. wk-abc,al("wk = " & wk),  ex2. eval2("abc"),al(z(2)),  ex3. al("〜" & z(1)@5@), 5 sec 後自動消滅  ex4. al〜, と al("〜"), は等価。
ex5. al(数式 は、電卓代わりに成る。al( 10+20+45 は、足し算合計値 75 を表示。al("1+2= " & (1+2),
al[〜&〜&.... al 連結関数。 文字列はダブルクォート「"」で囲まない、変数は「&」で囲む。&sv1& は、&eval("sv1")& とみなす。文字列ベース表記法
【個人的には、MsgBox/ alert 代わりがコレだが、応答を要求するなら、操作性から IN> を使うべきだ、と考える。 IN> の方がイイんだ。尚、> は、out 的
一種の動的サブルーチン機構。長マクロの文字数緩和出、半角 500 文字制限緩和にも利用可能。
al(sl_v の結果。 変数は、未定義で参照すると compile err 発生。 sl_v は、くまら内で、初期値定義した。
---------------------------
Windows Script Host
---------------------------
スクリプト:	D:\old_del_d\Vista_D_drive\Etymology\5_tree\AA_Kumara_new.vbs
行:	596
文字:	1
エラー:	文字が正しくありません。
コード:	800A0408
ソース: 	Microsoft VBScript コンパイル エラー

---------------------------
OK   
---------------------------
 ex. if(msgbox("test"{}vbOkCancel)=vbCancel)+3,alCancel,@,alOk,@,
 ex. (msgbox ("test"))ev,al(ev,@    ex. exe(msgbox "tets"{}vbok{}"ttl",@    exe(msgbox "tets"{}vbokonly{}"ttl",@
 c. 上記から、変数 vbok は、vbokcancel と等価だと分かる。
alias/置換前文字列/置換後文字列/ ( or dbalias/〜/〜/)   アリアス・エイリアス・別名機能。長たらしい文字列を短縮化させる、省力化機能。マクロ先頭部から連続指定のみサポート。replace() 関数を使用している。文字列内に「/」は、予約文字で使用禁止。「,」は使用可能。ディレクティブ解析定義、先頭で特殊処理される。 dbalias は 展開結果確認の debug 用。
ex. alias/L5/{left},sl50/ ---- 後部に 〜,L5,〜 があると、〜,{left},sl50,〜 と内部展開する。
ex. alias/uu/al1,al2/,alias/L/{left},sl500/,al0,uu,al3,L,L,L の結果は、どうなる?。
注意事項:skip オフセット値、の数字は展開後のオフセット値を指定すること。

■ rename ディレクティブ群(第二種 directive)機能 ■ 別名、カメレオン directive。 ディレクティブのマトリクス取り出し直後にSub_rename サブルーチンを呼び、実現させる。該当 directive は、Sub_remame 部に記述する。短縮表記内部サポート。
つまり、drective 解析処理の頭の変数 str への格納時、圧縮 image を解凍させて展開する feeling。rename サブルーチン内の圧縮 directive には展開出来ないので注意のこと。
 w数字 rename 後 = j0(w数字  -- さしあたりの定形文を w0, w1,.. に記憶させ、 w数字 で write。write word 兼務。 ^c 版は r数字
 w(変数名 = j0(変数名
 r数字/スリープms read (= ^c) to w数字 , ^c1 の拡張
 r(変数名/スリープms = ^c and 変数への格納。
 ww p0〜p9, pA〜pZ, p_ と w0〜w9 運用 inputbox。定型句書き込み tool [name is Word Word]  --- ToMoClip の補助
  末尾 [p0-pZ, p_] or [0-9 A-Z _] or 数字1文字+ or 数字1文字-
  p0-pZ, p_  2文字指定は、サンドイッチ変数の定義。by inputbox。p0-pZ 通常 *^* 形式。「^」無し=全置換。p_ 外目 Tag img.
  [0-9 A-Z _]  1文字指定は、AP user 選択エリアサンドイッチ書き換え。末尾2文字目が p の時は、定義 request と判定。
  「_」は、Tag サンドイッチ p_ 定義&AP 書き換え専用。
   [0-9]- は、w0-w9 変数の AP user 選択エリアimg による読み込み定義。初期定義。
   [0-9]+ は、w0-w9 変数の AP user 選択エリアへの書き換え。
  尚、pN, wN 変数は、くまら main での ed(変数 にても定義・変更可能。
  先頭 ( vbs式 or 連結子はコロン「:」。( .he. は help 表示。

 ? = if(vbYes = msgbox("Yes or No"{}vbYesNo))   応答 box。つまり、yes なら 次 directive, No なら次次へ飛ぶ。
 s//r r(r_repl/500 相当に展開。 2022/11/07
 s//w w(r_repl 相当に展開。 2022/11/07


kbキーボード英数字文字列 or kb( or kb[ or KB/Kb/kB  keyboard。 vbs の sendkeys(文字列) を実行(sendkeys の一般文字入力を禁止したので、明示的に指定があれば、sendkeys を許す意図)。日本語変換 mode が 「A」か「あ」かで結果が異なる。英字のみなら使えるかと思ったが、全く駄目。 お勉強用 directive.
from 2021/04[カタカナひらがなローマ字 ボタン、を押すと、必ず「あ」の ime になる。なので、このボタン、then, 「半角」を押せば、必ず「A」の ime になる。] → コレを自動化適用した。by sendkeys80.exe 。但し、kb# は、昔 mode の「あ」「A」手動変更方式のまま残した。
(ime 自動「A」は、性能劣化がひどいので、KB/Kb/kB なる(大文字 込み)、の 「IME イジラズ・ユーザ責任 旧 mode」 をサポートした。on 2021/07)
--- なので、kb 適用後は日本語変換は「A」状態になる。 ---- これを悪用すると「kb,」は、ime 強制「A」mode 化 directive となる。
elseif Left(str,2) = "kb" then ' bare sendkeys 裸の sendkeys 指定。 生 sendkeys 機能。 対 jj 対抗。連続英文字は NG. 「~」改行はOK
sndk = Mid(str,3) 'pickup "〜" from "kb〜"
WshShell.SendKeys( sndk )
Wscript.Sleep 100 ' 100 msec

ex. kbsample book 結果: sample book
ex. kbI am a boy. 結果: I am a boy.
ex. kb日本語, 結果: エラー: プロシージャの呼び出し、または引数が不正です。  コード: 800A0005   ソース: Microsoft VBScript 実行時エラー
ex. kb(sv1, or , kb(sv1), or , kb()sv1, or ,kb("(" --- 4通りの違いの結果を予想しろ。
c. bk は、vbs の WshShell.SendKeys() で実装していますが、 この sendkeys はインテリジェントを持っていまして、括弧 () のペアをチェックしています(イイ迷惑)。なので err となります。【プロシージャの呼び出し、または引数が不正です。 コード: 800A0005 ソース: Microsoft VBScript 実行時エラー】
kb{,   kb{}  , { は、ペアにしても err, 回避策ナシ?。{f1} はファンクションキー、{〜}は、特殊な〜のみok 。  kb[ もerr. ペアは ok。
ex. kbeye{tab}nose{tab}nouth~hand 結果は下:
eye   nose   nouth
hand
ex. exe(WshShell.SendKeys("ABCDEF")   結果: ABCDEF  exe( directive による動作確認。 shift キー指定していないのに、結果 ok.
exe(WshShell.SendKeys("/*-+!#$%&'=~|\^()")  結果: /*-!#$'=改行,\  赤色部が文字化けで消えた|, に化けたのは、exe) directive 内で「,」の代替文字として「|」を使うため。しかも、括弧 () は、ペアを崩すと「エラー: プロシージャの呼び出し、または引数が不正です。コード: 800A0005」の実行時 err となる。ヒドイ。
ex. j0("/*-+!#$%&'=~|\^"  結果: /*-+!#$%&'=~|\^  当然ながら、jj,j0 は、文字化けナシ。
しかし、kb英数字~ の性能は j0[,c+[ よりも遥かに速い。当然。
sendkeys 関数の反復 input。 sendkeys のマニュアルに、キーの繰り返しは、{キー 回数} と書いてある。半分正しい。
ex. kkk と印字したいとき、kbkkk, でも、 {k 3}, でも、kb{k 3}, でも、sendkeys method へ指定 image を送るので、結果は kkk の印字だった。しかし、{tab 3} 「Tab ボタンの3連打」は、1連打となった。{tab},{tab},{tab} は OK。
kb#キーボード英数字文字列    sendkeys の複数回反復。反復数は事前に 変数 ev にセットしておくこと。 ev が数値でないと、強制終了。 sleep 時間を、変数 sl_v に msec 単位の数字で事前セットしておく。未定義 or 非数字の時は、default 500 msec 間隔。日本語変換モードを「A」にしておくこと。kb+ は、廃止。shift+ の + と競合するから。
ex. ,3,kb#{tab},   Tab ボタン3連続押しの模擬。  ,3,kb#+{tab}  shift+Tab ボタン3連続押しの模擬。
ex. ,10,kb#{right},   →ボタン 10 連続。 {r 10} と等価。
ex. =sl_v=300,10,kb#{tab}  {tab},sl300 の 10 連続。

〒sendk_c
■ SendKeys.exe freeware 比較 (別 Task 方式での .exe Job 比較。.vbs は、.exe 化しても wscript.exe も付くので big memory)
機能vbscript5580_JGitHub
sleepアリ(ミリ秒)アリアリ(秒)ナシアリ
最前面 window
英語 activateアリ危険アリアリpid ノミ
日本語 activateアリナシナシアリpid ノミ
PID# activateアリナシアリナシpid ノミ
拡張キーナシナシアリアリ??
実 memory2MB 以上708 kb1064 kb872 kb2.5 MB
CapsLock下のaaAAA
DOS prompt 枠不可
Win 修飾××
{VK_91}{VK 82}{VK 91}

[win]v
 55 = SendKeys55k.exe,
 80 = SendKeys80.exe,
 _J = SendKeys_J.exe
実 memory 測定。「x1-,s_Jarg"sleep 123456789",x1+,if(x1>100)-2,al(x1」。タスクマネージャ/詳細 tab で、 sendkeys.exe の所を見張っている。

 55k が最も軽い。sleep は、sleep.exe (ミリ秒)でカバー可能。
 拡張キーは、無くともほぼ良い。 ex. ime OFF は context munu にある。「カタカナ」「半角」ボタン操作不要。
 PowerShell は、重すぎて(8 MB memory) 論外。の NG.
 55k, 80 と _J の棲み分け利用がお手頃。sendkeys 機能は、55k が milli sleep が有るので良い。
_J は、優秀であるが sleep 無いのは致命的。 sleep.exe (freeware) を使用して、DOS prompt 環境で使用できるが、やぼったい。2マルチ task 、記述も煩雑。
_J は、^c を [Ctrl]c と書かねばならないのは、苦痛(別に、どうでも良い)。センス悪い(そんなことナイ)。結局、 main は、55k, _J は他に解が無い時のみ使用。_J は name 欄が "" or /active, "/active" 指定は対象ナシと判定され、何もしない。完全なる bug. 55k でやること。つまり、55k と _J のチャンポン運用しかない。良くない。DOS prompt 下で、sendkeys_j.exe "" "test" としても、最前面である DOS prompt 画面が write されない。つまり、 bug.  55k だと DOS prompt 画面に test が書かれる。正常。 疲れる。まともなソフトが無い。 80 も良いが、日本語未対応。
誰か、_J の milli sleep 機能込みを作って下さい。そして、sendkey キー表記は、MS base にして下さい。 --- _J は、充分優秀である。表記法などどうでも良い。なので、今のままで良い。
GitHub の馬鹿ソースは、コンパイル err が出る。直して、実行させても、big memory で使い物にナラナイ。.NET base のせい。機能もアホ。
_J と sleep.exe との共存環境は、実は、DOS cmd.exe based で、むしろ、資源的には最強なのかもしれない。資源を大喰いしているかの判断は難しい。vbscript も多機能なので重い。単機能の .exe を組み合わせた方が良いかも。

_J の readme.txt は、不親切である。n 回反復 {tab n} 相当はナイ。日本語はハングルや特殊記号 「[UK] ǵːl、ガール」「ハングル(韓: 한글)」は文字化けする。sleep は多分内部的には有ると思うが、readme に書いてない。sendkeys は PC とのタイミングで sleep は必須である。神経を疑う。/all %* [ctrl]v  の「%*」って何だ。「[#13][#10]  改行コードを送信します。」って何だ。13 0x0D VK_RETURN Enterキー は、仮想キー、だが、 #10 は、仮想キーは予約済だが、ボタンじゃない。制御コードとキーボードの仮想キーをゴッチャにするな。


s55arg引数イメージ SendKeys55k.exe    元サイト, SOFTPEDIA®  日本語 window 名 NG, 仮想キー NG, sleep OK, memory 700KB
  (「日本語 window 名 NG」って何だ、下のサンプルでは「メモ帳」って日本語 window 名、だろうが。真意、忘れた。--- 空振りしていた。しかし、実在英字タイトルを指定したら、jobが消えた (close された)。実在の名前に引っかかる名前にしても消えた。ex. 「*無題」に対し、win name 「*」にしたら close した。メモ帳を保存しますかの mess も出さずに、強制 close した。しかも、タスクマネージャーの notepad.exe の走行中のプロセスのゴミとして、「プロセスtab」の下の「バックグラウンド プロセス」の方に移動してゴミとして残った。前見たときは、20個ゴミになっており、手動で全部 term した。もうメチャクチャ。つまり、 window name 機能は指定しないか、非存在の名前にして、最前面 window のみ対応と言うこと。はっきり言って、ボロイ。
  (cf. コマンドプロンプト中の"@"記号 ---  コメント化の表記。)
     {sleep msec} アリ。「半角」ボタン配慮ナシ。"" なし window name が基本みたい。「space」アリ win_name は quot 要。"" current focus job は、効かないみたい。使い難い。window title name に含まれる名前を必ず指定すること。ガードが固すぎる。--- ウソ。非存在の名前を指定すると、 current focus job に send。「メモ帳」なる win name は日本語なので、常に非存在 name 扱いで、最前面 current job 対象で test が上手くいっている様に見えただけ。アホ soft です。 win name を "" とすると activate せず、sendkeys もしない{WIN}キーもアリ。有るが修飾子指定不可なので使い物にナラナイ。 s55 の activate は current 以外アホなので、 ac directive を切るか、s_J を使用して下さい。dos prompt では、英字の win name activate は効いている様に見える。前、ダメだったって何なの?。
{ACTIVATE Name}  Let to activate an active application window by providing it's name.
というのが有るので、これを先に使って activate して、とやるのかも知れない。しかし、日本語の win name は指定できないのでやはり駄目
{sleep 500}が出来るのは goo. {win} は {win}v が効かなかった。{win} 単独ボタンの動きになった。
くまら内実装 coding: WshShell.Run "SendKeys55k.exe " & arg ,0,true ' 完了待ち true の vbscript coding
SendKeys.exe [Name | /i | /w:Hnd Keystroke] [/f:File] [/s:mSec] [/?|/h] くまら内実装
  引数は space 区切り、space 込み引数は "〜" sandwitch。space ナシは " sand 不要。
第一引数は、Name のタイトル名は単独指定、と言っている。Keystroke も /w: スイッチ以外単独指定、と言っている。つまり、 "name" "ボタン列" の同時指定は user ミス。だって。とすると、 activate 周りの不具合は user miss.
ex. s55arg/?,@   help 画面
ex. s55argメモ帳 "abcd",@  ex2. s55arg""メモ帳"" "abc{sleep 10000} defg",@ 10 秒寝 結果「abc defg」 or 「ちこそ しいはき」
ex. 「s55argメモ帳 "xy{home}z"」 or 「s55argメモ帳 "xy{HOME}z"」 -- 結果は、zxy。
ex. 「s55argxx "ab z"」 最前の current task のメモ帳に write された。
--- そもそも activate の名前が非存在の時は、最前面向けの指示とするは、危険であり、許されないと思う。待つべきである。名前欄が空欄の時のみ最前面とすべき。つまり、 spec. オカシイ。
更に、activate に無引っかかる英 window name にすると、window は消え、プロセスは走行したままタスクマネージャーにはゴミとして残存する。bug である。
■ s55 を、品質不良・危険ソフトと認定。まだ何が潜んでいるかわからないので、使用を全面禁止とした。 from 2021/12/15 総合判定。

s80arg引数イメージ SendKeys80.exe の 「1 2 3 4」 引数イメージを 指定して、senskey 発行。
cf. 元サイト man cf. 仮想キーコード一覧  PAUSE 秒} アリ。「半角」配慮ナシ。window 名は、"" ナシ不可。 日本語 window 名 NG, 仮想 OK, sleep OK, memory size 1000 KB
c. SendKeys80 の {PAUSE} 類は大文字。{vk nn} は NG, {VK nn} の大文字必須。 {PAUSE n} の n 秒は、整数。0.5 不可。第一引数の方の初期待ち時間の n 秒は、小数点可。err も出ない。全て非実行。{home} の小文字は OK。{PAUSE} だけオカシイ。バカ MS。
ex s80arg0.2 1 " - メモ帳" "{home}+{end}{del}"   ex. s80arg0.2 1 "" "{VK 28}" 「変換」ボタン
ex.s80arg0.2 1 "" "abcd",@ --- 「CapsLock ON」配下で実行したら, ABCD が返却 「CapsLock OFF」下は abcd。
--- vbscript 内臓の sendkeys の abcd は、CapsLock の状態に関係なく常に abcd --- vbscript は、オカシイ。
'{VK 25} は、「半角」では無いらしい。Alt+半角、らしい。そして、「ローマ字入力」になるらしい。
'「半角」は、 {VK 243} らしい。 ---- {VK 25}の「ローマ字入力」化の理由判明。243 に直した。後始末不要。→ ウソ。243 と 25 は、同じ。なので、後始末必要。
ex. s80arg0.2 1 " メモ帳" "{VK 243}abcd",@ 「半角」反転化abcd --- 「A」表示。かつ、「ローマ字入力」未発生。メモ帳の ttitle は「*無題 - メモ帳」なので、"メモ帳" は、NG. 、" メモ帳" は、OK。
c. {VK 21} IME かなモード 、 {VK 25} 「半角」相当。{WK 242} [カタカナ ひらがな] というのもアリ。
test: from s1:「あ」かな入力、s2:「あ」ローマ字入力、s3:「A」かな入力、s4:「A」ローマ字入力 --- from 4 状態。
s80arg0 1 "" "{VK 21}" 常に「あ」になる。しかし、「かな入力」は、常に「ローマ字入力」or「かな入力」に変わる。  ①
s1 「かな」→「ローマ字」s2 「ローマ字」→「かな」 s3 「かな」のまま s4 「ローマ字」→「かな」
s80arg0 1 "" "{VK 25}" 「あ」/「A」トグル。「ローマ字入力」or「かな入力」に変わる。   ②
s1/s2/s3/s4 入力モード 不変。
s80arg0 1 "" "{VK 21}{VK 25}" 常に「A」になる。   ③
s1 「かな」→「ローマ字」s2 「ローマ字」→「かな」 s3 「かな」のまま s4 「ローマ字」→「かな」
s80arg0 1 "" "{VK 242}"  どんな状態からも、常に「あ」になる。入力モード 不変。 --- 最強? "+{F10}o" と機能等価
s80arg0 1 "" "{VK 242}{VK 25}"  どんな状態からも、常に「A」になる。入力モード 不変。 --- 最強? "+{F10}l" と機能等価
コメント: +{F10} は、マウス右クリック context menu 表示と等価、edit 可環境で、IMEを開く(O), IMEを閉じる(L) の menu が出る)
■S1 or S3 から S3 への移行方法 (s2,s4 は存在しない、の前提)
なので、①を1回し、「あ」「かな入力」状態とし、②を掛け、「あ」を「A」とする。

s80arg0 1 "" "{VK 21}{WK 21}{VK 25}"
s80arg0.2 1 "*memo" "12345" --- activate まとも。
s_Jarg引数イメージ SendKeys_J.exe    日本語対応 SendKeys.exe (from Vector; 作者: con )    sleep 機能 NG, 仮想 OK, memory size 416 KB ??? activate only でも第2引数必須。なので、dummy で [esc] 等を指定すること。memory size はどうやって入手したかは忘れた。 sleep ナシなので不可???
ex. s_Jarg"" "[#25]",@ アクティブなウィンドウへ「半角」push トグル
このサンプルの最前面 curret job "" win name 指定は効いて、動いている。 しかし、dos prompt で "" 指定したら、無視され、空振りされた。上の表の、「DOS prompt 枠」「不可」はそのこと、に対応。--- 昔の事なので、もう分からない。
ex. s_Jarg"" "[#242]",@ 常に ime 「あ」へ移動。  s_Jarg"" "[Shift][F10]o",@  と機能等価(IMEを開く(O))。
ex. s_Jarg"メモ" "[ctrl]fabc",誤動作する。 abc が検索枠に書かれず、メモ帳本体に書かれる。bug です。 ---→ s_Jarg"メモ" "[ctrl]f",s_Jarg"" "abc", に直したら OK作者バカ。対象 window は「メモ」だと思っているので、自作した find の新 window は見向きもせず、abcを「メモ」window に書き出す。複数 window 対応能力が無いので、別の job を切って回避。
s_Jarg"メモ" "[ctrl]f",s_Jarg"検索" "abc", も、ダメ。理由不明。作者に聞け。他の sendkeys と動きが違う。非常識と言うか bug。"検索"は NG だが "検" or "索" は OK。もうメチャクチャ。
常に「A」へ移動は、s_Jarg"" "[Shift][F10]l",@ も可(IMEを閉じる(L))。また、[Shift][F10]は、マウス右クリックと等価。
s_Jarg"" "[ctrl]fabc", も検索枠に abc は書かれず、検索 call 側に書かれる。sense 最低。 尚、"" と "/active" は等価。
• tomoclip で red page に「win+shift+r」のキーを割り当て、
「s_Jarg"" "[win]'[shift]r'"」を「くまら」で実行したら、成功した。
s80arg で模擬したら。
s80arg0 1 "" "{VK_91}+r{VK 91}{esc}"
↑しゃっくりしている。
s80arg0 1 "" "+({VK_91}r{VK 91}){VK 16}"
は完全OK。  {VK 16}の {shift} が必要。  これが無いと、選択 mode が適用されている様な動きになった。{shift}が残存で押されているような動き。なので、ダメ押しで、shift を↓↑させたら直った。
下記は、なぜか、ダメだった。
s80arg0 1 "" "{VK_91}{VK_16}{VK 82}{VK 16}{VK 91}"
X-mouse button control or site というマウスボタンの tool だと、{PRESS}fg{RELEASE} と記述すると、「f+G」模擬は、ToMoClip も完全に反応した。
つまり、ToMoClip は、マトモ。おかしいのは、sendkeys80.exe かもしれない。
gemini_t引数イメージ or gemini_f引数イメージ gemini.exe   vbscript の execute 関数の別 task 走行。 gemini = 双子座。≒copy。第二 wscript.exe。 代理。影武者。 引数の先頭に「d.」を挿入すると debug mode.
省略文字 rule 。短縮記述のために使用したい人は使っても良い。
「''(2 quato)」=「"(w-quato)」,「._.」=「space」, 「.w.」=「Wscript.」,「.o.」=「WshShell.」 object
ex. gemini_td..o.appactivate._.''*無題'' --- gemini_t で内部変換させて吸収した。gemini_f〜も ok.
ex. gemini_td..o.appactivate "*無題",@ → err 「"」 が効いてない。アポストロフィ 2個にして、 gemini_td..o.appactivate ''*無題'',@ → ok  --- gemini_t で内部変換させて吸収した。gemini_f〜も ok.
■WSH 引数のダブルクォート「"」消滅 bug (有名な話)
' コマンドラインからパラメータを受け取る -- http://wsh.style-mods.net/topic6.htm
' 実行時パラメータの取得:WScript.Argumentsプロパティ -- https://www.atmarkit.co.jp/ait/articles/0404/23/news077_2.html
' 「まず、WSHで引数の"は消えます。」 https://social.msdn.microsoft.com/Forums/ja-JP/d19854e3-d182-42c1-b18b-ad8323611d43/vbs124081239823455348922617824341259681239112480125021252312463?forum=vbgeneralja
' WSH の引数に、半角ダブルクォーテーションを含めると、削除されてしまうので、 http://rocketeer.dip.jp/sanaki/free/free42.htm
ex.  [文字]ap_data,exe(.o.run "gemini.exe d..w.sleep._.500:.o.sendkeys("^c"):.w.sleep._.200:.o.sendkeys("~")"{}0{}false:inputbox "data"{}"inbox"{}ap_data,@  → NG。 dvb_t を経由していないので、自前で「2 quato」化必要。
--- sendkeys 内で sleep 書けないのはやはりアホ。イイ迷惑。gemini.exe に渡した引数内の「"」が消えるのも、痛い。MS は test しているのか?。exe( 内で「,」が有ると、くまらの delimitter 「,」と競合するので、escape 必要なのと似ている。
■下記がイイ。directive またがり方式。次 drective 待ち時間調整ナシで動いた。false が dirrective 経由なので、2 quato 変換は自動適用配下。
[文字]ap_data,gemini_fd..w.sleep._.500:.o.sendkeys("^c"):.w.sleep._.200:.o.sendkeys("~"),exe(inputbox "data"{}"inbox"{}ap_data,@
ir or 先頭 2 文字が ir  irritate/ イラの頭。 日英日本語環境ミス訂正。但し「ろ」と「ー」は識別不能∵ 「\」「\」なので。
  ①「半角」にせず、ime「」の「かな入力」 mode 下で英スペルを叩いてしまった。
  ②その逆の、「半角」の「A」mode で、ひらがなを叩いてしまった。の「戻し」機能。単語を選択し、 call。両刀使い機能。
ex. 「」mode で「abcd」と叩くと「ちこそし」に化ける。「ちこそし」を選択し、ir 実行すると「abcd」に戻る。
ex. 「A」mode 下で、「とうきょうと」と叩くと、「s4g)4s」に化ける。「s4g)4s」を選択し、ir 実行。「とうきょうと」に戻る。

jj japanesejapanese jj文字列 sendkeys 経由でなく、clipboard 経由で一括入力する。内部処理は、処理前の clipboad image は、事前 save/ 処理後 restore され、痕跡は残らない。 。文字列内の改行マークは 「\n」 とする [リターンキー対応, Sendkeys("~") 対応]。
改行は、文字列の中に「\n」指定、 or jj[ or j0[ or j0( の中で、 &vbCrLf& or &~& 指定。
尚 jj/j0 系のメモ帳等への write の改行に vbCr コードは、効かない。 al( 系の mesgbox では効く。みたい。
  【注意j0〜, 形式 は、未サポート。j0[〜, j0(〜, を使用して下さい。
cf. AutoHotkey の 直接文字指定(あ漢 etc.) --- 何を言っているのか意味不明。
c. 経験的には、半角のアスタリスク「*」を含む data は、化けるネ。 DOS のclip コマンドの bug か?。
c. 一部の特殊文字が化ける。ex. 「\」は、化ける。「\\」と escape を掛けると化けない。
c. IPA 記号文字は、jj すると化ける。 ex. girl gə:l を ^c1 で、sv1 に入れ、alreg で確認すると、sv1 に gə:l がは入っている。 しかし、jj[&sv1& すると、g?:l と出力される(漢字 fep mode 状態は、無関係)。sv0=sv1,0r でクリップボードに sv1 を戻して、^v しても既にクリップボード上で化けている。clipboard → AP(vbs 等), は、文字化けなし。Clipboard ← AP で文字化け発生している。 原因は、変換 tool がボロイため。つまり、GNU 版 echo がボロイ。
試しに、( eval(msgbox(sv1)), で画面表示すると、msgbox には gə:l が表示されている。どうにかなりませんか?
--- msgbox の [eval(msgbox(sv1))] 表示は文字化けが無いので、この msgbox の image を Textify という、どこの表示でも copy する、を使って clipboard に copy し、その結果を paste したら、文字化けは、なかった。
--- ə を選択したまま、^c1,eval(asc(sv1)),eval0(msgbox(ev)) or 【^c1,al(asc(sv1),】を実行したら、ascii code 番号は「63」だった。10 進で 64-1 なので、octal 3 桁で、100-1= 077。ホントかな。 → 077 は、「?」マーク、である。or【^c1,al(chr(asc(sv1)),】
In>gə:l,@, を実行すると、下の input 枠が選択状態で表示されたbox が出る。このとき、キーボードで Ctrl+C を叩いたら、 clipboard に gə:l が格納された。後で, Ctrl+V したらた文字バケ無し、だった。
jj(文字列式  ex. jj(sv1   ex. jj("いろは" & sv1
jj[〜&〜&.... jj 連結関数 〜は、文字列、x1、x0、sv1、sv0、sv1_jj、~、encodeURL_sv1、decodeURL_sv1、wk、ev、z(i)、を指定可能。予約語 x1 は、in の戻り値、sv1 は、^c1 の戻り値、 sv1_jj は jj ディレクティブ処理直前の clipboard save image、~ (改行マーク、= vbCRLF の code)。「&」 は区切り文字。 sv0 は clip0 の退避値。、 ex. jj[私は&~&バカです。 encodeURL_sv1/ decodeURL_sv1 は、sv1 の unicode の encode image と decode image。 wk は、wk-, wk+ の image。
   --- 【特徴】 変数の方を 「&」 サンドイッチして、並べる。文字列は、「"」サンドイッチしない。
  
ちなみに、j0文字列はナイ。

j0[〜&〜&.... [〜]sv0,0rv と等価。 jj[〜 の高速版。 clipboard を潰す。from 2019/02/16
ex. ^c1,j0[【&sv1&】,  は、 ^c1,j0("【"&sv1&"】", は等価。変数名が予約語の場合、j0[ の方が記述がかなり楽である。
c. 2020/11/06 c+[ハングル文字  は、文字化けする。j0[ハングル  は、文字化け無し。clip-[ハングル  は、化ける。=sv0=ハングル含む変数, clip0r  文字化け無し。∵ clipboard 方式が異なる。
j0(文字列式(くまら AP の内部変数指定可能)
  ex. 「jj文字列1\n文字列2」 と 「jj[文字列1&~&文字列2」 は等価。
  ex. jj[【図】 の結果と clip0rv の結果は、等価。ただし、jj は性能が悪い、が、clipboard は壊さない。 case by case で使い分けてネ。
  ex. j0(azz(2),@,book,desk,note  スタックされた単語を番号指定でwrite できる。azz(i) は、directive の要素配列。便利
  ex. ^c1,al[■^c1{}al(sv1{}j0(sv1{} 系のマクロ test■\n選択範囲の内容 sv1 は下記 al(sv1 です。引き続き、メモ帳にも貼り付けます j0(sv1 ので、メモ帳を開いて、貼り付け先をクリックし、カーソルを位置づけしておいて下さい。\nその後、この msgbox の OK ボタンを押して下さい。操作順番には注意して下さい。\n-------\n&sv1&,j0(sv1,

 ・区切り文字「&」、「,」を他の一般文字として入れたい場合、「{and}」、「{}」の文字列と置換して下さい。 and は、小文字のみ。
(cf. VBScript で、UTF-8でエンコードするにはどうしたらよいでしょうか?: vbs から JScript (not JavaScript) の encodeURI 関数 を call にて実現。-- very good. thank you.)
d+[ or d+(文字列式  2021/12 新方式。 j0( 対抗。 j0 が inputbox to clipboard copy 系なのに対し、uft-8 disk txt file リダイレクト to clip.exe 方式。文字化け無し。文字数によるメモ帳介入などナイ。性能的には j0 に負ける。∵ .txt disk file access が毎回発生。utf-8 txt file を電子 disk に置いた。
ac文字列 activate  文字列は、AP の window タイトル バー内文字列。--- WshShell.AppActivate 文字列  相当
    ---- deactivate が欲しいが無いのか?  有るある。 alt+tab =%{tab} で、最前面 job は第二 job と交換。stack 管理。
ac#PID番号 activate process-id   AP のプロセス ID 番号指定の activate cf. AppActivate メソッド  (イベント ビューアーを activate 出来ない。 why?)
(くまらボタンの Input 枠が有る画面は、InputBox メソッドという、modal (モーダル)方式の命令を切っています。なので、ダイヤログの応答をしないと、くまらボタンの制御は休止します。通常はこれで良いのですが、 Activate を掛けた主であるくまらボタンが、1回のマクロ終了時に InputBox を切ると、このタイミグは focus が activate された window にあるまま、ですので、inputbox ダイアログ表示中は、activate された window も止まり、ロックされマウス操作等を受け付けません。これは、マズイので、activate が成功した場合以降のダイヤログは、inputbox を使用しない mode にしてあります。popup メソッドの出力ダイヤログです。表示は、display 中央のみです。また、マクロの変更の時は、inputbox ダイヤログ方式に一時的に戻しています。つまり、ac 発行時の操作性は ac が無い時より劣ります。)  --- display 中央の popup ダイヤログの位置変更は VBA だと coding できるみたい。しかし、もっと簡単にできる。例えば、popup ダイヤログも title 名をもつ window なので、このボタン押しは模擬(遠隔操縦)できる。固定位置の inputbox ダイヤログをもう一つ用意し、このボタンと popup のボタンを一対一対応させる。

現在、MS WSH のどこかに不具合が有ります。
--- ac 直後に popup mes を出して止めている最中に 他 window を click し、focus を移しても、ロックされている。マニュアルに書いてあることと、実際が異なっています。
一度マクロ ac「何々」 を発行し、成功すると、「何々」 window と掛けた task の名がペアで記憶され、その痕跡は消えない様だ。例えば、掛けた task である「くまらボタン」が、「0,^a」のマクロを実行し、一度その 「何々」 window をマウスで click すると、以後、「0,^a」の結果により全選択された window は、必ず、activate を大昔に掛けた 「何々」window になっている。いくら、マウスで、他の window を触って focus を移動させても、「0,^a」を切ると、window は 「何々」 window 画面に戻る。---- コレ、bug じゃ無いの。
この状況で「0,^a」を「1,^a」に書き直し実行すると、不具合は、見かけは、隠蔽される。「acなになに」「0,a」「1,a」の3種マクロのみで簡単に確認が出来る、皆さん、やってみて下さい。---- この因縁を断ち切るには、「くまらボタン」を一度終了させるのが簡単。
 MS さんは bug 直しといてね。 win7 特有かもしれない。
Bug2: くまらボタンが popup mess. を出して応答待ちのとき、以前くまらボタンに対して Activate を掛けたことがある他の Task (ex. 奥の手)が、ワザと存在しない title window を指定して、AppActivate を発行したら当然 error が返却されたが、何故か、くまらボタンの popup mess 画面も消え、制御が戻され、次の処理が走った。--- 何コレ。制御が乱れている。つまり、AppActivate には、かなり basic な bug がある。抜け道を捜して、皆さん使っている模様。良く無い。

また、Browser の 1 つのタブを acタイトル名 で activate すると、browser 全体が lock される。解除するには、メモ帳など別 job に WSH アイコンがタスクバーに存在時に切り換える必要がある。browser 内別タブに切り換えても効かない。acChrome で何時でも Chrome を activate 可能。タイトル名のお尻が常に Chrome だから。

vbscript の WshShell.AppActivate method の不具合は、この method を使用しない別方式で回避した。 2021/04
---  タイトル内文字列指定は、SendKeys_J.exe で実装したので、先頭、途中、最後に含む文字列、で良い。 ex 「*無題 - メモ帳」は「*」「メ」..、他と競合しなければ指定可能。 また、PID 指定の方式は、SendKeys80.exe で実装した。
--- Google Chrome の task mngr pid 指定は、SendKeys80.exe から err が出て失敗する。
--- なので、代替案実施のこと = 所望の tab を Chrome のカレント tab としておき、その元で title を含む名前を指定する。 acタイトル含む単語
あるいは、 tab 1 に移動させ、acChrome,^1 を切る。
err mess. = SendKeys// 「Application window with the title ''6080'' is not found!」 OK
cf. Chromeブラウザのウィンドウをプログラムからアクティブにしたいです。 Windows10でC#を使っています。  2019/1/5
cf. Chromeの挙動 - 寺田努のウェブサイト 2020年6月28日

acPID activate by ProcessID マクロによる直前の ex directive で実行した ProcessID (動的番号)指定の activate. 引数ナシ。
("PID" という3文字を先頭、後尾に含む window title 名は、競合するので避けて下さい。PID は現在1個分のみ記憶。)
achs history 最終の成功 activate の debug image を表示。 単独使用。 初期 image は、"init"
sl sleep slスリープ msec. 時間 --- Wscript.Sleep スリープ msec. 時間
rn run 実行プログラム起動 rn文字列 --- WshShell.Run 文字列
dosc_t, dosc_f と一部機能重複)
ex. rnnotepad.exe D:\過去ログ\org\スタックメモ.txt  run の方が exec より、短時間で起動するみたい。
「notepad.exe D:\過去ログ\org\スタックメモ.txt 改行 OK」の確認 box が出て入力待ちになる。
ex1. rncmd /k --- DOS command Box 起動。/c では無く /k なので 終了せず、 command 入力待ちする。
ex2. exe(WshShell.Run "cmd /c echo これは test です。見えますか ə コレ。& pause"   -- ^c キーボート入力は、= break。選択、copy 等の menu は、右クリック。
ex2'. exe(WshShell.Run "cmd /c echo これは test です。見えますか ə コレ。| clip & pause"
cf. Windows7、コマンドプロンプト上でのコピー&ペーストの楽なやり方  sendkeys(% es) -- i.e. Alt+space,e[=edit],s[=select] で vbs 自動操作できる。msrc, shift+{F10} は無効だった。
ex exec 実行プログラム起動(Run の subset 的位置づけ) ex文字列 --- WshShell.Exec 文字列 ; 割当てられた ProcessID 番号は mess ダイヤログ出力される(タスクマネージャーの PID 欄相当)。また、PID 指定の activate は、acPID directive で直前で Exec された job を指定できる。
ex. exnotepad.exe test.txt
「notepad.exe test.txt , ProcessID (= PID) = nnnn 改行 OK」の確認 box が出て入力待ちになる。
ex. メモ帳の終了は、「ファイル(F)/メモ帳の終了(X)」なので、「ALT+F,X」で、「%f,x」という、くまらマクロ、になる。
ifm if member of  ifm文字列 --- 文字列が x1 の中に存在する時、次 directive 実行、無い時、次 directive スキップ(「次次のアドレス実行」)。条件文。
  (x1 は in directive [input 画面]で動的指定可能。と設計された。)
iff if only if  iff文字列 --- 文字列が x1 と等しい時、次 directive 実行、無い時、次 directive スキップ。条件文。
iff (又は、 ifm)文字列&失敗オフセットの数字  --- 文字列が x1 と完全一致、(又は、x1 の中に存在する時)、次 directive 実行。存在し無い時、現位置から指定分スキップする。 「iff文字列」 は、「iff文字列&2」 と等価。 & は区切り文字。文字列の中には 「&」 の文字使用禁止。この場合の 「&」 は、「else 文/ not_eq.」的である。
if(条件)失敗オフセット  決定版   ex. if(〜)+3, は、if(〜)3 も可。 if(条件)@識別子 形式は未サポート
実質、上の3つは、if(条件)失敗オフセットの数字, で全て代替される。   [i.e. 条件合致時: directive, 非合致時:失敗オフセットへ飛ぶ。 失敗オフセットの省略時は、失敗オフセット値は2
ex. if(vbYes=msgbox("どっち?",`vbYesNo)),alaaa,albbb

ifeval(VBscript 評価式文字列)失敗offset数字 or if(?)失敗offset数字 eval 評価結果が true なら、+1。 false なら、+offset へ skip。 [offset 省略値は 2] eval() の前に if を付加した形。戻り値は、内部変数 ifev にも格納
ex. 5,if(ev > 3)+3,sk@1,0× 1〇 2★,c+(azz(6+ev),@,×,〇,★,@1,^c1,=sv0=(replace(sv1{}vbCrLf{}" ZZ ")),0r,

(これは、条件 skip 機能である。 下記の skip〜 は、これの変化である。現 directive の位置が オフセット 0 対応。
(ex. al1,al2,skip-2,al3,al4,al5 の結果は、1,2,1,2,1,2.. )
(ex. al1,al2,skip2,al3,al4,al5 の結果は、1,2,4,5 )
(ex. x1-,al1,al2,x1+,alreg,iff2&-4,alok )
sk+数字 or sk-数字 or sk数字   skは、skip の略。skipオフセットの数字分の directive 分飛ぶ。現在位置は、オフセットゼロ。 GOTO or LOOP 機能代用。  ex. sk-5   5個だけ戻る、sk+5   5個分進む。 ex. sk+0 は、永久 loop err で拒否される。
skip は、既に未サポート。 sk+, と sk, は、特注で OK , sk+1 扱い。
sk@識別子  「@識別子」のコメント directive イメージ +1 のオフセットへ飛ぶ。尚、利便性の為、sk@, は、特注で sk1, と解釈される。
 ex. x1-,sk+2,@do,if(x1>3),al[end,` x1= &x1,al222,al333,x1+,sk@do   loop 戻り番地にも便利。計算不要。
ty1@識別子 transfer with IC+1 to y1 サブルーチン call。昔の名前 sky1@識別子 y1 変数に、次 directive 番号である IC counter +1 の値を set して飛ぶ。 2, 3 も有る。
 サブルーチン、又は、 ループ構文、を提供する。IC counter 値を y1 強制変更すると、y1 の場所へ戻れる。
 ex. x1-,ty1@loop,al1,al2,@,@loop,al("y1 = "&y1,al3,al4,x1+,al("x1 ="&x1,al(x1 = 5,ify1(x1 = 5,skip-7,@6回ループ例
ify1(条件式 if y1 サブルーチンを抜けて、y1 番地へ戻る。 昔の名前 rsky1( 2, 3 も有る。 ex. 無条件戻りは、ifky1(1 or ify1(true
sk#   可変アドレス jump 機能。 変数 ev の値の数字、または、文字列の @番号、@文字列のアドレスに飛ぶ。 特注で、ev= "nop" or " " 半角 space のときは、次 directive へ飛ぶ。    ex. 2,sk#, は、sk@2 と等価。   ex. z1,sk#, 〜,@a,alaaa,〜,a   は、@a アドレス実行。
マルチ・マクロ 機能。これは、マルチ選択 menu 機能相当の VBScript 解。アドレス名は、「@数字」のみ。
x1-, or, x1+ これは、loop カウンター用として使用する。x1- は、x1=0 の意(初期化)。x1+ は、x1=x1+1 の意。 ex. iff5 などと連動させる。
(ex.   {left},sl500,{left},sl500,alok  は、 x1-,{left},sl500,x1+,iff2&-3,alok2回 loop で代替可能。)
x1-初期値数字, x1+加算数字,  i.e x1- = 初期値, x1+ = (x1+) + 加算数字。 文字列指定は abort する。 wk- 等で代替セヨ。
[数字を略すと、常に、x1- は、0, x1+ は、x1 + 1 、とみなされる、ので注意のこと。文字列指定はエラー。型不一致。]
ex. 「x1-100,alreg,x1+3,alreg,x+,alreg,x-,alreg,x+-10,alreg」の結果を予想しろ。 (x+ 等は、スペルミス、である。) (x1+-10 は、正しい。)
in inputbox  in文字列 --- InputBox 文字列 ,,"(xpos,ypos)",0,0 display くまらボタンの位置の真上に表示。裏に隠れない massage のつもり。そして、返却された入力枠の文字 image は、内部変数 x1 (AP 内変数名は、 x1 or in_x1 or in_x1_old)に save. in_x1 の値は、次回 in の枠の値として使用される。なので、inbox の枠の規定値を変えたいなら、[〜]in_x1_old, で事前に設定のこと。 必要なら、in2/ x2 も自作して。
この InputBox の問い合わせに対し、キャンセルボタンを押すと、後半マクロを全スキップする。(キマグレ my spec.)   mess. の改行指示は「\n」文字列。 ---- 複数行 mess は、InputBox 枠が縦長に大きくなる。優秀。 al なんて、ほぼ、もういらない。
裸の inputbox 用法は、exe(x1=inputbox("abc"{}"title"{}defautt{}xpos{}ypos),@  or exe(inputbox "abc"{}...,@, で、終了処理は自前。
ex. exe(x1=inputbox("abc"{}{}{}0{}0),if(x1="q"),@,al("continue",,...

  【文字数制限】Inputbox の入力枠には 254 語以上も入力できるが、x1 の結果は、頭 254 個のみとなる。
in0 or im0 新設した。2021/03 in/ im の xypos=(0,0) 対応 mode.   規定値は、xpos= 14000, ypos= 10000。一時的に変えたいなら、イジルこと。
im文字列  --- in ディレクティブの変形で、im に戻り値格納、次回、枠に表示。 x1 変更をしない。 つまり、al ディレクティブと等価機能。しかし、display 中央では無い。非常に優秀。from 2019/06/16
--- 機能的に、この editable 枠機構は、clip board 的 user との editable data area (in⇔out) だが、AP→枠、経由で、clip board の様な文字化けは発生しない。優秀。
im を事前変更し、im すると、user への data 受け渡し機構となる。 ex. [gə:l 文字化けナシ。]im,im,
キャンセルボタンを押すと、後半マクロを全スキップする。
im(文字列式   im文字列 の文字列先頭が「(」だったら、式とみなす。
c.vbscript には pulldown menu が無いが、 例えば、im_mess 変数に表示枠 img 事前指定し im(im_mess 発行,また、 入力規定値 im には「select」を事前指定。つまり、[select]im, 発行。運用 rule として、日本語漢字変換の ime に「select」なる単語に 1〜9, 0 の 10 個を事前に単語登録しておくこと。テンキーを叩くよりマシ。 user は、「変換」ボタンを押して、数字を確定し、Enter ボタンを押すこと。
つまり、[番号付きメニューリスト画面 image]im_mess,[select]im,im(im_mess,@ が directive image.
ii(文字列式   ii文字列 の文字列先頭が「)」だったら、入力枠置換と上画面 mess に同じもの w 表示。im を更新している。user は入力枠 data を copy 操作できる。
ii)文字列式   上画面 mess に、文字列式、入力枠に評価結果を w 表示。電卓の元式と結果表示機能、兼務。 ex. ii)50/100
calc   簡易数式電卓 call。
ii文字列   入力枠と上画面 mess に同じもの w 表示。式ナシ mode。ダブルクォートは目障り。 in, im, iial 代替。
menu.jメッセージ or menu.j(メッセージ変数 選択 menu 機能。MS IME 単語登録 "select" で「■1〜■10」のボタン表示。つまり、10 個ボタン提供。戻り値は、ev に■右横の番号、inputbox に入れた値。を返す。また、 cancell ボタンを押したときは、前回の ev の結果の値を返却(反復指定機能)。存在しない@数字のときは err mess が出る。 menu_J 大文字混在表記は廃止。∵疲れるから。
nnメッセージ or nn(メッセージ変数 選択 menu 機能。入力枠の「012345678901234567890」の指定の 21 個番号の前に半角 space 挿入指定。戻り値は、ev に番号。この directive を切ると clipboard には space が入っていて、利用可能。ctrl+v マウス操作のみで操作可能化のため。 in が nn (= NN) に変わった の feeling.
 コノ nn( 機能、マウスジェスチャーの space 叩き模擬が有る場合、pulldown menu と殆ど遜色ナイ。
1ch文字列  1 choose文字  半角 space を指定文字の後ろに挿入。戻り値 ev = 最初の space の直前の1文字。space が 1ch 直後、又は space ナシは、 ev = "nop"で sk# は、nop 扱い。 ex. sk#, との連鎖。
  ex. ch1abc,sk#,〜,〜,@a,〜,@b,〜,@c,〜  で、マクロ飛び先可変インターフェスを提供。
ed(変数名 変数の内容(再)定義・編集。 inputbox の上表示枠、下入力枠に変数内容表示。data 編集可。未定義変数 chk アリ。
  (〜)変数名、と、[〜]変数名による編集の違いは、ed( ではナイ。より上位の、単なる文字列編集 interface と言える。
x1=sv1 x1 value = sv1 引数なし。sv1 の値を x1 に代入する。(sv1 の写しを x1 に退避。)
x0=sv0, x0=sv1, x0=x1, x1=sv0, x1=sv1, x1=x0, sv0=sv1, sv0=x0, sv0=x1, sv1=sv0, sv1=x0, sv1=x1 [x0, x1, sv0, sv1] 間相互 copy。
x0=ev, x1=ev, sv0=ev, sv1=ev ,,, zi=zj (i/j = 0〜9) [eval の戻り値を reg. へ copy。ev=x0 相当は、 eval(x0),]

=変数定義式・代入式  「等号 directive 、と呼ぶ」 先頭文字が「=」なら、変数定義式のマーク。各種変化アリ。①=aa=11 ②=11 or ==11 [右辺定数のみ、ev=11 の意味、変数 ev は名誉変数名] ③=aa=bb+111 ④=aa+111 [aa=aa+111 の意味。つまり、 incremental / bump] -- 方針:左辺変数名がないとき、右辺が定数なら、ev 定義。右辺頭に変数があるなら、左辺の変数も兼務。 つまり、手抜き表記法。
文字列定義も、 =aaa & bbb 表記をサポートした。これは、「aaa = aaa & bbb」の意味である。= aa & bb や = aaa + 111 等も可とした。
c. これは、= drective の表記法である。 exe( directive 内では使えない。
数字   数字のみの directive。 変数 ev に指定の数字の数を格納。先頭 directive に適用すると、in 選択番号入力の代替となる。,-5, は、=-5, or ,(-5), と等価。
=(vbs 数式)代入先変数名, または、
(vbs 数式)代入先変数名,  数式を eval 評価して指定変数へ代入する。代入先変数名は、省略すると 「ev」と解釈。新規変数名を指定すると、その変数を新設定義する(スゴイ機能: vbscript は interpritor なのでそれが可能)。  但し、新規名は、既存名との競合を避けるため、語尾にアンダーバー「_」を付ける、等を私は勧める。
[文字列式]代入先変数名、 [〜&var&〜..]形式も、サポート。
ex. x0=sv0, は、=(sv0)x0, と等価。 --- くまら内の e9(aa, bb) 関数を eval 関数内で呼んでいる。eval( directive も実質不要。
ex. alreg,wk-abc,=(wk&" に置換されました。")sv0,alreg
 [つまり、eval(〜), は、=(〜), 又は =(〜)ev, と等価。 eval0(〜), は =(〜)z(0), と等価。 ] 尚、=[〜]〜 系は未サポート。
  ■つまり、 =(vbs 式)代入先変数, にて、vbs の動的 test coding が確認可能。  つまり、くまらボタンのマクロ作成時、既存変数を使う必要はない。必要なら、新規一時変数を新設してしまえば良い。
ex. (1+2)+(3+4), ex2. ((1+2)x2, ex3. (1+2)*x1, の結果は何?
=aa=数式, の format も等価。 =(数式)aa が分かり難いのかもしれないので、作った。変数が略された ==数式 は、=(数式)と等価。変数 ev の値定義、となる。 ex. ==0=0、は、ev=0 と等価とした、2 or 3 文字。スバラシイ。 =(0) 4文字
つまり、先頭1文字が「=」の directive は、=と=でサンドイッチされた変数の定義とみなす。
つまり、=aa = 〜、は、aa= 〜、と解釈。
さらに、directive 先頭が = で、後続 〜 に = が無い時は、err としても良いが、逆手にとって、インクレメント、デクリメントの方便に応用する。bump 機能。但し、=aa+ は NG。=aa+1 とすること。
=aa〜、は、もし〜の中に「=」が含まれていないなら、aa=aa〜、と解釈する。つまり、左辺と右辺の先頭変数が同じ場合、右辺の「=先頭変数」表記が略されたと解釈する。 ex. =aa+ なら、=aa +、とみなし、=aa=aa +、なので、構文 err。 =aa+1、なら、=aa +1、とみなし、 =aa = aa +1、で OK。=aa+5、なら、=aa=aa +5、と解釈する。=aa+bb+5、なら、=aa=aa +bb +5、と解釈。先頭変数名の区切りは space " " で判断する。aa+ は、replace(str,"+"," +") を噛まし、内部補正している。
これにより、coding の記述の手抜き性を高める。
cf. 第四回-02 C/C++ における演算子   c. C++ で、 aa+5 なる表記は動くか?

当初、「 =[aa=数式, 」としていたが、[ も邪魔なので、外した。
ex. vbs には、C や javascript の様な bb+ なる表記は無い。bb=bb+1 対応しかない。 space の無駄である。くまらでは、=(bb+1)bb あるいは、=[bb=bb+1、をサポートしている。
慣れの問題であるが、美的には、=(bb+1)bb の2次方程式の因数分解の様な方が、シマリがある。
◆ ==数字, =数字, 数字のみの directive   これらは全て、 ev=数字 の処理がなされる。 from 2020/11 enhance.
in, IN による in_v 入手インターフェースをする位なら、クマラ directive の頭に 「数字キーイン」の方が、操作が速い。
exe(VBscript一版式, or exE(〜 指定した vbs 複数式( : で分離)を動的実行。exE( は debug mode。 これにより、eval(, eva( directive は実質廃止  execute() 関数そのものの利用に過ぎない。
 exe( 内のカンマ「,」は「{}」に置換しておくこと。∵ くまら directive の区切り符号のカンマと競合するから。
ex. 汎用 for loop coding.
exe(sum_ = 0: for kk=1 to 10: sum_ = sum_ + kk: next: msgbox(sum_)
ex. 選択範囲の"★" の数のカウント。
^c1,exe(p_=0: for kk=1 to 100: p_ = InStr(p_+1{}sv1{}"★"): if p_ = 0 then: exit for: end if: next: msgbox(kk-1),@
^c1,exe(p_=0: for kk=1 to 100: p_ = InStr(p_+1{}sv1{}"★"): if p_ = 0 then exit for: next: msgbox(kk-1),@  は、compile err. だった。

■AP to Clipboard, Clipboard to AP 文字列 copy 汎用解■
■inputbox 2 clip 文字列 copy by sendkeys55k.exe   sendkeys80 は、sec の PAUSE のバカ。55k は msec で優秀。
[ə́☑]sv0,exe(WshShell.Run "sendkeys55k.exe in2clip ""{sleep 500}^c~"""{}0{}false : inputbox "mess"{}"in2clip"{}sv0,@
[文字列]ap_str,exe(WshShell.Run "cmd /c timeout 1 & SendKeys_J.exe ""APdata"" ""[Ctrl]c"" & timeout 1 & SendKeys_J.exe """" ""[enter]"""{}0{}false : inputbox "AP"{}"APdata"{}ap_str
--- Vector から sleep.exe (millisec.) 入手。
[文字列]ap_str,exe(WshShell.Run "cmd /c sleep.exe 100 & SendKeys_J.exe ""APdata"" ""[Ctrl]c"" & sleep.exe 100 & SendKeys_J.exe """" ""[enter]"""{}0{}false : inputbox "AP"{}"APdata"{}ap_str
■clip 2 AP, 上の逆方向。
exe(WshShell.Run "sendkeys55k.exe clip2in ""{sleep 1000}^v{sleep 500}~"""{}0{}false : sv0 = inputbox("mess"{}"clip2in"{}"?"),al(sv0
exe(WshShell.Run "sendkeys80.exe 0 10 ""clip2in"" ""{PAUSE 1}^v{PAUSE 1}~"""{}0{}false : sv0 = inputbox("mess"{}"clip2in"{}"?"),al(sv0
c. -- 「55k」 の実行 memory size 700 KB, 「80」 の実行 memory size 1000 KB、だった。
GitHub の awaescher/SendKeyss の C++ のProgram.cs をコンパイルした .exe の実行 memory size 2,500 KB(vbscript 相当の size)、だった。最悪バカ soft. コンパイル err アリ。直して動いたが、-pid: 指定のみ、で使い物にナララナイ。仮想キーもナイ。量・質共にバカ。 .NET Framework ベースだから big size
■menu list トリック   VK 28 「変換」
•exe(.o.run "sendkeys80.exe 0 10 ""menu_list"" ""{PAUSE 1}{VK 28}{tab}{PAUSE 5}"""{}0{}false:sv0 = inputbox("mess"{}"menu_list"{}"select"),al(sv0
•exe(.o.Run "cmd /c sleep.exe 100 & SendKeys_J.exe ""menu_list"" ""[#28][tab]"" & sleep.exe 5000"{}0{}false :sv0 = inputbox( "mess"{}"menu_list"{}"select"),al(sv0
c. ime の選択候補枠の右下の「≫」を click すると、2次元の全select候補枠となる。見易い。tab ボタンでも良い。
•exe(.o.run "sendkeys55k.exe ""menu_list"" ""{sleep 100}+{F10}rr~{tab}{sleep 5000}"""{}0{}false:sv0 = inputbox("mess"{}"menu_list"{}"select"),al(sv0
•[select]im,gemini_f.w.sleep._.500:.o.sendkeys._.''+{f10}rr~{tab}'',im0Mess,al(im,@ ._. は space も可
•[select]im,gemini_fd..w.sleep._.500:.o.run._.''SendKeys_J.exe._.''''''''._.''''[#28][tab]''''''{}0{}false,im0Mess,al(im,@
•[select]im,dosc_fsleep.exe 200 & SendKeys_J.exe "" "[#28][tab]",im0Mess,al(im,@

eval(VBscript 評価式文字列, 指定した文字列の命令を動的に評価。 既存内部変数名は、sv0, sv1, x0, in_x1, wk。戻り値は、 ev 内部変数にも格納。
eval(〜) 内で、複数式、条件式構造、代入文。も可能。 Loop も。
【2様の実装】 所詮、方便に過ぎない。どうでも出来る。
文字列内のカンマの 「,」 記号は {} を指定してください。 {} 化を忘れると、 directive 区切りの指示が乱れ、下記発生。
警告:エラー: プロシージャの呼び出し、または引数が不正です。
ソース: Microsoft VBScript 実行時エラー

ex. 選択部の文字数表示。は、「^c1,eval(x0 = len(sv1)): MsgBox(x0)),」  ここで、「:」は1行複数命令化。-- つまり、動的新規変数定義は不可。
-- 「カンマ」を間違えると、存在しない directive だと そのまま sendkey してしまい、file 破壊を起こす。
なので、eval の 「,」不正、結果的に「),」不正は、 file 破壊なので、『eval 「,」不正。強制終了します。』の強制終了とする。
--- eval 内は、1命令だけ、みたい。「 :」 指定すると、compile err が発生する。また、eval 内の等号「=」は「==」扱い。  なので、eval(式1 : 式2) の意図は、eval(式1), eval(式2), で代替して下さい。スペルが短い、=(式1), =(式2), でも良い、
2019/08/18 「:」マルチ文記述、の機能をサポートした。
--- eval 内での variable 変更結果は保存されない。eval 全体の結果は ret = eval(〜) で保存される。
なので、「^c1,eval(msgbox("len = " & len(sv1))),」 又は、「^c1,eval(len(sv1)),x0=ev,eval(msgbox(ev)),」
 又は、「^c1,eval(len(sv1)),Al"len = " & ev,」 or 「^c1,Al"len = " & len(sv1),」∵ ,Al文字式, は、eval(msgbox(文字式)) に他ならない。
c. eval(1) は、OK, eval() は、コンパイル err, eval (半角 space) コンパイル err 構文 err , eval(Set sv0=0) は、コンパイル err. 構文 err です。Set 文指定しても、代入は拒否。
ex. eval(WshShell.popup "test", は 「構文エラー」。eval(WshShell.popup("test") は、OK.
なので、 eval(WshShell.sendkeys("^c"), も OK.

ifeval(VBscript 評価式文字列)失敗offset数字 or if()失敗offset数字 eval 評価結果が true なら、+1。 false なら、+offset へ skip。 [offset 省略値は 2] eval() の前に if を付加した形。戻り値は、内部変数 ifev にも格納。

汎用化: eval0(〜), eval1(〜), ...., eval9(〜)、評価結果は、配列 z(0), z(1), ...., z(9) に格納。
zn=zm, にて置換 [z(n) = z(m) 実施]。 ここで n/ m は、0,...,9
: evaln(z(m)) と等価。
evaln(z(m) + 一般式) と汎用化可能。   from 2019/07
x0=ev,x1=ev,sv0=ev,sv1=ev,x0=zn も旧 reg 対応で使用可能。 尚、 ev への代入は、 eval(x0) 等。
■参考 = の代入が出来ないのは、致命的不備。しかし、= は出来ないが、replace 関数は、動く。 不公平である。しかし、内部変数は変化しない。なので、やはり駄目。
wk-test,al(wk,eval(replace(wk{}wk{}wk&" 成功")),al(wk,
=(..)変数名, を用いて、「wk-test,al(wk,=(replace(wk{}wk{}wk&" 成功"))wk,al(wk,」 とすると、wk に代入されている。
■eval で文字列関数、数値演算、その組み合わせ、を dynamic にできる。 eval の中で eval の使用は。
ex. eval(eval(1+1)+eval(2+2)),al(ev,    当然可能。
■ eval に隠れての、= 使用は、動いた。vbscript に e9(aa,bb) なる my 関数を定義したら、動いた。ザマー見ろ。制限は取れた。
ex. ^c1,wk-,eval(e9(wk{}sv1&"どお")),al(wk,

ex. eval(e9(a_{}1/3):msgbox(a_)
Function e9(aa, bb)
aa = bb
End Function

c. e9(aa,bb) 関数で 名前 aa の変数が定義される。ただし、e9 関数のこの性質は、eval 関数内での e9 関数 call に限られる。vbs coding で e9(aa,bb) と記述して call しても aa の値は変わっていない。system がガードしている模様。
e9 aa, bb
と記述実行しても、aa の値は変わらない。
eval("e9(" & aa & ", " & bb & ")") --- くまらマクロでは、eval("e9(" & aa & "{} " & bb & ")"
と記述実行しても、aa の値は変わる。 ----- 疑問
cf. リスクも正しく把握! JavaScriptのevalで文字列をコードとして使おう (c) マサト 2019/5/16
eval( 'var result =' + data ); の例が載っている。
cf. VBScriptやJScriptを使う
「くまらぼたん」なら、al(date &" "&time, al(1/3, で数式結果は得られる。

e9 関数は不要、execute 関数を使えば、 式の二重構造文字列写真を指定できる。

  i.e. like a HTML code と その表示。の関係。→ execute は、HTML 表示が code source になる。
ex. eval は、電卓代わりになる (?) ex. eval0(1/3),eval(msgbox(z(0))), 又は、eval(1/3),eval(msgbox(ev)), 又は、 eval(msgbox(eval(1/3))),
ex. eval0("gə:l"),eval(inputbox("入れて"{}"test"{}z(0)))
c. eval 指定の内部式を間違えると、コンパイル err で、くまら、が死ぬ。
c. eval で、くまら、を debug できる。 ex. x1-20,eval(msgbox(in_x1)), で、x1 の値を確認できる。最新は、Alin_x1, で OK.
c. z(0) を汎用カウンターとして利用。ex. init eval0(0) [z(0) = 0]。 eval0(z(0)+加算値), ifeval(z(0)>終了値) 。
c. eval, ifeval は、機能的には強力。x1-,x1+,wk-,wk+, iff 系の directive は、消える運命。


^c1 (^c一桁数字 つまり、^c0, ^c1, ^c2, .., ^c9 も可) ^c の変形 ^c し、その clipboard の写しを sv0 〜 sv9save (セーブ)。clipboard がつぶされても良い。 ^c は sv1 は作らない。 -- ^c,clip1, と等価。 拡張形、^c,clip一文字, にて変数 sv一文字 に格納。
【注意】選択セズに、^c や ^c1 を切っても、エラーは出ません。空振りです(警告は出ません)。しかし、その後の ^v は、空振りしません。最新の clipboard の image を paste します。--- 気を付けて下さい。
r数字 or r(変数名 (r = read) w0〜w9 へ ^c, 変数へ ^c。  戻しの write は、w数字、w(変数名  from 2022/01
w数字 or w(変数名 変数 w数字の write  実態は、j0(w変数 を実行します。
^x1 ^x の変形 ^x した clipboard の写しを sv1 にも save (セーブ)。
cp or xp Copy/ X & Paste マクロ。 元 area 選択後、cp/ xp 実施。where to MESS が出るので、 カーソルを移動先に set 後、 ok ボタン。
^v1 ^v の変形 sv1 のイメージを clipboad に復元転送し(restore)、その後 ^v 実施。 --- jj(sv1) と似ている。(r とも似ている)
 2020/12 ^v1 で時々 err: OpenClipboard に失敗しました。が発生。 timing の Mo. c+(sv1, との差 test 確認中。 --- ^v1 は、ux=0 で重い。
^v1+ ^v1 の変化。  ^v1 は、j0 方式の ux=0 なので重い。c+[sv1 相当の fast mode 。但し、文字化け有り得る。
^^f   Win10 VSCode, メモ帳 用  ^f,sl500,~,{esc}, の 1 directive 化 相当。検索語は ^f の入力枠に事前に入れておくこと(一回事前 dummy 検索必要)。超有用マクロの一つ。  飛んで行って、その近傍の変更が可能。飛び元からの距離等は不明
検索中の操作  F3 / Shift + F3 次の/前の検索結果にジャンプ機能を使用。  from VSCode の便利なショートカットキー
vscode, メモ帳 は、同一動作。project2 は select 状態が異なるため半分別処理 「^^fp2」。
2022/11/30 記。^^f は、無限ループ専用で、毎回〜$ の確認をしている。なので、くまらinbox で手操作しているときは、使用しない方が良い。手操作の場合、 xposvf の環境下で {f3} を切るのが良い。
直後のカーソル状態は、検索語を select した状態。{r}を切ると select を解除し、検索語の右端に位置付け。{l}は左端化。「検索語$」形式の stopper チェックあり。 clipboard は破壊する。 2021/12
検索語$ チェックなしで Loop させない時は、使用環境を整え、単に {f3} を使用して。
  ex. x1-,^^f,{l},x1+,c+(x1,{home}{down},sk-5  左に一連番号挿入。
  ex. ^^f,{r},+{right 3}{del},sk-3  右 3 文字削除  --- 正規表現だと瞬時終了。パターン = /目印.../igm, 置換イメージ = 目印
^^fp2  Project2 専用 mode。  直後のカーソル状態は、検索語の右端に居る。また、検索語は非 select 状態。その他は「^^f」と同様。
  VSCode の ^f は、実行時選択していない時は、カレントを含む boundary 一単語を検索語として入れてしまう。選択しているときはその選択語を検索語として入れる。なので、検索枠の内容を変更させないためには、検索 image を事前に select してから ^f を切れば良い。検索対象範囲は、 select 域の次の文字から。なので、VSCode で検索枠をつぶさないためには、今居る検索語を(再度) select してから ^f を切ればよい。そうすれば、無駄な書き込み(Inputbox の clipboard への copy 等)は発生しない。 --- その通りだが「F3」ボタンには負ける。VSCode では、検索 box に文字を入れた瞬間に全サーチを動的に実施してしまっている。手操作では OK ボタン押しは不要。Ctrl+1(編集部への focus 切り替え) が必要。逆に、OK を押すと、2つ先へ飛んでしまう。
■ AP → Clipboard 、多種方式アリ。
  《 以下、unicode 系は文字化けアリ but 高速モード 》
clip-, or c-, クリップボード初期化 特殊専用マクロ。 カラッポ化指示。 echoux | clip パイプ方式。  c-[, はerr, c-もじれつ, も、err。c-[もじれつ, は OK。   「c」は「clip」の簡略名。 c- は、なんか「echo off|clip」のオマジナイでも OK だって。「C:\>type nul | clip」 も、だって。
clip-[〜&〜&.... or c-[式 clip- 連結関数。 echoux | clip パイプ方式。   c+( / c+[ の前段汎用化。
 - マイナス。クリップボード初期値。定数文字列は「"」で囲まない、変数は「&」サンドイッチ。後ろには「改行抑止 mode」が設定される。  ex. clip-空, 「空」1文字の初期値  -- これは、WshShell.Run "cmd /c echoux 空\c | clip", 0, true の vbs coding 相当。
clip-(文字列式 or c-(式  初期値指定。定数部は「"」サンドイッチ。 ex. clip-("1+2 は" & 1+2,
b-(文字列式 or b-[式  clip.exe Exec 起動.標準入出力 echo ナシ方式。  b+( / b+[ の前段汎用化。  from 2021/12/21。何で今頃?.. 。
   |-- c-/ c+ の echoux を駆逐する最新省資源方式。  b- or b-[, はカラッポ化。 つまり、c-/ c+ は博物館行きが決定。
u-(文字列式 or u-[  UTF-8 dos 環境。標準 echo 〜|clip 方式。  「&」「|」「奇数個の "」の文字を含むとき発狂する。このケースは d-( に変更にて回避。 u- は、カラッポ化。
  《 以下、常に文字化けナシ 普通速モード 》
j-(文字列式 inputbox to clipboard インタフェース方式。 j0 / jj の前段汎用化。 つまり、clip0r, 0r の汎用化。
cput(文字列式 cget(変数 対応に、とりあえず j-( を cput とする。 2022/11 rename サブルーチン利用。 j-( の名前が覚え難いので。
j-[文字列式  同上。
d-(文字列式 UTF-8.txt file リダイレクト・クリップボードへの格納方式。 DOS prompt box echo 黒板方式はどうやっても駄目。file リダイレクトもやはり駄目。 2021/12/18  file redirect は OK 論者は嘘つき。
ex. echo 方式ダメinput 例。『「"」サンドイッチ。 ex. clip-("1+2 は" & 1+2,』--- " も &も NG.
cf. [VBScript] クリップボードとの文字データのやり取りを実現する by どーもボキです。 2021年 05月 01日 本当かな?。
AP → clipboard 格納は、clip0r, 0r や power shell の C-[ でも文字化けは無い。
g-(文字列式 or g-[ uft-8, file i/o ナシ、 data url schema 方式 Chrom window 経由 copy
■ Clipboard → AP 、 3種
cget(変数名 クリップボード image の変数への代入。 clipboard → AP格納。  cget(sv0 は clip0 と等価。from 2021/11
clen クリップボートイメージの文字長を 変数 clen に返却。vbCRLF は2文字で計上されている。
+^v ^v し、その paste された文字部分を select 状態にさせる。+{left cnt}実施。ここで、cnt=(len(str)+len(replace(str,vbCRLF,"")))\2 である。
clip0 [clip get の意] clipborad の sv0 への save。 一連のクリップボード操作の前に必要なら実施。 sv0 は他の操作では潰されない。
clip1文字, (i.e. clip0, clip1, clipa, clipA etc. -- sv0/ sv1/ sva/ svA に save) と拡張した。 しかし、clip1r 等は作ってない。 cf. clip- directive.
ex. clip0,al['&sv0&', ----- DOS prompt で、「echo てすと|clip」と叩いてみて。sv0 の内容は、「'てすと改行'」となっていますダ。
GNU unix の echoux にして、\c (= suppress trailing newline) 文字を文末に付加すると、次の改行 code は無効化される。
ex. 「echoux てすと\c|clip」 DOS prompt 結果は、 「てすと(改行ナシ)」  -- very good.
cf. echo コマンドの違いと移植性の問題 - 拡張 POSIX シェルスクリプト Advent Calendar 2013 - ダメ出し Blog
clip0r (又は 0r) clipborad への sv0 からの restore。 一連のクリップボード操作の後に必要なら実施。
  |-- コレ、便利。特定の image を毎回 clipboard に一発で戻したい時便利。
注意:☑ の &#x2611; 等の code data は、文字化けしている。&;#x2611; は文字化けしないので、一時的に & を &; にし、後で & に戻す等で回避セヨ。-- いつ書いたか忘れたが、今見ると、意味不明。半角の & (#x0026;) は jj& でも、文字化けしないが。 sendkeys("&") の ,&, は、漢字変換の入力モードが「A」のときは、&, 「あ」のときは、ぉ に化けた。が。 2611 って、何だ? --- 馬鹿か、前に「囲みペケマーク」が書いてあるだろ。健忘症?。
--- 今は、clip0r, 0r は、inputbox, senkeys.exe 方式なので、文字化けはしない。 ex. [ə́]sv0,0r の clipbord 結果は、ə́
〒c+_family
■クリップボード操作
c-/+ ファミリー 具体的には、c-[文字列式、c+[文字列式、c-(文字列式、c+(文字列式  echoux|clip 方式、文字化けアリ
b-/+ ファミリー 具体的には、b-[文字列式、b+[文字列式、b-(文字列式、b+(文字列式  WshShell.Exec("clip").StdIn.Write 方式、文字化けアリ c+ の echoux を駆逐する best 省資源方式。 from 2021/12/21 b は board の意。
C-/+ ファミリー 具体的には、C-[文字列式、C+[文字列式、C-(文字列式、C+(文字列式  poweshell 仲介 TextBox and copy() 方式
c+/C+ ファミリー は j0 ファミリーの亜種 具体的には、j0[文字列式、j0(文字列式、の亜種。j0文字列, c+文字列 は未サポート。[, ( 必須。
【 j0[〜, j0(〜 は、InputBox/ Popup and sendkeys(^c) 方式 】   j0- は、未サポート。=sv0=...,0r, で可能。clip0r も ok。j0文字 も未サポート。
d-(文字列式  UTF-8 file to clip.exe 連動方式 chcp 65001 も発行。文字化けナシ。write は d-(文字列式,^v にて運用。


■日本語入力模擬
g+[,g+( 速さ普通。文字化けナシ。データ url スキーマ方式、Chrome ダミー window 経由 ^c to clipboard。本命最強。
d+[, d+(  速さ普通。文字化けナシ。d-( and ^v, つまり、 clip < utf-8.txt 仲介 j0( 対抗新方式の位置づけ。名前 d+ (= disk+) も、最終解的。
j0[, j0( -- ux=0 基本系 軽くて、速さ普通。文字化けナシ。ImputBox, MsgBox. notepad 仲介
b+[, b+(  軽くて速い。unicode の文字化けアリ。 clip.exe + 標準 io  , echo 非介入。  Shift-JIS 環境
u+[, u+( 軽くて速い。文字化け自動回避。 chcp 65001 の dos unicode 環境  , 標準 echo| clip 方式。【†注】
c+[, c+( -- ux<>"p" 軽くて速い。特殊文字文字化けアリ。--- 文字化けの有無の message が出る。 echoux| clip pipeline  Shift-JIS 環境
C+[, C+( -- ux="p" 重くて、速い。文字化け多分ナイ。powershell 仲介
 【ux="p" mode の指定が煩雑なので、c+ の大文字C+ 指定に変更する】。
kb, kb( --- sendkeys 直接 英数字 mode。 英数字入力なら、最も速い。文字化けあり。 IME 事前確認要。自動「A」logic 込み、終了後、常に「あ」化される。clipboard 非介入。
【†注】この方式は、純粋 dos 環境で、UTF-8 環境化を「chcp 65001」を切って実施し、その下で、「echo 文字列|clip」を実施し、文字列を clipboard に格納する素直な方式である。
u+ は、c+ の Shift-JIS 環境を UTF-8 環境へ移行させた。また、echoun.exe では無く dos 標準の echo.exe を使用。なので、資源的にも best 方式といえる。d+( の UTF-8 disk text file 介入方式より優秀。
つまり、沢山ある現在までの方時は、 u+ 一本に統合されたと言える。亜種は考えなくて良い。 case by case の話も無くなった。論理行の中に奇数個の「" (w-quot)」が有ると発狂するので「先頭の " を' +' に置換している」。また「行頭の space (半角/全角とも)は、 suppress されるので、_ に置換している。」の文字化けをワザとしている。その際は警告が出る。但し、バカ MS のために「a1 cde fgh」等の完全英字は文字化けするパターンが実在する。「ㅡ挠敤映桧」に化ける。

clip0rv (又は 0rv)  clip0r,^v と等価。jj〜, ^v1 とも似ている。 clipboard を壊すが、高性能。支障が無いときは、こちらの方が良い。sv(〜) の sv0 定義とペアで文字化けなし日本語書き出しとして使用。
wk- or wk-初期文字列, or, wk+, or wk|, or wk|区切文字列 sv1 の累積化 (append 機能)。 i.e. wk- は、wk="" (init), wk+ は、wk = wk & "\n|#| " & sv1 の操作(改行アリ)。wk| は、wk & sv1 操作。「wk|文字列」 は、「文字列」サンド連結(尚、「\n」は改行、「{}」は「,」の代用マーク)。 sv1 は、^c1 等で事前用意する。 cf. jj(wk) or [al(wk and Ctrl+C/ Ctrl+V ] で結果出し。
(wk の image は残るので、終了後、切りが良い時点で wk- を実施すべき。ex. ①wk- ②^c1,wk+ ③j0(wk) (④ wk-) の 4 phase。)
ex. matrix 化。^c1,eval(e9(matx{}split(sv1{}vbcrlf& "|#| ")):msgbox(matx(0)):msgbox(matx(1)):msgbox(matx(2)):msgbox(UBound(matx)), 生成。
mslc mouse left click MouseEmulator.dll (size= 9 KB) インストール要。 左記サイトの 10. マウス操作 MouseEmulator 参照
msrc mouse right click
msmc mouse middle click
mslwc mouse left wclick
msxy mouse get position 現在のマウスポインタの xy 座標。変数 ms_xy に "xxx, yyy" 形式の文字列を set。MouseControll.dll (size= 60 KB) が必要。 【注意】clipboard は、ms_xy イメージで破壊される。
ex. alOKボタンを押した時のマウスポインタ先の xy 座標のtest,msxy,al(ms_xy
cf. MouseControll.dll の _GetMouseXY@16 実行の画面は、資 MouseControll.dll デモ site 【コマンドラインからマウスを操作する方法 (rundll32.exeで動くDLLの作成法)】、を参照。
msxy の初めての使用時、 msgbox が消えないで残る bug がある (OK 押しが早すぎる)。 ∵MouseControll.dll の起動 load 時間が長い、とのタイミング問題。なので、本番前に msxy を一回ダミー試行するのが良い。
【msxy と rundll32.exe】msxy は rundll32 に user 定義 dll の実行を依頼している。さらに msxy は C/ C++ の messagebox を切っている。 massagebox の応答画面は display 中央で、最前面機能もない。なので OK ボタン押しを先延ばしすると、box が他 task の後ろに隠れ、見つからなくて放置される。Alt+Tab/ Win+Tab で確認できる。すると、box 出ししている rundll32 は資源をつかんだまま放置されている。この資源つかみで、くまらや c++ compiler の資源が busy 状態に陥った。 そう言った意味で msgbox は危険である。 inputbox の方が良い。
c. 2022/11/19 c++ 2022 にて dll モジュール手直し実施、コンパイルしたら KumaraMacro.dll 124 KB に増加した。
Folder 「D:\old_del_d\Tool\KumaraDLL」を作成し、そこで開発。
cf. icon mousinfo.exe の download from my クマラ site.
zop 補強: msxy ディレクティブは、x position = "0" を検知すると、OK/ Cancel の msgbox を出す。なので、loop 処理の中に含めると zop 機能の代替となる。x ="0"は、 display 左壁。
msX座標値{}Y座標値 マウス XY位置セット。Display 左上基点座標値への移動。
MSX座標加算値{}Y座標加算地値 マウス XY加算。つまり、現在位置からの相対移動。
xposi くまらボタンの左上位置の (xpos, ypos) = (14000,10000) への init。 ex. 確認 al(xpos &",`"& ypos
xpos0 くまらボタンの左上位置の (xpos, ypos) = (0,0) 変更。
xposm 現マウスポインタ先端を くまらボタンの左上位置とする。くまら box 移動。
xposv くまらボタン visible mode  変数の xposv 値確認&変更
xposvt くまらボタン visible mode  変数 xposv = true (= default)
xposvf くまらボタン obscure mode  変数 xposv = false  日陰者 (obscure) モード
mstool mousnfo.exe マウス診断 Tool 起動。
mszop マウスの X座標が 0 なら clipboard に, 「zop」 を埋める。
c0(文字列式 or c0[文字列式 AP(= くまらボタン) to Clipboard データ移動。rundll32.exe dll ライブラリ方式。 c++ にて作成。on 2022/11/19
cput( 等に対する新方式。恐らく、最軽最速。しかし、unicode 非対応。
alreg alert regster x1, sv1...等の 内部レジスタの値表示。 当然、「al」 alert ディレクティブとは競合しない様に作ってある。alreg を先に chk.
{l},{r},{u},{d} {left},{right},{up},{down} のスペル短縮版。+{l},^{r} 等もサポート。 from 2019/07
{l 回数},{r 回数},{u 回数},{d 回数} +,^ の前置も可。 2019/07/27  + ^ 付 は word /非 word 境界へ飛ぶので、指定移動回数は減る。+^ 等の2文字ペアの前置も可。
vbs の反復回数指定は、効かない、と思っていたが、keyboard のチャタリングチェック機能を外したら、効いていた。しかも、矢印ボタンの移動は速いことが判明。参る。
 尚、従来の {l 10} 「l のスペル 10 文字」は、 kb directive の中でそのまま使用可能。 ex. kb{a 10}-bcd, は、「aaaaaaaaaa-bcd」の結果。
{lin} or {line} 折り返された論理1行(物理複数行)を選択・ハイライト化させる機能。 開始キャレットがある行が物理先頭行になる。[行頭to行末区間選択]。正規表現の ^, $ サンドイッチ範囲対応。
vbs は、キャレットの移動管理がお粗末君で、{right} したのに動いていないを判定出来ない。つまり、text の文末に居るかを判定出来ない。アホである。
+{right} で1文字選択して、その選択結果が0文字であるか否かの判定は、clipboard に選択1文字を copy して、clipboad が変わっていれば、選択範囲は空では無い。clipboad が変わらなかったら、空を copy した、と判定できる。
つまり、 clipboard を copy 前に、通常ありえない image に初期化しておく。 copy したのに、clipboard が初期値 image なら、空を copy したと判定出来る。なので、カーソルの論理行末への位置づけは、{lin},{r} で可能。
 {lin}の論理行末・行頭の入手は、実は、 clipboard i/o 無しに可能。{end}20回押しっぱなし、{home}20回押しっぱなし、で可能。
 popupbox to clipboard の box2board 変換において、論理行末に1空行付加と言う bug が発覚した。これは、{end 20}{down}{del}{down}の∞ loop で正せる。これは、MS の vbCRLF の vbCRLF to VbCRLf 2連発化の bug である。なので、replace(str,vbCRLF&vbCRLF,vbCRLF) すれば直る。
lkf(検索文字列)失敗オフセット look for 。現在カーソル位置から文末の範囲内 (Shit+Ctrl+End) に指定文字列あるか調べ、有れば、検索文字の直前位置までを選択し、 directive は次オフセットへ移動。無ければ、失敗オフセットへ飛ぶ。 {f3}検索 or vbs の InStr() 関数相当。
directive の format は 「if(条件)失敗オフセット」と同じ。これは、基本機能。
(sendkeys で、「+^{end}」し、image を str1 に格納。vbs 関数 pos = InStr(str1,文字列)実施。= 0 なら err 処理。 > 0 なら、+{right pos} 実行。
【project2 の参考】+{right 1000},sl1000,^c1,sl500,(replace(sv1{}vbCr{}""))sv1,sl500,(len(sv1))sz,(InStr(sv1,`""))pos,sl500,nopal(sz &" : " & pos,if(pos<1),alナシcan,exe(WshShell.SendKeys("{left "& sz-pos+1 & "}+{left " & pos-1 & "}")   で test OK だった。 big ギリギリのサイズ
len() の中の改行1個は「2」とウント(\rと\nの2個)。{right 数} は、1回の改行文字は「1」とカウント。なので、改行の数の配慮が必要。replace(sv1{}vbCr{}"") の「vbCr」を「\n」としたら、構文 err.
sl睡眠時間の値が少ないと、未完で走り、誤動作する。
c. project2 は、カーソル/キャレットは選択域終端に常に無動済み。前回位置は覚えていない。
c. project2 は、^c1 を切ると、選択状態が解除される。メモ帳は解除されない。
【メモ帳 の参考】+{right 1000},sl1000,^c1,sl500,(replace(sv1{}vbCr{}""))sv1,sl500,(InStr(sv1,`""))pos,sl500,if(pos<1),alナシcan,{left},exe(WshShell.SendKeys("+{right "& pos-1 & "}")
lkf( は、regu( or k_wd( と近い関係にある。]
cpos current position = file の先頭からの現カーソルまでの {right}数。つまり、先頭からの文字列を sv1 とすると+^{home},^c1,(len(replace(sv1{}vbCr{}"")))cpos,al(cpos の変数 cops の値。  この directive は、正しい。
db debug mode 規定値 = off, 指定すると debug 状態表示の各種 alert mess. が出る。
dosc コマンドimage DOS command call & "pause" command. 個人テスト用。cmd /c 対応  call mode
dosk 単独 directive. DOS prompt job call. 個人テスト用。 cmd /k 対応。 板 mode
dosc_f or dosc_t「d.」DOSコマンド群image 「WshShell.Run "cmd.exe /c DOSコマンド群image",0,false or true」  実行。 「d.」引数先頭2文字は、debug 指定。「&」連結子。透明人間 mode.  ex. [select]im,dosc_fsleep.exe 200 & SendKeys_J.exe "" "[#28][tab]",im0Mess,al(im,@
zm or zmm 単独 directive. 選択部を zoom up して、 DOS prompt 画面に表示。^c1,al(sv1 と同機能。 msgbox 代わり。dos command が混じっていると、実行される。zmm は " でサンドイッチ。
★directive の強制終了法: ループ回避のために loopck という directive を新設した。
loopck 引数ナシ、の単独 directive。loop_ck という内部変数の値を InputBox message として表示すると同時に変更指示を受ける。
通常は、loopck ディレクティブは、loop マクロ実行の前に1回だけ事前に切り、抜いておく。指定値は、1 loop の directive 数の、数倍位が目安。カモ。
  ループまくろデバッグ時の強制停止の配慮 --- コレ優秀。   --- 2021/12 現在、0_zop.html の方がもっと優秀です。
「延べ n 回の directive 処理がなされました。確認サイクルの現在値は下記枠の値です。必要なら、変更してOK。キャンセル、はマクロの矯正終了」。をサイクル単位で表示するが、キーボードの「CapsLock」が OFF の場合、自動でOK ボタンを押してすぐ消える。表示応答を自動 OK したくない時は、事前に「CapsLock」を ON に動的にすること(shift+CapsLock ボタン操作)。)尚、ON だと、キーボードの CapsLock ボタンが光る。
「CapsLock」のこの方便は、異常時の緊急用対策である。zop を clipboad に格納できない loop 時でも、 CapsLock 変更は多分可能。尚、loop 処理の中の処理は、小文字の自動大文字の CapsLock ON の機能処理は禁止とする。CapsLock 状態の判定は、SendKeys80.exe の別 task 発生で行っている。(InputBox に a と入力し、A になっていたら、 CapsLock ON 環境と判定の logic. 賢い。
延べ 回数のカウンターは loop_cnt に入っている。
loop 回避確認コマンドでもある。また、loopck の回数の directive 毎にも表示する。この message でキャンセル応答すると、矯正終了される。loopck の変数のシステム初期値は、 100 である。つまり、当初は、100 directive 毎に確認 message が出る。つまり、 loop しても最低この回数の directive 毎にヒャクリが出る。loopck directive を意図的に入れると、事前に loop_ck の値を 100 以外に変更できる。カウンターは、マクロ毎にリセットされる。loop_ck 値はリセットされない。
--- Shift+CapsLock on/ off 操作をすると、ime の〜入力が「ローマ字入力」に変わる。 bug? 手動で戻す必要アリ。疲れる。
→ 正しくは、sendkeys80 で特殊キー 「カタカナ」「半角」を叩くを模擬すると、入力モードが乱れ、勝手に「ローマ字入力」に切り替わっていることがある。いつ発生か等、不明。 最新は、sendkeys80 を使わず、SendKeys_J で CapsLock 戻しをしているので Mo 無し。
MS ime プロパティーの 詳細/編集操作 ☑直接入力モードを使用しない(U)、のトンチンカン設定の「✓」を外した。そもそも「直接入力モードを使用しない(U)」って何だ。「半角」ボタンは使わないって意味なら、使うに決まっているので、ペケは、外すのが当然。 →「外しても、乱れた」
kbabc,@ の後も、「ローマ字入力」になっていた。
pool 引数ナシ。 AA_Kumara_pool.txt の読み込み or pool_v 内容表示。変数 pool_v へ image 格納。 from 2020/08  pool_v 初期値は、「init」。
pool#アンカー名# or #アンカー名#   引数ナシ、の単独 directive。 実行 pool 内 の指定 directive の展開 (zop 機能に近い)。 定義文は、#アンカー名#directive イメージ%% とする。最後は %% で必ず閉じること(stopper mark)。水色部分を directive image とみなし、展開する。
c. pool#〜# は、sk@〜、と機能感触が似ている。
c. pool#アンカー名# は、長すぎて、打つのがメンドウなので、#サンドイッチ 記法も新設。 2021/04/28 ∵利用価値高い。 ex. #kopi# やはり、廃止。∵識別難。pool に「pool##」を単語登録した。
 memo: マクロの記憶は、zopa, zopb, zop0,..,zop5, big, pool#アンカー名#、から復元実行で来る。pool 以外は次回まで保存されない。

〒 repl   cf. 正規化man

■正規表現関数

正規表現の {n} とクマラの{} は競合しない。∵ {n} の n は必須だから。
repl(sイメージ{}pイメージ{}rイメージ{}un規定値フラグ は、repl("sイメージ"/pイメージ/rイメージ/unフラグ の世間表記に読み変えてください。くまらは、私の、数学的統一内部表記を採用。

/パターン/置換/flag で、パターンの中に group があると、置換がどのグループ対応か指定できない。どうするか、一回の repl ではなく、match (group 定義) と repl (個々の group 置換)に分ける。
グルーピング((...))
(...)
(...) は、正規表現をいくつかのグループ(サブパターン)に分けます。グループは、+, *, ? の対象としたり、グループにマッチした文字列を、結果として個々に取り出したり、後続の正規表現で参照したり、置換表現で参照したりすることができます。
(Perl:○ / PHP:○ / Python:○ / JavaScript:○)

match(/(ABC)(DEF)/, "ABCDEF") // ABCとDEFの2つのサブパターンに分けてマッチ
match(/(ABC)+(DEF)/, "ABCABCABCDEF") // ABCが1回以上の後、DEFが後続する文字列にマッチ

4. Quantifier

greedy

? 1 or 0 times
* 0 or more times
+ 1 or more times
{n,m} at least n but not more than m times
{n,} at least n times
{,n} at least 0 but not more than n times ({0,n})
{n} n times

reluctant
(lazy: Makes the preceding quantifier lazy, causing it to match as few characters as possible. By default, quantifiers are greedy, and will match as many characters as possible.)
最短マッチング(...?)
*?
* と似ていますが、* が最長マッチなのに対して、最短マッチでマッチングします。< に対応する > までをマッチさせる際に便利です。
(Perl:○ / PHP:○ / Python:○ / JavaScript:○)

?? 1 or 0 times
*? 0 or more times
+? 1 or more times
{n,m}? at least n but not more than m times
{n,}? at least n times
{,n}? at least 0 but not more than n times (== {0,n}?)
【注意】 この正規化ディレクティブは、s/p/rイメージ は、変数でない場合、必ず「"」で囲むこと。

repl(sイメージ{}pイメージ{}rイメージ{}un規定値フラグ  正規表現使用の replace method。sイメージ = 「検索対象文字列式」、pイメージ=パターン文字列式、rイメージ = 置換文字列式、unフラグ[= オフigm](IgnoreCase, Global, MultiLine)=「空(=規定値。i:off, g:on, m:on。 私の規定値。case sensitive が default。)、オフするフラグの1文字の連結形 ex. "im"(ignore on と muti off 化)」。replace 関数とは異なる。"文字列" or 変数名 のどちらも可能。 data 内に「,」が有るときは「,\数字\」インタフェースで cover すること。結果は、 r_repl で返却される。igmフラグが規定値のときは左隣の「{}」も付けない、とする。
repl( の結果は、置換された文字列で一要素、regu( の結果は n個の hit した単語群であり、配列である。
 ex. repl("bat,\4\cat,but,cut,cap"{}"c.t"{}"zzz",al(r_repl
 ex. r1,repl(w1{}"(.)(?=\1)"{}"■",al(r_repl  ' 2連続文字の前文字を■に置換
 ex. ^a,^c1,[冬]k_wd,regu(sv1{}"^.*冬.*$"
cf. MicrosoftのVBScript.RegExpのページにMultiLineの記述がない [VBScript]
test(sイメージ{}pイメージ  正規表現使用の test method。sイメージ=「検索対象文字列式」、pイメージ=パターン文字列式。結果は、 r_test に true/ false が返る。
ex. test("bat,\3\cat,but,cut"{}"b.t",al(r_test
regu(sイメージ{}pイメージ{}un規定値フラグ  k_wd(〜 でも可。 正規表現使用の execute method。sイメージ=「検索対象文字列式」、pイメージ=パターン文字列式。Matchesコレクション --- 不明。 hit の image は、 al(objMatch(i).Value の形で表示・入手可能。 (ここで、i= 0 to r_cnt -1)。hit カウント数 r_cnt は、objMatch.count でも入手可。 k_wd( のときは、変数 k_wd にキーワードを事前にセットしておくこと。 ★を付けて m_list に表示。つまり、k_wd(〜 のときの pイメージ は、k_wd のイメージを含む範囲を定める文字列。少し、冗長 spec.
objMatch(i).Value は一覧表を m_list に格納。 al(m_list で確認して。
--- al(m_list は、個々用、全体結果は、 al(report を使用。
k_wd_report = "both" ' 毎回表示+ report mode , "only" is 最後一括 show reports のみ mode. 切り替えは、 user が変数値動的変更。
report = "" ' k_wd の集計結果 変数の rest 管理は user 責任。 big size なので、サイクル end での定期的削除必要。
f_name = "" ' k_wd の検索対象の file name , 変数の set 管理は user 責任。
cf. 純志のぺーじ VBS 正規表現     2022/11/06 404 発生。 最新 url は下記。 Copyright c 2010 "Junshi Toyoda, Okinawa Japan"
http://osm.a.la9.jp/category/VBScript/RegularExpression.htm
ex. regu("<div><b>hello</b></div>"{}"<b>.*</b>",al(r_cnt

s/パターン/置換/;  ToMoClip の置換演算子と同じ format とした。 r_repl 内容の置換。と定義した。つまり、r_repl 変数に入力 string を set して call の形。。 2022/11 「"」は不要。「/」の escape は「\/」とすること。連続でないときでも「;」は必須。
「;」を連結符号として複数個連記可能の tomoclip と同じ表記。「; 」の半角 sp 1個付きも許す。∵クマラが内部補正する。「;」のマルチは、「,」のマルチより高性能。 ex. s/[aiueo]/A/;s/[pbfhv]/P/;〜
s// or s//規定値 flag 変更   i_igm 変数の確認・変更。s/ の事前 set 必要。
option 規定値は、i = false, g = true, m = true。つまり、私のは、 case sensitive が default.
s//r, s//w   r(r_repl/500, w(r_repl と等価。 ToMoClip $CP editing= $, or $CB editing= $相当
補足:
• ToMoClip to くまら の format 変換は不要、但し、big directive が良い。「;」vs.「,」置換。 $cp editing="s/;/,/;"$ で実施。
vbs の正規表現ライブラリへは、"string" で「"」サンドイッチして渡すので、「"」文字は escape「""」化が必要。 「""」の escape は tomoclip では必要 (bug)。クマラでは不要。
• L 小文字 は、LCase(strString) 関数。U 大文字 は、UCase(strString) 関数。 ex. ,(LCase(r_repl))r_repl,
ex. s/a/変/  ,,  s/(.)\1/**/
ex. $CP$ 系は、r(r_repl,s/([^n])(?=\1)//,al?,w(r_repl 等価 s//r,s/([^n])(?=\1)//,al?,s//w
ex. $CB$ 系は、cget(r_repl,s/.. ,s//w or cget(r_repl,s/.. ,alどこへ?,s//w
つまり、ToMoClip の $CP$ は、ブーメラン型 from CP to CP, $CB$ は、from CB to CP 型。やり方の方便に過ぎない。


【注意事項】
アルファベット入力は、jj〜を用いなくとも、〜、で可能ですが、使わない方が良いと思う。jj〜を使うべき。性能も良く無い、日本語 Fep 状態を気にする必要がある。また、先頭文字が directive と同一だと、directive 扱いされてしまう。jj〜、と書きたいときは、jjjj〜、とすれば良い。

【制限事項】
【制限1】: 現在の set/p 方式では、選択文字列の行の先頭1文字が 「space (半角・全角)」の場合、「_(under bar)」「半角 space」 に化ける。理由、先頭 space 群が削除(サプレス)されるのを避けるために、ワザと化かしている。制限3 と比べたら、可愛い方だ。
--- この制限は緩和した。「半角 space」に化かした。 echo13 -n を利用して、space image を復元した。(echo13 に bug アリ、引数に全角 space があると、出力しない。面白い bug である、隠し機能カモ。しょうがないので 半角 space と置換した。先頭 space の扱いが echo13 とecho13 -n で異なるネ、支離滅裂。)
---- 完全解除した。echo13 は止めて、echouu/ echoux にて実現。
【制限2】: 「"」(半角のダブルクォート)は「゙」(半角カタカナ濁点)に化けることがある。ワザとそうした。理由、例えば、現方式では (set/p<nul="〜") の「〜」の中に、「"」が奇数個あると、More? が出て、「"」のペアが閉じてないと判定され、競合して clipboard へ copy 出来ない。偶数個でも NG のケースがある。しょうがないので、「゙」と置換した。ご勘弁の程。MS の spec. オカシイ。「"」 の数は user の勝手だ。制限3 と比べたら、可愛い方だ。---- 完全解除した。echo13 は止めて、echouu/ echoux にて実現。eacape sequence 採用。
ex. set/p<nul="WshShell.Run "cmd /c set/p < nul = """ & str1 & """ | clip", 0, true" | clip  は、「"」は 8 個だが文法 err 発生。
--- 'clip", 0, true"' は、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチ ファイルとして認識されていません。

【制限3】: 「set/p<nul="〜"」は、DOS prompt 画面に「〜」(= なみ)と表示されるが、「set/p<nul="〜"| clip」による clipboard の内容を ctrl+v すると「?」に化けている。つまり、全角文字は clip さんにより、化けることがある。DOS の clip はボロイ。set/p<nul="〜" > file, and, clip < file では、clipboard 中身は、「〜」で、化けていなかった。 why?--- コレ、複雑。メモ帳にある「〜」は、clipboard 化しても化けない。 html 表示されている「〜」だと「?」に化ける。 why? 。よく見ると 形が違う、〜 &#x301C; in html, ~ &#xFF5E; in メモ帳, x301c の方が化ける。 「›」  &#x203A; も化けるネ。--- 使い物にならない印象。---- 誰か、このバカ clip を直して下さい。 ^c, ^v するとき、文字コードなんてどうでもいい、 binany の copy&paste じゃ無いのか。
【制限4】: 「( or )」半角小括弧は、「( or )」全角小括弧に化ける。ワザとそうした。DOS 複数語コマンド化の (〜&〜&〜...) の少括弧と競合し、誤動作することがある。を回避するため。奇数個あるとペアの整合性が乱れる模様。ex. (略)で狂って、発覚。( は半角。)は全角だった。---- 完全解除した。echo13 は止めて、echouu/ echoux にて実現。eacape sequence 採用。

【補足】
当初の方式では、その他、マクロや選択語の data 中に、directive 名等の予約語や、カンマ「,」、小括弧「()」等が有ると、処理動作と競合し、誤処理することがあった。  が、方式を見直したので、今は、下記の様な誤処理は発生しない。多分。
ex. 「echo 文字列 | clip」等は元々危険で、簡単に誤動作する。例えば、文字列 = 「Enter and exit」 と 「Enter & exit」とでは、全く違う。つまり 「&」 等の DOS コマンド予約語も危険 data 文字。---- 所詮、 モオチャです。
--- echo は、危険なので使わないようにした。これにより、「,&<>()...」等の特殊文字制限も無くなった。∵ set/p の引数は""で囲むので、中に特殊文字が有っても構わない。
但し、echo. のみは改行のために使用するとした。しかし、echo.|clip は、space がお尻に付くので、今一。リダイレクトでファイルに一回落とすと、お尻の space は消える。つまり、複数行の場合、echo と set の結果を > file に落とし、その後、clip < file 、を実行していた。

--- 気に入らないので、echo の freeware で お尻に space が付かないものを捜したら、日本に有った。Vector Yamashin さんの echo.com (なんと、size = 546 バイト, echo13.com と私は rename した。) --- コレ very good.  これにより、今一のリダイレクトの file i/o も無くなった。
(Vector には、echo 関連でもっと多機能なものもあり、改行アリ、ナシを指定できた。しかし、echo の文字数に制限があり、max 50〜122文字で(複数回反復すれば良いが、それだけでなく「"」で囲む spec. が今一で、使いものにならないものばかりだった。)、 clipboard 対応としては、どれも使えなかった。echo. の代替としては多機能は不要で、Yamashin さんのものが正解である。但し、echo13 は、echo. 以外の機能は全くダメ。「"」のサンドイッチが未サポートなのが致命的。そのため「\>」等の escape も効かない。尚、MS の echo, set/p には文字数制限は無い。 --- 実地 test によると、max はあるね。1 cmd.exe 1行複数命令で data 部総和 LenB() のバイト長、約1万文字。8191 文字(コマンド プロンプト (cmd.exe)) のコマンドライン文字列の制限より多かったね。) Len() だと 6374 、で、data 以外のコマンド image の文字の総和を足すと、丁度、8191 ぐらいになるね。合っているネ。

MS は、リダイレクトの特殊ファイル名として、「clipboard」 をサポートすべきだ。>,>>,<,<< 全てサポートしろ。さもなければ、echo, set, clip を見直し、作り直すべきである。世界中の人がセンスの無いバカ soft spec. でイイ迷惑を受けいてる。
ex. ① echo 〜 | clip と、② echo 〜> file ,and, clip < file の結果は違う。①は行のお尻に space が余分に付く。--- MS は test しているのか。

マクロ サンプル集

■ 気に入ったマクロイメージを、例えば「めに」(メニュー、のつもり)の日本語 IME 単語登録、しておくと良い。 pool に登録して。
  (経験則: 定形文字列は、テンキーの 0 を IME 漢字登録している。但し max 60 文字以内の文字列。 very 便利)

■ My 助言: ALC の英辞郎 は、Adblock plus 適用下の Chrome 以外の、IE/ Oprera 等の環境では、使用しない方が良い。何故ならば、広告が多過ぎて PC の cpu 無駄食いが発生し、電気代が勿体無い。許せない(電気料金増加という実害がある)。---- 選択肢が減って、却ってスッキリした。 Adblock の IE 版を適用しようとしたが、インストールが大袈裟なので止めた。やりたい人はやって。

英辞郎自身も、昔と比べると質が落ちていて使い難い。良く無い。例えば、味噌もクソも同じレベルでアルファベット順に一覧が並べてある。コレは、致命的である。昔は違っていたと記憶している。どの語が最も basic な言い回しなのかが判別出来ない。良く無い。学習者に失礼。というか、使い物にならない。---- 使うの辞めようか。ex. 〜を誓う。
pledge
promise(あることが行われることを)
promise(人にものをやることを)
swear
この中で、最も basic なのは、「神に誓う」の swear である。answer の親戚。promise は、約束、だろが。pledge は、誓願、だろが。その辺のニュアンスが分からない。只並べるだけじゃバカでも出来る。

Weblio 辞書 ---- 研究社 新和英中辞典等 → なかなか良いネ。sound もあるし。 weblio = web lio のカーニバル ? 「ウェブリオ
(ポルトガル語/リオ・デ・ジャネイロ/Rio de Janeiro = River of January /リバー・オブ・ジャニオリー/ i.e. リオは川・リバー。)

http://ejje.weblio.jp/content/誓う  --- 「^c,acChrome,^1,^l,{tab 9},^v,~」 で、今は、たまたま、ALC と同じ{tab 9} だった。

weblio 内からの weblio は link が貼って有れば当然出来る、が、くまらボタンが有れば、 link ナシの単語も引ける。(ALC は double click で link ナシでも引けた。に近くなる。)--- link の貼り過ぎで html source のサイズが n 倍になっているね。賢く無いネ。
(<a href="....">〜</a> の中に〜の 10% 位の長さの英日単語が埋まっている感じ。 space が勿体無い。工数の無駄でもある。ハッキリ言ってバカ。下線だらけで目障りである。センス無い。)

html 用に 「くまらバー」 を提案する。良かったら利用して下さい。
要は行末に約1文字の大きさの link 制御 space (縦長ボタン、歩道)を確保する。
上記 ピンク背景の frame 内辞書引き所望単語(英/日)を選択状態にして、右縦スクロールバー部分をダブルクリックしてみて。   くまらバー
枠の外の単語でも良い。ex. 上の枠外の pledge という単語を選択状態にして、右下の縦スクロールバー 部分を dblclick してみて。要するに、縦スクロールバー全体が一つの縦長のボタンになっている。
ALC の様なダブルクリック選択機能(「ダブルクリック検索」)は、勿体無い、という単語を引きたい時、ダブルクリックはダメである。勿体、か、無い、に分離してしまう(ちょっとバカ)。勿体無い、の全体を選択し、上のくまらバーをダブルクリックしてみて。
通常、或る部分を選択状態にして、他の部分を click 又は double click すると、選択状態が解除されてしまう。しかし、スクロールバー部分を click しても選択状態は解除されない。つまり、スクロールバーの部分は治外法権の特殊な場所 (onclick, ondblclick は効かない、しかし、onmousedown, onmouseup は効く Chrome/ Opera)である。この性質は、活用すべきである。
IE に bug があるね、スクロールバーでの onmouseup は効かないね。支離滅裂。onmousedown が効くのに onmouseup が効かないのは、オカシイだろうが。 MS は test していない。

(実は、当初は、 くまらバーをダブルクリックでは無く、クリックで onmouseup で実装する logic を組んでいたが、IE のバカが onmouseup 未サポートなので、spec. を変更し onmousedown のダブルクリックの実装[厳密には、指定時間内2回の down ] になってしまった。--- 残念。)
(IE は、onContextMenu の右クリック後の動作もオカシイ。右クリックのダイアログを ダイアログ外の場所を click し、解除した時 内部的に mousedown を切っている様になっているね(しかし、IE で下の「マウスイベント」で確認したら、mousedown は余分には発生していなかった)。Chrome/ Opera と動きが違う。 spec. オカシイね。 この click のとき mousedown が立て続けに発生した様になり、くまらバーの logic が走ってしまっている。多分 IE の setTimeout が、右クリック画面表示中は遅延され効いていない気がする。しょうがないので、onContextMenu の頭に dwn=false; を入れて直した。--- 直ったヨ。)

リンク用サイドバー をワザと左に付けてみた。 cf. WEB工房 きくちゃん --- right to left/ left to right :使い道から思い浮かばないしなぁ →→ 有るべ。


<div style="overflow-y: scroll"></div> 指定で、height= も無指定なので、ノブも、出ない(もう、単なるリボン扱い)。両端のアロー(矢印)マーク ▲▼ も邪魔だが消し方不明。--- IE は css をイジると出来る感触。IE 以外はそもそも変更不可みたい。IE だと weblio cpu busy 70%, ALC cpu 50% 位、全く使い物にならないね。 weblio の方が cpu 食うね。Chrome weblio 5%(adblock 21個, 広告多過ぎ。), ALC 5% (adblock 9個)--- IE は Chrome の 10 倍 cpu 食うね。

サンプル coding (click 直後、onclick イベントの痕跡が無いときは、scroll bar click と判定。logic 的には、scroll bar 位置情報など求めなくて良い。selection 文字列の取得は、最新の IE では、document.getSelection() で、他 browser と同一となっている。)
<body
onload=
"dwn=false;"
onclick="dwn=false;"
onmousedown=" img = document.getSelection(); if ( (img != '') && dwn) {if( confirm('単語「'+img +'」: どっちの辞書で引く?\nOK -- weblio\nキャンセル -- ALC') ) { a = 'http://ejje.weblio.jp/content/'+img; } else { enc_img = encodeURIComponent(img); a = 'http://eow.alc.co.jp/search?q='+enc_img; }; b= '_blank'; c=''; window.open(a,b,c); dwn=false;} else {dwn=true; window.setTimeout('dwn=false', 500);} ;"
onContextMenu="dwn=false; img = document.getSelection();if( (img != '') && !confirm('単語 「'+img +'」 の weblio 辞書無視。\nOK -- 今までの右 click メニュー\nキャンセル -- weblio') ) { a = 'http://ejje.weblio.jp/content/'+img; b= '_blank'; c=''; window.open(a,b,c); return false;} else {} ;"
>

なお、IE ALC では単語を、utf-8 へ encodeURIComponent() 関数で encode している。
尚、ALC の様に、ダブルクリックでも Link 機構を call させたい人は、ondblclick="〜" を入れて下さい。
cf. マウスイベント (MouseEvent)

★ 一番簡単なのは、グリーン色 の coding でした。つまり、右クリックのメッセージにちょっかいを出して、処理をさせる message を挿入する。----コレが最もスマートで、賢いかもしれない(この sample だと、「weblio 辞書で引く?」はい/いいえ、を追加している。)。
Chrome だと、popup block の警告が出たが、構わないから続行指示を指定したら、正しく動作した。IE では警告も出なかった。右クリックで、『Google で 「〜」 を検索(S)』 相当の実装に近い。自分のサイトだったら、マウスの右クリックの拡張として多分許される。
Windows の右クリックの spec. を考えた人は、賢い。 user own coding の道を初めから設けていたのである。使わない手は無い。

cf. Windows7で右クリックメニューに好きな項目を追加する方法

このページの内容:                        ×
単語 「pledge」 の weblio 辞書無視。
OK -- 今までの右 click メニュー
キャンセル -- weblio

□ このページでこれ以上ダイアログボックスを生成しない
                       [OK] [キャンセル]

  上のグリーンonContextMenu=〜 を追加すると、
  右クリックすると、
  左記ダイアログ box が今までのダイアログ box の前に出る様になる。
  default の OK は、従来モード。
  (しかし、右クリックで copy が素早く出来なくなった。 不便。)


もっと簡単なのがあった。しかも、 dblclick では無く、click。 また、 _blank は止め、新規固定 tab(右隣り) にした。
種明かし。 ---- 2列の table にして、1列目は、縦長ボタン(可変長)。
<body onload="document.getElementById('btn').style.height=document.getElementById('dtdt').clientHeight +'px'" >

<table> <tr> <td id="dtdt"><button id="btn" title="weblio/ ALC 用 Link side-ボタン です。 辞書引きしたい単語を選択して、 click してネ。" style="background-color:navy;width:10px;padding: 0px 0px;border-style: none;" onclick="img=document.getSelection(); if(img == '') {return;} else {}; if( confirm('単語「'+img +'」: どっちの辞書で引く?\nOK -- weblio\nキャンセル -- ALC') ) { a = 'http://ejje.weblio.jp/content/'+img; } else { enc_img = encodeURIComponent(img); a = 'http://eow.alc.co.jp/search?q='+enc_img; }; b= 'dict'; c=''; window.open(a,b,c);"><font color="white">L<br>i<br>n<br>k</button></td> <td> 本文</td> </tr></table>
Test テスト。very easy
-- IE は、野暮ったい、ボタンの横幅が広すぎるので ;width:10px とした。Chrome と Opera はセンスは同じ。IE/Opera の cpu busy ものすごい。 weblio/ ALC は最低のえげつない、サイトだね。
(選択時の)マウス右クリックチェックをする
---- onmousedown のイベントへの毎回介入は overhead が高いので、通常は off とする。(ex. Project2 のIEビューの文字選択が出来なくなる 。等の弊害が出ているので。)





〒 sample:  jump to サンプルの最後
00.  : zop(ゾップ, zero-opration)・ぼたん = クリップボードへ文字列「zop」を copy。 skip ディレクティブ 永久loop の強制stop トリガ。くまらボタンにはディレクティブの反復実行の際、各サイクルの頭でクリップボードの内容を確認し、もし、imge が「zop」だと、強制終了する仕掛けが組み込まれている。
もし、skip を実行するなら、事前にこのボタンをいつでも押せるようにして、skip 機能を実行すると良い。
マクロは、「zop 指示を得ました。強制終了します。」という alert box を出し stop する。

0.   どこからでも Chrome の ALC 英語検索, Google 検索可能。事前に Chrome を立ち上げておくこと。タブ1 は ALC を想定。

選択語部分を選択し OK ボタンを押す。入力問い合わせ box が出て、if a = ALC, g = Google と来るので、a 又は g をキーイン。
  a, g 以外は、マウスと右手のみで copy の機能(コレ便利。でも event viewer の選択部の copy は出来なかった。 why?)。
a だと ALC 検索、g だと Google 検索される。

1.   選択された語を copy し、browser の タブ1 の space ALC の英辞郎(英和/和英)で引く。

解説:選択された文字列を, ctrl+c し、タブ1へ飛び(ctrl+1)、 アドレスバ−を選択し(ctrl+L) 、url を埋めて、リターンキーを叩く。
尚、英単語の選択は、ダブルクリックが楽。
補: (1-2) ^c,^1,^l,http://eow.alc.co.jp/search?q=,^v,~ は、NG (url の文字列が長すぎる)
   (1-3) ^c,^1,^l,http://eow.alc.co.jp/search?q=,sl1000,^v,~ は、 OK
(但し、(1-2)(1-3) 共、アドレスバーの IME 日本語変換 mode が「A」の時のみ OK、「あ」の時は NG。)
jj〜 は、〜 の日本語 (japanase) を含む文字列を clip board 経由で、一括 paste するもの。
長たらしい英文字入力にも有効( clip board は潰(つぶ)れるが Sendkeys より優秀)。

cf. 「英辞郎 on the WEB」の検索窓「英辞郎ジャンプ」、提供開始 (2015年9月9日) --- 権利侵害 (?)、しかし、「くまらボタン」は通常使用を自動化しただけなので、個人使用なら良いと思う (?)。
F6 ボタンでもいいみたい。つまり、{f6} と ^l は、ほぼ等価。

12nd  space ALC の検索枠の input は、accesskey="e" [alt+e] であり IE/ Opera では有効。Chrome ではメニューと競合し NG. (ALC は、accesskey の文字を変更すべきだ。)

解説:選択された文字列を, ctrl+c し、タブ1へ飛び(ctrl+1)、 検索枠を選択し(alt+e)、ctrl+v し、リターンキーを叩く。


1''.  選択された語を copy し、タブ1 の space ALC の英辞郎(英和/和英)で引く。

解説: ctrl+f の検索枠 □ を 選択語の一時置き場(物置)として利用している。
物置としては、 clip board, find 枠, アドレスバー枠、等が利用出来る。しかし、メモ帳にはアドレスバーは無い。つまり、 case by case.

13rd  Web 以外の場所から ALC 利用。,acChrome, をかます。

解説:スバラシイ!。web 以外、web 内、の場所のどこからでも、正しく動作した。
しかし、テストは非常に疲れました(数日つぶした)。activate と InputBox の相性が悪い、です。MS は inActivate メソッドを作るべきだ。ex. html には、focus() 、blur() 両方ある。
AppActivate を切った job が inputbox や msgbox を切ると、activate された window はロックされて、操作不能となる、また WSH もタスクバーから消える。従って、問い合わせの interface は popup にする必要がある。
常駐プログラムの SpeedFan のパネルの文字を選択して、ALC に掛けたが、選択が効いていない。手動で ctrl+c すると copy されているのに。 why?
^v の前に、{del} を入れて、全選択状態からズバリ入力では無く、クリアしてから入力、にし、タイミングをワザと遅らせた方が空振りを防げる様だ。タイミングの問題。例えばマクロ先頭に、 db, デバッグ directive をかますと、完全にタイミング待ちされるので、空振りはほぼ無い。経験則。

14th  同一 browser 内の場所から ALC 利用。 11st の変化。21021/12/25

2121/12/25: ^c1,^1,^l,{del},b+[http://eow.alc.co.jp/search?q=&sv1,~
old: ^c,^1,^l,{del},jj(http://eow.alc.co.jp/search?q=&sv1_jj),~

 15th  Web 以外の場所からも ALC 利用。 ,acChrome, をかます。 13rd の変化。  私は、コレを「あるく」で単語登録した。 2021/12/25 OK。

2021/12/25: ^c1,acChrome,^1,^l,{del},b+[http://eow.alc.co.jp/search?q=&sv1,~
c. メモ帳や project2 の編集画面の単語を選択して、alc を呼べるので便利。しかし、project2 のビュー画面の単語は、^c, の選択が、くまらのボタン画面に切り替えた時に選択が解除されるみたいで、^c が空振りしていて動作しない※。 why?。困る。でも project2 の編集画面で使えるので便利。 --- 毎回手で ^c するのは面倒なので、 AutoHotkey で テンキーの Enter キーに ^c を割り当てた。コレすごく便利。 ^c 専用ボタンを作った。 NumpadEnter::^c 命令一発で済んだ。
※ ^c は空振りになるが、手動で clipboard に選択部の image を事前に入れておき、マクロを呼ぶと ^c は空振りするが、全体としては動作した。(project2 のビュー画面の copy は、手動の CTRL+C や、マウス右クリックでは可能である。)

 15th_lio  Web 以外の場所からも web lio のカーニバル 利用。 ,acChrome, をかます。 13rd の変化。

^c,acChrome,^1,mslc,^l,{del},jj(http://ejje.weblio.jp/content/&sv1_jj),~    ← lio bug 回避版
【補】 weblio は重いので、^l の効きが悪い。tab 1 に移動したら、アドレスバーにワザと「?」を入れたので、もし、アドレスバーの内容が「?」で無かったら、Aert 「?」の mess. に対して、キャンセルを指定して下さい(OK による続行は危険です)。
weblio か Chrome か Adobe に bug がある。 weblio の「クイック再生」をすると、キーボードの「tab」キーの移動を含むキーボード操作が、効かなくなる(空振りする)。---- このことと、^l が効かなくなるとは関係がある。前回発音を聴いていないと、^l が効かなくなる現象は起きない。---- この状況は、weblio のどこかをマウスクリックすると解除される。キーボードからでは解け無い。
−−→ Adobe 関連の bug ですね(close し忘れ)。発音を聞いたら、その後、weblio の他の場所でマウスクリックを1回する様にして下さい。
つまり、この bug のために、 weblio での以後のショートカットキー操作が効かなくなった。困る。
---→ 回避策: くまらボタン使用時は、 weblio の「クイック再生」使用禁止、「プレーヤー再生」ボタンを使用すること。

【クレームしておいた】
 weblio 英和和英辞典で、「クイック再生」ボタンをクリックすると、以後、キーボード操作が効かなくなる。ex. F5, tab ... 全てのキー操作が効かなくなる。
マウスで他の場所をクリックするとこの状況は解除される。 不具合です。直して下さい。(close 処理がなされていません。)
どうして困るか。実害が有る。
例えば、キーボードのショートカットキーで画面操作をしている時、 この様な状況に陥るとその画面が制御不能となる。

尚、「〜」を含む例文一覧 の中にある、オーディオボタンの方は、この不具合は無い。
( MouseEmulator.dll により、mouse 模擬可能になったので、 dummy の click をかましたら、回避込みの完全自動化が出来た。)

また、クイック再生時、最後に「カチッ」と言う音がするが、耳障りで、除去して欲しい。

 15th_free  Web 以外の場所からも The Free Dictionary (英英) 利用。 ,acChrome, をかます。 13rd の変化。


【辞書比較】
ALC tab1, weblio tab2, free dict. tab3 に同時に開くは、下記。暇人はやってみて。どの辞書がいいか比較してみて。 weblio の女の人の発音と、free dict. の女の人の声は声質は少し違うが、同一人物だね。男の人の声も同じ。パクリだね。 違うが、非常に良く似ている。標準化されているとも言う。英語って、案外規格化されている、との印象。

IE で上記相当を実施したら、全く動作しなかった。tab2/ tab3 へ移動しない。もう、お話になりません。 IE は、私的には Java Applet 以外に使い途がないダメ browser ですね。IE での動作確認など、もう、どうでもいい。時間が勿体無い。
IE では address bar 選択のctrl+l, alt+d も効いていない。手で叩くと効いているが、マクロで自動化すると異なる動きをしている模様。疲れる。
同じ IE でも、The free dict. の動きは、マトモ。つまり、広告が多いと誤動作している様だ。いずれにせよ、IE は使い物にならないということだ。捨てた方が良い。

 15th_etymo  Web 以外の場所からも Online Etymology Dictionary (英英) 利用。 ,acChrome, をかます。 13rd の変化。



16th  Web 以外の場所からも ALC 利用。【IE の tab1 に事前に ALC が有るとの前提下。】 11st の変化。 アドレスバーの url 書換えは、日本語はエンコードが必要。---- encode 化はこれから作る。

2017/07 現在 acInternet Explorer は、activate に失敗する。acExplorer だと OK。 why?

17th  Web 以外の場所からも ALC 利用。 11st の変化。 ALC を 2 回呼ぶ。
【印象: IE の ALC は、宣伝多過ぎで、 cpu 食い過ぎで、使い物にならないネ。電気代が勿体無いので使わない方がイイネ。重いので、ロード時間も掛かり過ぎ。Google の方が良い。】
 Activate 失敗の規則性が不明。window は存在しているのに 失敗する。実に、イイカゲン。イライラする。他の window に focus を色々移した後、再トライすると activate は一回で成功とか、ある。疲れる。


18th  Web 以外の場所からも ALC 利用。 url 書換えは、日本語はエンコードが必要。---- encode 化は下記。日本語 IE の最終 tab (ctrl+9) に、 encode 計算サイト http://urlencode.net/result.cgi を呼び、encode を入手。これを、ALC のアドレスバー入力につなげれば良い。14th^c,^1,^l,{del},jj(http://eow.alc.co.jp/search?q=&sv1_jj),~ の青の部分を下記に続ける。

コメント: 上記、全マクロ文字数 199 文字。---- この長ったらしいマクロは、正常動作しました。
--- 前半、後半で、単体で動いていますので、2つをつなげても、正常動作する。当たり前の話。
尚、InputBox method の文字数制限は、「全角で160文字、半角では225文字まで表示される 256byte以上を指定するとInputBoxメソッドは実行されない 32768byte以上を指定するとエラーになる」---cf. 実は奥が深いInputBox
引数Promptに指定できる文字数は次の通りです。
種類   文字数
関数   全角で512文字、半角では1024文字まで表示される
メソッド 全角で160文字、半角では225文字まで表示される 〜
cf. Method: InputBox for VBS には、prompt   Variant
Specifies the text that displays in the dialog box. The maximum length depends on the width of the characters and is approximately 1024 characters. と書いてある。イイノカ?。

cf. 2019/10/16 長いマクロを作って実行したら、zz 変数の値の image が約 半角 500 バイトでちょん切れていた。しかし、入力枠の文字 max は、1023 である。つまり、vbs は、user が入力し、表示もしている string の後半半分を AP に渡さない。しかし、 j0[ 機能の AP to clipboard の 1023 以下の case は、 inputbox を利用している。従って、user は、AP へ clipboard 経由なら 1023 までなら渡せる。
ex. 入力 data の頭に Big_data のマークを付け知らせる。 AP は、InputBox を再発行し、第三者の ^c 発行 jobを起動する。その後、clipboard から get する。---- 方式的には可能。 j0[ で散々逆方向は検証済み。
★clipboard → AP は、文字化け等の制限は無い。よって、clipboard 経由出いくらでもわたせる。file name 指定も有り得る。

 19th  Web 以外の場所からも ALC 利用。 url エンコード化要。 IE の第一 tab (ctrl+1) に、ALC の encode 化した URL を指定。JScript の encodeURI 関数で sv1 を encode 化したものを採用。
【IE は重いネ。しかも、 IE を終了させても Task manager の tab 「プロセス」には iexplorer の幽霊が残っていて、 cpu を食っているね。強制 term した。良く無い。】


110th  Web 以外の場所からも ALC 利用。 11st の変化。


☞ 1ALC   Web 以外の場所からも ALC 利用。 11st の変化。 ---- これが一番速いみたい。 コレ、かなり優秀。バリアフリー (Barrier free) になった気分。  私は、コレを「あるく」で単語登録した。 ac〜 の部分を、IE なら、acInternet Explorer 、Opera なら、acOpera に置換して下さい。

【補】上記マクロは、時々、何故か、{tab 10} が Chrome の現在タブから右へ10 個移動の意味になることがある、つまり誤動作(理屈不明)。この場合、clipboard には正しく選択語の image が保存されているので、単にもう一度、くまらボタンの「OK」を押し、リトライして下さい。
つまり、---- 15th の方が 100% 成功するので、良い。
---- しかし、こっちの方が短いので個人的には好き。
【最新】^c,acOpera,^1,^l,{tab 14},^v,~   に変わった、みたい。---- tuning して下さい。日によって異なる。
【最新】IE では使えなくなった。16th を使用して下さい。

1Google   Web 以外の場所から Google検索。,acChrome, をかます。 最終タブ (ctrl+9) のアドレスバー (ctrl+L) に、https://www.google.com/search?q=〜、を埋める。 Browser は、事前に立ち上げておいて下さい。 新規タブは、ctrl+t (^t)


1Google'   Web 以外の場所から Google検索。,acChrome, をかます。 新規タブ (ctrl+t) のアドレスバー (ctrl+L) に、?〜、を埋める。 Browser は、事前に立ち上げておいて下さい。 最終タブは、ctrl+9 (^9)

jj? を ? とすると、アドレスバーの日本語 IME が、「あ」のとき、「?」は「・」に化ける、なので、jj? にする必要がある。

1Google''   Web 以外の場所から Google検索。,acChrome, をかます。 新規タブ (ctrl+t) のアドレスバー に、?〜、を埋める。 Browser は、事前に立ち上げておいて下さい。 最終タブは、ctrl+9 (^9)  2021/12/12 OK

アドレスバーへの「?」 キーインは、ctrl+k, or, ctrl+e でも可。 尚、IE では、ctrl+k は、タブの複製。
アドレスバーのショートカット】ページ上の任意の場所から検索する Ctrl+K または Ctrl+E


2.  選択された語の前後を【】で挟む、編集。メモ帳等で使用。

文書内容の状況によっては、違う結果になることがある。指定語と同じ語句が以降にある場合、そっちの語を【】で囲んでしまう。一時置き場とした検索枠を ~ (確定)すると枠に記憶されるが、もし、検索語が他に実在する場合、その current pointer が次の位置へ飛ぶから。
22nd  選択された語の前後を【】で挟む、編集。メモ帳等で使用。

^c, ^v を拡張し、^c1, ^v1 という directive を作った。
^c1 は、^c ksendkeys を実行後、clipboard の控えを sv1 という内部変数名で save する。
^v1 は、sv1 の内容を clipboard に書き、それを ^v する。
^c1, と ^v1 で間で、clipboard が、つぶされても構わない。とした。

「^x,jj【】,{left},^v」 の方が better な環境もあるみたい。 ex. project2 編集画面での使用時等。

〒clip_b ここはアンカー名 clip_b です。

■ AP ←→ clipboard 方式比較

Tip. 下記の .vbs インターフェースを使用している。① は clipboard to vbs, ② は、vbs to clipboard コレ、重要。
① str1 = createobject("htmlfile").parentwindow.clipboarddata.getdata("text")
② WshShell.Run "cmd /c set/p < nul = """ & str1 & """ | clip", 0, true
----
 WshShell.Run "cmd /c echoux -n """〜\n〜...""" | clip", 0, true  'GNU 版 echo

VBScriptで改行を含む文字列をクリップボードに格納するにはどうやればいいですか?
ベストアンサー  uso8megaさん  2017/4/15 2:20
''ウチ[Win10]では以下で入りましたが。''
Set ws = CreateObject("WScript.Shell")
ws.Exec("clip").StdIn.Write "ABC" & vbNewLine & "XYZ"
Set ws = Nothing
c. My 感想: スバラシイ。 echo なんてそもそも必要ないんだ。
c. クマラ下では下記。
exe(WshShell.Exec("clip").StdIn.Write "ABC" & vbNewLine & "XYZ" --- ABC を gə:l にしたら発狂した。
cf. 2011-12-17  リファレンス、WshScriptExec オブジェクト、Status, StdOut, StdIn プロパティ
cf. クリップボードにテキストをコピーする + subprocess
cf. 012.04.3    VBScript to copy a string to the clipboard using the clip command
cf. 2018/11/30  batで複数行のテキストをクリップボードにコピー
cf. 2021/05/01  [VBScript] クリップボードとの文字データのやり取りを実現する by どーもボキです。
cf. 第3回 WScriptオブジェクトの詳細(1) (3/3 ページ)
cf. 第5回 WshShellオブジェクトの詳細(1) Execメソッドの使い方
---
ex. aa"bbb"ccc"ddd"| (最後は、改行なし)が 漢字のオバケ に文字化けする。ddd 奇数と関連。
慡戢扢挢捣搢摤簢 に化ける。file に入れて、 clip < file しても化けた。b+, c+, u+ 全滅。
--- 上記のボキ氏へは文字化けのコメントを入れておいた。 2022/01/04
"a1 cde fgh" は、ㅡ挠敤映桧  の5文字に化けます。
少なくとも、英1文字(つまり、a-z, A-Z)キーボード1文字(但し~|{}以外)space英3文字space英3文字、のパータンは文字化け発生。
a1 cde fgh = &#x61;&#x31;&#x20;&#x63;&#x64;&#x65;&#x20;&#x66;&#x67;&#x68;
ㅡ挠敤映桧 = &#x3161;&#x6320;&#x6564;&#x6620;&#x6867;
つまり、clip さんは、16進の 61 31 20 63 64 65 20 66 67 68 の1バイト10個を、2バイト5個とみなし、2バイト内の前後を入れ換えし、3161 6320 6564 6620 6867 として clipboard に入れた。
原因: dos の clip.exe のキマグレ bug ?。特殊パターンの文字列に対し unicode のバイト単位の前後並び換えをしています。
MS はe んk も化ける。space部は、!" もOK。ひらがな部は、は-ん、の範囲。u+ は化けない。c+, b+ は化ける。
私"ばz んk も可。もうメチャクチャ。
he ate her 敨愠整栠牥    he!ate!her 敨愡整校牥  we are bad  we are mad  MS はe mad  MS はz mad
くまら test: ^c1,b-,im0??,b+(sv1
---
 test は簡単、0test.txt と言う file を作り、文字列を入れておく(但し、改行ナシ、とすること)。dos prompt から、type 0test.txt | clip 、あるいは、clip < 0test.txt と叩く。clipboard 内容を ctrl+v で確認。 海外でも簡単に起こるはずなのに why?。
cf. Chromeの位置とサイズを指定して複数起動させる --window-size= 指定の有効化方法。user folder 指定要らしい、性能悪化なので止めた。
cf. Domo-Domo IE 不要。私の PC には、IE, Chrome, Operara があるが、 IE など無くても ①② は動く。
InternetExplorer.Application とか、 ActiveXObject とか、無縁で使える。
しかし、①とか②とか、おまじないですね。良くない。
② は、「echo 〜 | clip」では、「〜space改行」の image が clipboard に入る。space改行、が玉にキズで使えない。改行ナシ、余分な space ナシの解が、②。①は、複数行対応。②は、複数行は扱えない(Cr, Lf の code が混じっていると、何もセズ空振り。エラーも出ない。)。 尚、引数 0 = DOS command prompt 画面非表示。true = 完了待ちの同期。 ---- ②は、欠陥でした。 "△△△abc△△△" が "abc△△△" になる、つまり、頭に △ (= space, ␣) (全角 space も同じだった)があると、全部取れる。良く無い。
また、「echo 〜> temp.txt その後 clip < temp.txt」 と、「echo 〜 | clip」 とでは、結果が違う。 cf. どーでもえぐぜ (set /pが=に続く空白を全て無視してしまう --- winX ≠ win7 spec. 非互換だって。違うよ、bug でしょ。
「△〜」を「【△〜】」にしようとしたら、「【〜】」になっていた。使い物にならない。
しょうがないので、頭に space があるときは、echo の方を使う様にして、最後の空行を削除するようにした。しかし、DOS pronpt の画面が瞬間的に出るので、少し見苦しい。我慢して下さい。
cf. 【VBS】クリップボード操作について (2015/10/26)  cf2. Use clipboard from VBScript ▲6▼ (2012/05/15) を見て。 しかし、WriteLine では無く、 Write に直す。また、私のソースの「サブルーチン 2'」を見て。尚、WshShell.Exec の非 window 表示化は可能だが、すごい coding 量になり、止めた。しかし、�� (どうして文字化けするの?。Yahoo や Project2 では表示しているのに。&#xD83C;&#xDFB6;) の様な特殊な unicode があると、エラー:「プロシージャの呼び出し、または引数が不正です。」が発生し abort する。コード:800A0005、ソース: Microsoft VBScript 実行時エラー。→ボロ。何コレ。話にならない。WriteLine/ Write 両方共発生。
unicode を扱える様にする方法は不明。なので、変な unicode が混じっていないかを、Asc(string)/AscW(string) で事前 check しても良いが、そこまでやるのは本意では無い。なので、コレは、没方式と決定された。
echo 〜| clip なら、echo 〜| お色直し処理 AP |clip なる、AP 無いのか?。  それは、unix の echo -e option or \c 文字。
cf. コマンドプロンプトでファイルの空白行を除いて出力する
どっちみち、変な data が混じっていると文字化けするので、set/p= で、頭の space が消えるぐらい可愛い方だ。なので、set/p の="〜" の「〜」の先頭が「space(半角・全角)」だったら、「_(under bar)」に置換し、削除されるのを回避するとする。 space の _ への文字化けは、ご勘弁してもらう。とする。

②' WshShell.Run "cmd /c set/p=""" & str1 & """<nul| clip", 0, true
②' と ② は等価。本来の意味はコレ(環境変数の定義の応答画面)。prompt image (促進メッセージ)は、"〜" の「〜」部、変数名= の変数名は「空」、変数の値は、中身が空の file の NUL からリダイレクト。
②'' WshShell.Run "cmd /c echo . | set/p=""" & str1 & """|clip", 0, true
「<nul」 と、「echo . |」 は、等価。
①は、まとも(普通)。②はお粗末。①で退避した clipboard image を ②で clipboard へ戻すと、文字化けしている。
③ は、まとも(普通)。②など最初から捨てるべきです。時間を掛けるのは無駄です。---- 私の最終結論。

【dos prompt で、echo "girl gə:l"リターンキーをしたら、改行して、"girl gə:l" が表示。
echo "girl gə:l" | clip をリターンキーして、メモ帳に ctrl+v したら、"girl g?:l" 表示。オカシイのは、echo では無く、clip。 echo を UNIX 版にしても、文字化けは バカ clip に有るのだから、でも文字化けするのはアタリ前。の気がする。 on 2019/09 今頃、気付くのは、私もアホ。】
しかし、 D:\WK>echo gə:l > echo.txt の file 内容は、g?:l  だった。echo も悪い?  əをメモ帳に paste した後、 save しようとしたら、文字コードは、unicode だって。メモ帳 から警告された。

■2021/12/19 なんで今頃。
page code# 確認・変更 「chcp」 DOS コマンド
UTF-8 : chcp 65001(六万五千、一)
Shift jis : chcp 932 (規定値)
Dos 画面で「chcp 65001」を切ってから「echo "girl gə:l" | clip」 をリターンキーして、メモ帳に ctrl+v したら、"girl gə:l" 表示。だった。つまり、文字化けしなかった。 cf. バッチファイルの文字化け (メモ帳の文字コード) しかし、echoux.exe は、chcp 65001 環境に無縁であった。変化無かった。MS の echo の方が優秀。
なので、文字化けが発生したら、chcp 65001 環境で MS の echo〜 | clip を実施し、最後尾に余分に付く改行マークは、自動で {bs} し、削除させた。

■文字化けの無い AP(=vbs) to clipboard 転送方式 on 2019/09/23
exe( テスト image。
④ ^c1,exe(WshShell.Run "SendKeys.exe 0.05 10 """" ^c~":InputBox "prompt"{}"title"{}sv1{}xpos{}ypos

つまり、「vbs → clipboard」 を 「vbs inputbox 出力 → 別ジョブ(第三者)が ^c 実施。」で実現。input 枠の default 値が clipbord へ copy される。文字化け無し。行最大文字数 半角 2046 文字(全角 1023)。^c しか使っていないから、文字化けなんて無縁な世界。
cf. Is there maximum length of input to an InputBox? --- 私のマシンと結果が異なる。 manual に書いてない。prompt 最大文字数は書いてある。 default の文字数制限が書いてないのは、MS がアホだから。間抜けである。
c. 文字数制限は、MS が直せば変わる。また、clipboard への格納は、くまらでは、日本語入力の sendkeys 代替なので、全角で 1023 なら普通問題無いレベル。
cf. SendKeys.exe [= This utility is a tiny Microsoft© Windows© application of only one file, the SendKeys.exe [file size = 80 KB。もっと低機能で良いのだが無い、みたい。]
--- jj,j0( の内部実装を全てこれに変更する。2046を超えた場合は、内部分割し、外目には制限があることを隠蔽する。そもそも、転送で文字化けが起こること自身がオカシイ。al(lenb(sv1) にて確認。
〜��❤️ を ^c1 して【最新。^c1,IN>to where?,c+(sv1,】、j0(sv1 をメモ帳に書き出すと、「clip kp41 Now PowerShell Save その場所は その場所は赤道付近」 に化ける。信じられない。
^c1 直後、メモ帳へ ^v すると、表示は、〜�❤️ に近い。しかし、html の editable area に ^v すると、表紙は正しく〜��❤️ で乱れていない。jj, j0 を噛ますと clipboard が乱れる。お話にならない。どこかのゴミイメージである。data の残存である。 privacy の保護に反し、犯罪レベルである。許されない。
方式③は、即、廃止し、coding を inputbox, ^c 方式に書き直した。とする。 on 2019/09/23

c. 実は、一番初めは、inputbox を切る vbs の別 job を作って、job 起動の引数に sv1 のstring を指定して、起動し、その直後、自分が、sendkey(^c~)を切っていた。処理手順の流れとしてはこの方が素直であるが、 vbs の 別 job が vbs で大図体になるので、敬遠した。 vbs って重いと思う。

■もっと軽い低レベル SendKeys.exe (SendKeys 1.0.0.0) 発見。file size が 55 KB だったので、SendKeys55k.exe に名前変更。
exe( テスト image。
④' ^c1,exe(WshShell.Run "SendKeys55k.exe sk55k ^c{ENTER}":InputBox "prompt"{}"title"{}sv1{}xpos{}ypos
引数 sk55k は、sendkeys.exe の画面の windows 名指定。タイミングの不整合は無い模様。スゴク軽いの印象。
c. もっと言うならば、sendkeys.exe でも 「^c」と「{ENTER}」のみの機能を提供していれば十分である、誰か、この exe を作って欲しい。55 KB と有るが、1 KB で出来るカモ。ちなみに C:\Windows\System32\clip.exe の size は 26 KB だった。clip は、DOS prompt 画面 を access するから、一般の選択文字列の copy とは違う。?。clip は、他人非介入 mode。 ^c 方式は他人介入 mode。clip が馬鹿で、sendkeys が優秀なのは何故か?。作った人が馬鹿なんでしょ。多分。何故 MS は、 clip を作り直さないのだろう。いい迷惑です。
cf. WSLでクリップボードを共有する Posted Jan 31, 2018
cf. Download Sendkey.dll for Windows 10, 8.1, 8, 7, Vista and XP   win8 以上は、sendkeys55 は未サポート。 dll ってのがある、詳細不明。sendkey で、 sendkeys で無い。 last's s ナシ。非win7 以外での対応がどうなるのかは、良く見えない。

2019/09/29: ②や③ の " の見苦しいのは、一体何なの。
単純に、clipboard に /init/ と入れかったので、DOS prompt で、 echo /init/| clip と叩いたら、clipboard に「/init/改行」が入っていた。--- 単純。
vbs で、WshShell.Run "cmd /c echo """/init/""" | clip", 0, true
とやったら err.  最終的に、WshShell.Run "cmd /c echo /init/| clip", 0, true
でうまく行った。 ダブルクォートって、一体何なの?。 clip は、軽くて、高速だね。②の set ... つて、キチガイか。

msgbox の画面 message は、手動で ^c すると、header と footer のバナーでサンドイッチした text img が clipboard へ copy される【MS 隠し機能。 また、message 長の制限ナシ、みたい → ウソ、文字制限アリ】。dummy のメモ帳を起動して、 ^v して、 header と footer を削除して ^c して clipboard に戻すと、大元の data になる。
これを自動でやれば良いだけの話しに過ぎない。
vbs の InputBox, MsgBox, PopUp の文字数制限:
① InputBox の入力枠の最大長は、半角 2046 である。
② MsgBox の表示文字数の最大長も 半角 2046 である。超えた部分は捨てられて処理される。
③ PopUp は、表示文字数は無制限。MsgBox より後に出来た Wsh 拡張 method なので、文字数制限なし、Box 自動消滅タイマーもある。Box の ^c は MsgBox と同じで、バナー付 image が clipboard に格納される。
--- 従って、AP to clipboad の文字化けナシ転送は、InputBox, PopUp の画面表示と ^c 模擬があれば実現できる。また、面白いことに PopUp 画面は表示文字数が 約 3000以上※になると、^c の結果にはバナーが付いていない。 従って、バナーの有無をチェックし、もしあれば、削除すれば良い。
※ 切り換わりの条件を検証したが、気まぐれで、不明だった。
ex. PopUp 画面を第三者が sendkeys(^c) し、その結果の clipboad をチェックし、もし、付加バナーが付いていたら、メモ帳を起動し、 clipboard image をメモ帳に ^v し、バナーを削除し、^c して再度 clipboad へ戻す。
メモ帳の入力画面の検索入力枠を ^c/^v エリアに使うと、data HTML file を作成の先頭行しか保存しないので NG. 任意の web の url アドレス入力枠を ^c/^v エリアに使うと、全 data イメージを保存するが、改行が全て削除されて、一行化されている。なので、NG。
やはり、一番楽なのは、文字数制限があるが、後のお色直しが無い inputbox の入力枠方式が、優秀である。 echo | clip 方式 ①、msgbox & ^c ②は、後のお色直しが必要なので、方式的には、今一。
お色直し、の方式としては、一番楽なのは、html の textarea を持つ tab を用意し、そこへ ^v し、その後, texarea の data 補正を行い、最後は、^c で clipboard に戻す。そんな、お色直し専用の HTML file を作成する。
お色直し専用のメモ帳を用意するのも良い。
①も②も、MS が作り直せば、お色直しなんて発生しない。やる気が無いアホの MS に付き合うのは、賢くない。時間の無駄です。また、①は回避しても、文字化け問題が有るので、解としては完全に没。

c. 感覚的には、④の方が重たいハズなのに④'よりも速い様な気がする。様な、じゃ無い、完全に速い。 why?。なので、④を使っている。また、j0 発行直後の cpu は殆ど上がってていない。優秀。
c. ③方式は、文字化けが発生し得るが、通常は全く支障ない。なので、旧方式としていつでも検証可能な状態にしておく。ux なる内部変数が 1 なら、旧 echoux 使用の③ が走る、とする。 ux の既定値は 0。なので、=ux=0, =ux=1, で切り換え指定して下さい。③の方が inputbox のひゃっくりが無くて良い。性能は③④同等の感触。
c. 2019/10/01 ux=0 tuning 後 ④', 最速・cpu 最小。, ux=1 ③ echoux| clip , ux=2 ④ sendkeys 80KB, ux=3 別透明人間 inputbox vbs 引数渡し。
----
vbs 実 coding 例: 0/2 以外は、実装には苦労アリ。楽では無い。
ux = 0 then
WshShell.Run "SendKeys55k.exe sk55k ^c~ /s:50",0 : InputBox "",,str2,xpos,ypos
ux = 1 then
str2 = Replace(str1,vbCRLF,"\n") '文字コード表
str2 = Replace(str2, """","\042") ' 半角ダブルクォートの escape octal
str2 = Replace(str2,"(","\050") ' http://w3.kcua.ac.jp/~fujiwara/infosci/charcode.html
str2 = Replace(str2,")","\051") '"\51" とすると文字化けすることあり。(10%)が\5010%\21、で、\501は、A
str2 = Replace(str2,"*","\052") ' 2017/07/21 jj* が文字化け発覚。

WshShell.Run "cmd /c echoux -n """& str2 &""" | clip", 0, true
ux = 2 then
WshShell.Run "SendKeys.exe 0.05 10 """" ^c~" : InputBox "to clipboard","Kumara",str2,xpos,ypos
ux = 3 then
str2 = Replace(str2, """","\x22") ' 半角ダブルクォートの escape , AA_Kumara_input_invisible.vbs 側で戻し処理アリ。

WshShell.Run "AA_Kumara_input_invisible.vbs """ & str2 & """" , 0, false
Wscript.Sleep 300 : WshShell.SendKeys("^c") : Wscript.Sleep 300 : WshShell.SendKeys("~")
------
上の方式は全て、ボロ。解は次。
size < 2046 : ux = 0  inputbox banner ナシ
size > 2046 : ux = 4  msgbox
msgbox , ^c by 他人, (クリップボードに msgbox' image 格納された), memo 帳 open, activate メモ帳, ^v to memo 帳、banner 頭3行 ^{home},+{end},+{down},{del}、尻3行 削除 ^{end},+{home},+{up},{del}、 ^a, ^c memo 帳。 最終 img がクリツプボードに保存
つまり、hybrid 方式。通常時の小サイズのときは、速い。big size 時は重い。しかし、妥当。

2686 > size > 2046 : ux = 11  msgbox banner 付き  メモ帳で banner 削除
size > 2686 : ux = 10  popup banner ナシ
JavaScript の prompt() 関数の入力枠はサイズ制限ナシ。しかし、VBScript + JavaScript の .wfs の実装は、くまらは動作無理っぽい。AA_Kumara_prompt.wsf
c. clipboard 直加工 tool って無いのか?。−−しかし、上記のメモ帳利用システムは原理的には完璧で問題ナシ。タイトル名と入力枠とOKボタンの部品だけを持つ、世界最小 .exe を誰か作って下さい。私は、メモ帳の代わりに使用して、システムを組みます。メモ帳の AP は重すぎる。Powershell で form.exe を作れるの?
cf. InputBox.exe in Neat Dialog Boxes in Batch Files ダウンロードして確認してみた。実行時のメモリ size が、12.668 KB ---大きすぎる。改行付き選択エリアを ^c^v したら、改行が消えていた。 ----メモ帳より、劣る。
★ InputBox を自前で持ち、引数インターフェースで起動すると、引数の文章 image を InputBox に貼り付ける、そんな AP 無いかか。→ 有った。PoweShell だった。しかも、powershell は、InputBox を ^c する機能 copy() までもっていた。つまり、 DOS:echoux|clip 方式 対応に対し、 powershell| 引数渡し| TextBox, 全選択&copy()、方式、の流れを発見。実装は非常にシンプル、文字化けナシ、しかし、重い。
新規の c+[, c+( directive の中で ux="p" option として実装した。
j0[, j0( -- ux=0 基本系 軽くて、速さ普通。文字化けナシ。ImputBox, MsgBox. notepad 仲介
c+[, c+( -- ux<>"p" 軽くて速い。特殊文字文字化けアリ。--- 文字化けの有無の message が出る。 echoux| clip pipeline
C+[, C+( -- ux="p" 重くて、速い。文字化け多分ナイ。powershell 仲介
 【ux="p" mode の指定が煩雑なので、c+ の大文字C+ 指定に変更する】。
kb, kb( --- sendkeys 直接 英数字 mode。 英数字入力なら、最も速い。文字化けあり。 IME 事前確認要。clipboard 非介入。

■ハングル文字は、文字化けするか?。  https://en.wiktionary.org/wiki/民
Korean
Hanja 民 • (min) Eumhun: Sound (hangeul): (McCune–Reischauer: min, Yale: min) Name (hangeul): 백성 (revised: baekseong, McCune–Reischauer: paeksŏng, Yale: paykseng) (백성): the people, the populace, the nation
を ^c1, して、その後、c+(sv1, C+(sv1, j0(sv1 すると、c+( が、文字化けする。C+(, j0( は、文字化けしない。
girl /g:əl/ も、c+( は、文字化けしている。  → ハングルもコレも、DOS box は文字化けナシ(echo は文字化け犯人では無い)。犯人は clip さん。
ex. ^c1,al^c1 しました、カーソルをメモ帳無いに位置付けし、OK。,c+(sv1

c-( は、数字も文字化けしている。 =a_=0,al("asc(a_)= "&asc(a_),c-(a_,clip0,al(eval(a_=sv0),al("asc(sv0)= "&asc(sv0),@  eval(a_=sv0) の結果は false, しかし、asc(a_) は 48, asc(sv0) も 48。lenb(a_), lanb(sv0) は共に 2。 参る。 やはり、clip のせい?。
---
--- 2021/11 確認:「数字は文字化けしない。ハングルは文字化けする。」。なので、上記は、ウソっぽい。
なので、変数 x1 の連番付与等は、c+(x1, or c+[&x1, よりは、最初から j0(x1 の方が賢い。多分 →ウソ?。

「なみ〜」は、2種類ある。 &#x301C; 〜 は、echoux で文字化けする。 &#xFF5E; ~ の方は文字化けしない。&#x301C;は、「project2 での、なみ、の変換したもの」「メモ帳での、なみ、を変換したもの」は、&#xFF5E; 、だった。なので、project2 がボロイ。

■ DOS prompt 画面を InputBox や MsgBox 代わりにするのが、最も軽いしかも、標準 echo で十分。(cmd.exe 実行時 memory size=628 KB)。
^c1,,exe(sv1 = Replace(sv1{}vbCRLF{}"&echo.") : WshShell.Run "cmd /c echo "& sv1& " & pause & pause"   --- ⑨ 汎用解
C:\Users\User>echo aaa bbb & echo. vvv rrr
aaa bbb
 vvv rrr

C:\Users\User>
echo の第一引数が入力 string で、space が有るときは複数引数となるので、string 部はダブルクゥオート「"」で囲む、と、思い込んでいた。しかし、
exe(WshShell.Run "cmd /c echo これは test です。見えますか ə コレ。& pause"
の変数でない test をしているとき、上記は space があり、複数引数に分離しているのに、結果は一行で正しかった。 echo さんは、引数に space が混じっていたら... の配慮をしていない。よって、 string を"〜" する必要は無かった、のだ。
⑨の結果は、優秀で、画面上では、文字化けしていない、なので、clipboard へ画面 copy すると、文字化けしていない。clip を介すると化ける。
しかし、copy が、手操作、「マウス右クリック、全選択。リターンキー」または「Alt+space, e(=edit), s(=select)。リターンキー」で、クリップボードの copy される。 MsgBox の^c 操作に似ている。
しかし、vbs の sendkeys 機能で自動化出来ない。 why? pause が中断して、画面が消えてしまう。sendkeys("% es~") が、失敗する。
最悪、手で copy しろ。sendkeys("% es~") は、一般 windiw Box では、正しく動作している。 pause が、任意のキーボート押しで、走ってしまうみたい。

How to send Alt+space to console window?  "%{ }" "% " "%( )"  asked Aug 11 '11 at 9:18 [2011?]
------
【小結論】DOS 画面もそうだが、powershell 画面も、% es は、手動は効くが sendkey は、無視された。% は無視。es 部は動作。なので、これは、 MS がガードしているとしか思えない。MS でも、他の task では、「% 」の sendkey は効く。
DOS 画面は、見にくいが(分解能)、MsgBox 画面代わりになる。ことが、証明された。
c. 「WshShell.Run "cmd /c echo 〜 & pause 」は、危険。この「&」は、echo 文字列だと user が思っていても、システムは、「&」を、一行複数コマンドの、連結子と解釈している。また、「〜 > kkk」という文章を zm で、DOS 黒板に表示しようとしたら、 pause message のみが出た。つまり、システムは、「>」の文字をチェックしており、リダイレクトの check をしている。つまり、string data は実は check されている。ダブルクォートで挟んだ「"〜 > kkk"」は、文章として pass するか?ソウみたい、DOS Box に表示された。MsgBox に対し、DosBox なる単語がイメージとしては良い。
Bacth ファイル 〜.bat も、WshShell.Run "cmd /c コマンド1 & コマンド2 & .... 、とすれば file 作成せずに、実行できる。 危険である。〜 vbcrlf 〜 vbcrlf 〜 の連鎖は、echo "〜" &echo. &echo "〜"... とスべき。 "は、() の入れ子マークが、一種類で間に合わせたものである。左右

c. ⑨ を base にした、くまら directive zm で 「〜 > kkk」を選択し、zm したら、DosBox 画面は、、pause 対応のみで、msg は消えた。kkk という file ができていた。 怖い。「"〜> kkk"」としたら、 redirect は発生せす。 zm の引数を"" で囲むようにしたが、結果は変わらず。⑨の方がシンプルで、同じ結果。 why?。わざわざ " で囲むという複雑なことをしたのに、無視されている。
そもそも、⑨が動くのが不思議。&echo. でごまかして動くのも不思議。
zm は、「"^c"」を選択すると、DosBox も正しく「"^c"」と表示。しかし「^c」のみを選択すると「c」のみ、^ がきえる。 why?。 zm は、結果がオカシイノデ、オモチャとしては最高。DosBox は、選択&リターンで^c 出来るので、MsgBox の^c 操作と同様or better. しかし、sendkeys 出来ないのが勿体ない。
c. ⑨ original をあらためて、zm, "" 対応版を zmm と名付けて、両方残すことにした。 zm は、multi command 発生機なので、下記も動く。
test & time ---- time は DOS command. date も可。
■ 2021/12/15 Window prompt box の echo image は、sendkey で clipboard に copy 出来た。
ex. zmm,sl500,+{home}~   ---「% 」を使わなくても pause に対する ~ で window box は、close した。
cf. コマンドプロンプトを閉じる
cf. echo(文字列の出力)  escape 必要文字 < ^<, > ^>, | ^|, & ^&, ^ ^^, % %%
cf. コマンド プロンプト (Cmd. exe) コマンドライン文字列の制限 by [アーティクル] 2021/09/23
   --- 文字列の最大長は 8191 文字。 充分である。


3.  典型的 iteration 操作 cf. テキストをコピー →別のところ(メモ帳やExcel)に持っていってペースト

補: al の 2 文字ディレクティブは、 alert の略。内部では、Popup を切っている。
【例外】手動の ctrl+c は、SendKeys("^c") で模擬できると考えていたが、条件は分からないが、ダメなケースがある。例えば、HTML Project2 という ceditor の下画面の html 結果表示画面(ビュー画面)の文字列は、選択して、マクロの ^c をしても空振りとなる。不思議。why ?。手動で ^c すると copy されているのに。選択位置を確定するダイヤログを click した途端に、focus が移動している模様。Activate をしてfocus を阻止しようとしても効果ナシ。---- 誰か、理由を教えて欲しい。
^c より、^a の方が simple で、確認 test は ^a の方が楽。Project2 の下画面は、^a 出来ない。 追伸: Project2 の下画面下を、マクロで ^a すると、上半分画面が全選択される。面白い。
Project2 の下半分は ^c マクロが空振りするが、手動の ctrl+c は機能する。なので、手動で ~c し、残りはマクロとすると実質機能する。従ってマクロが効かないケースは少ないと思う。手動の ctrl+c が効かない場合は当然ダメだが。

32nd   --‐誤動作するので、没。--- 原因判明。

解説:「スタックメモ帳.txt」というメモ帳を事前に作って開いておく。ctrl+c した image をメモ帳のお尻に追加して行く。---- は区切り行 image。
補: ac なる 2 文字ディレクティブは、 AppActivation の略。
---- が効いていないタイミングが有るね。。~----~ を ~,jj----,~ にしたら直った。

---- オカシイ、頭の ^c, が効いていない。 why? しょうがないので、手動で ctrl+c をして、このマクロを呼ぶと、結果的には目的は叶う。 ^c が空振りしている理由は何故?。--- 誰か、教えて。
^c 以外は動作している。Activiate すると、他の window での読み書きは無視されている様に見える。使い物にならない。inactiviate も無いので使い物にならない。

al待ち(選択完したら OK して),^c,acスタックメモ帳,^{end},~----~,^v
として、「待ち」の alert 表示中に、別 window 内選択をして OK と返事すると、^c は効いた。
al を入れないと、タスクバーのWSH アイコンは無く background 状態なので、そのとき他の window 内を選択状態にしても WSH は認識していない様だ。だから alert の待ちをかまして、 WSH を foreground 状態にし、その下で select する必要がある、みたい。
Alert box が display 中央に出るので、わきにズラすのがかったるい。でもそうしないと、 select で画面裏に隠れるので、再表示させるのに click 数が多くなりメンドウ。
Bug じゃないのコレ。Activate を切ると、他 window を active に出来ない。sleep でも良い? 多分駄目。sleep 中の新規select のみが効くので、 sleep は同期合わせとしては駄目。
WSH がタスクバーにある時に window の切り換えが認識される。ac のメッセージ表示中に 他の window を触ったら、そっちが active とみなされ、^v が働いて、data 破壊されてしまった。 ---- 操作を誤ると危険。
33rd   --- Good!   AppActivate のカラクリが分かった。使える。

【注意】: AppActivate の window title 名は、空白が無い部分のみ。空白部を含めると、該当 window が存在しても、永久に一致しない。

☞ 34th    Activate 残存処理を制御部に組み込んだ、ので、alert 処理配慮を不要、とした。前記 3, 3', 3'' の動きはもう昔と少し違うので注意の程。

【解説】: マクロのサイクルの切れ目で、AppActivate を切ったか否かを自動認識し、手動 Activate 変更のタイミングを見える様にした。Popup メッセージ挿入(InputBox では、WSH アイコンが消えたままで NG. why?)
また、メモ帳の日本語 IME が「あ」のときは、"----" が "ほほほほ" に文字化けする。~ も無視される。難しい。
i.e. タスクバーに WSH アイコンが有る時のみ window の focus/select の状態が認識される。(WSH アイコンがタスクバーに無いとき、 window を触っても focus 変更としては、無視されている。)

【最新ステータス】
^c,acスタックメモ帳,^{end},~,----,~,^v
で、この「スタックメモ帳」の日本語 fep 状態を「A」にしておくのが、性能的には最も良い。また、^v での文字化けも起きない。∵ DOS clip command 非介入。
cf. Clp2txts 【クリップボードのデータをテキストファイルに落とす 逆も可能(コンソールアプリ)】
試しに down load して、見たが、clp2txts.exe 57.0 KB, txt2clps.exe 59.0 KB 、何でこんなに大きいの?。
  wscript.exe は、138 KB なので、ま、イイカ。

操作性を良くするために「くまらボタン」のボタンも Popup box 化した。マクロを変更したいときは通常の InputBox の入力枠を示す、チャンポン方式。マウスの click 数が最適化された。
しかし、時々(10% 位?)、----- の区切り行が、空白行になる様になった。 degrade ?。 原因不明。 why? 不思議。

★注意事項: jj〜 使用時は、クリップボードの直前の data を一時的に退避するので、このclip board size が大きいと、get clip が失敗する。
エラーメッセージ:"data size is too big > 8191: now Len = "& 実際のサイズ"
なので、この場合は、 jj は使えない。英数字のみを挿入してください。
あるいは、sv(日本語),clip0r の clipboard 非退避の機能を使い、jj---- を最後に挿入する形で代行。ただし、clipboard は潰される。
。 cf. あっどくりっぷ (文字列の“採集”に便利。連続コピーした文字列を、連結した状態でまとめて貼り付けられる)--- 機能的には似ている。

★ 2バイトコードの特殊文字の uni-code data を sendkeys ^c すると、文字化けするそうな、ex. ❤️❤️ミハイル大皇帝❤️❤️ をクマラぼたんの ^c,^v すると、文字化けしているときがある。手動でCTRL+C とクマラの ^v は、文字化けしていない?。


35th   browser 内 data の蓄積。AppActivate なんて全く不要、バカチョンだ。

【解説】:メモ帳の代わりに browser のタブ1のアドレスバーの枠を固定の一時置き場として使う。|#| は、区切りマークのつもり。--- 難しくもなんとも無い。非常に易しい。
(タブ1 のアドレスバーの内容を全選択 & del (リターンキーを叩いてはイケナイ)し、開始して。)
お勉強:
al選択したら OK 押して,^c,^1,^l,{end},|#|,^v
と、当初していたが、 |#| の区切りを漢字にしたいときは、jj|#| とすると、clipboard がつぶされるので、次の ^v の結果が化ける。ので、上の 35th の様に直した。 ---- logic 分かる?(教育的)。
--- しかし、最新は jj で clipboard はつぶさないので、この問題はもう無い。
4.   ininputbox at pos (xpos,ypos) の 2 文字ディレクティブ

補:メモ帳でマウスのドラッグ操作(移動)が出来ない、の代行。
「^x,al,^v」 の al directive のダイヤログだと display 中央に表示され、マウスの移動先での位置確定の click で、ダイヤログが全て裏に隠れてしまい、 OK ボタンも無い。再表示の為にタスクバーの WSH アイコンを click する必要がある。 InputBox ダイヤログだと OK ボタン部分は display 端にあるので、隠れない。

5.   in, x1 ディレクティブの応用。

ex. 質問「サンドイッチの両側(左右同一) image を教えて?」に対し、「<test>」と input 枠に入力すると、選択部の「〜」 image は、「<test>〜<test>」に変わる。
後ろの 「<test>」 は、「/」を自分で入れて、「</test>」とする等、加工して下さい。
コレは、22 の【】のサンドイッチの汎用化でもある、上の 5. の文字列を「sand」や「さんど」、の名で 日本語 FEP に単語登録して、「【】〜【】」として、前の】、と後の【、 を後で削除するのも良いカモ。

52   in, x1 ディレクティブの応用。ex2. html に特化していいなら、下記とする。


53   in, x1 ディレクティブの応用。ex2. html に特化していいなら、下記とする。jj(〜&〜&...) という jj の連結 directive を作った。



 url のアドレス image を copy, Chrome に focus, 新規 tab 作成,アドレスバーを選択、中身削除、clipboard paste、リターンキーを押す。




test; 下記文字列、クリックすると clipboard に copy される。選択不要。-- IE ok, Chrome NG(clipboardData is not defined)
<span style="background-color:mistyrose" onclick=" if(clipboardData.setData('text',this.innerText)){ alert('コピーしました') } ; ">〜</span> 資料 ©あるてみす.jp  今は [クリップボードへのアクセスを許可しますか?] と言う警告がでます。--- 出ないけど。
111,2222,333333

変数の値を clipboad に copy -- IE ok, Chrome NG(clipboardData is not defined)
<button onclick="str='this.innerText'; if(clipboardData.setData('text',str)){ alert('コピーしました') } ; ">〜</button>

  一種の Loop 処理の例。Chrome 全tab URL copy

先頭で loop_ck のカウンタを確認・変更。既定値は 100 directive サイクル毎のシャックリ。tab 数は 100 個無いので、 100 で十分。 OKで良い。^9 最終 tab に飛ぶ、^t 右隣にダミーの新規 tab 作成 & そこへ飛ぶ。^l,jj[*** アドレス枠に「***」と入れる。次に、^1 で tab1 に飛ぶ。 1回目は、wk の init の wk- を実行する。2回目以降は、wk- の次の ^l から開始(iff ディレクティブから 7 個前の位置)。url が 「***」 の文字を含むと directive 処理は終了する。 ^{tab} は、次の tab への切り換え移動。毎回切り替え完了を「done」messageで同期をとる。最終結果は @@,以前を削除し※、新規メモ帳を開き、OK 実行。 つまり、jj(wk の paste で得ることが出来る。
aldone は、以前は sl1000 だったが、システムが hungup した。非常に危険。完了を待ち合わせずに強引に進むと恐ろしいことが発生する模様。~c1 対応か、cripboard へ/から null を...でストール。コワイ。
※ メモ帳への印字は、先頭に、「j0(wk,@,」 を挿入が良い。
c. 「***」は、stopper の印の文字列である、好きな文字列で良い。また、,jj[***, は、英数字のみなので ,***, でも良い。***~ (ここで、チルト ~ は、リターンキー対応の sendkey)は Google が介入し、検索結果 url に化かすので駄目である。

cf. Chromeで開いているタブのURLを一括コピー Copy All Urls で遊ぼう!!  7 Chrome 用。IE, Opera では hotkey が異なる。やりたい人は作って。なお、opra の右隣 tab への移動の ctrl+F6 は、bug なのか効かなかった。
■メモ帳の「# url アドレス」の一覧表からの Chrome tab 復元操作。
(0) gemini を on にするので、 zz を メモ帳に退避。
次に、=(1)gemini, を実行し、クマラを multi-task mode (= 別 hand mode) にする。
① メモ帳の task で、url アドレスの image を選択し、マクロ「^c,acChrome,sl500,^t,^v,~,ac無題 - メモ帳,@,」実行。の手操作を反復する。^t は、新規 tab 作成。 「無題半角space-半角apaceメモ帳」のスペル。
このメモ帳は、後で「Chro_me_tablist.txt」と名付けて一時保存しておくとする。Chrome_tablist.txt としたら、 Chrome を含むので, web と勘違いされた。なので、名前変えた。
つまり、マクロは 「^c,acChrome,sl500,^t,^v,~,acChrome_tablist.txt - メモ帳,@,」

いちいち選択手操作なんて疲れる。選択範囲を、一発、全 url 展開。一次元を配列要素 matx(i) にし、それを url 枠に挿入。[右側のタブを閉じる]も最初に使用。
^c1,eval(e9(matx{}split(sv1{}vbcrlf& "|#| ")),~,x1-,acChrome,sl1000,^t,j0[matx(x1),x1+,if(x1>UBound(matx))-5,@

^c1,=gemini=1,=matx=split(sv1{}vbcrlf& "|#| "),,x1-,acChrome,sl1000,^t,j0(matx(x1),~,x1+,if(x1>UBound(matx))-6,@
②終わったら、くまらを落とし、再起動。 gemini ナシ mode に戻す。 旧マクロをメモ帳から戻す。
(ac 発行元job は、殺さないと ac 相手方、つまり、Chrome or メモ帳が何かの timing でストールする模様。)

★★ 緊急時に活躍!Chromeで表示中のタブをまとめてブックマークに一括保存する方法

「Shift」+「Ctrl」+「D」キーを押すことで、現在表示中のタブを一発でブックマークに保存できる。

  くまらボタン1回 click で 選択エリア ctrl+c 模擬

くまらボタンOK ボタンを押す。直後指定秒数(上の例は 8 sec)以内に、copy 対象エリアを選択状態にして、待つ。指定時間後、くまらが ^c の sendkey 実施。直後 2秒間「copy 済」の完了の popup message を出し、2秒後自然消滅する。
「sl100,^c,alcopy 済2@」で、エリア選択してから、くまらボタン押しでも、多くのケースは動く。しかし、対象画面が その AP のサブ画面だと、くまらボタンを押した時、エリアの選択状態が解除され ctrl+c が空振りになることあり。 ex. project2 のプレビュー内の文字の copy, IE の url アドレス ヘッダ内容の copy 等。 project2 の preview が出来ないのはキツイ。keyboard の ctrl+c, や、mouse right click & copy select. の旧方式で代替していた。が、8 のマクロだと ok である。
マウス移動、OK クリック、選択エリア選択。

  focus 下の部分で 右 click

ショートカット shift + F10, または、「キーボードの右 Ctrl ボタン左横のプリントと矢印の絵」のボタン。
14

from
Windowsパソコンのキーボードで覚えると便利な特殊キーを15個紹介します!

〜搭載されていないキーボードも多いですが、「アプリケーションキー」もあると便利です。

「アプリケーションキー」は右クリックで出るショートカットメニューを呼び出せるのです。 このボタン、自動化のためにはかなり便利なボタン。〜
例えば、<a href="url add.">〜</a> や <a target="_blank" href="url add.">〜</a> と言う、あるサイトの page</a> への Link 付き文字列の表示画面があったとき、このサイトを開かなくとも、その source を download し source 収集できる。「右クリックして、『名前を付けてリンク先を保存(K)』 Save target as ... (k)」つまり、くまらボタン的には、その <a> tag 付き文字列へアクセスして、「+{f10},k,」を sendkeys すれば良い。
(この <a href=""> tag への右クリックは、も「新しいタブで開く (T)」の選択等でお馴染みな有名な 右 click である。)
これは、 「URL HTML ソース 一括ダウンロード」の自動化に利用できる。
cf. リモートファイルをダウンロードするWindowsのコマンドbitsadmin(Linuxのwgetのようなやつ)
この AP や Irvineフリー版 (HTTP/HTTPS/FTPのダウンロードマネージャ) はアホで、普通じゃない url アドレスには bug で機能しない。 web の手動操作では download 可なのに。
たとえば、 https://textream.yahoo.co.jp/message/1835208/ffckdc8la4n5af8bb/1?offset=15800&rv=1&back=1 という url アドレスを入力として指定すると、bitsadmin, Irvine 共にアボードまたは誤動作して使い物にならない。
これは、http ではなく、 https, であることと、文字列の中に、「&」があると未対応なのか誤動作する。
vbs のくまらボタンと html の java script を同時に使うと、url 一覧から、一括 down load が簡単に実装できる。
<a href="url add.">Link 表示</a>
のダイナミックな変更は、innerHTML 機能を使えば容易である。
  link url   ---- ①
------
もっとシンプルなのは、メモ帳で、<a href="url">url</a> の文字列のリンクアドレス call html 文の一覧をつくり、 <html><body> と </body></html> でサンドイッチし、web で開く。そして、キーボーの「tab キー」で link 部を渡り歩く。
そして、くまらボタンは、次の様な感じで良い。セーブのファイル名は、とりあえず、連番で良い。1.txt, 2.txt, 3.txt, ...
x1-,{tab},+{f10},k,jj(x1&.txt),~,alOne has don.,x1+,iff100,alEND?,skip-8   ---- ②
かなり、強力である。al 部を sl2000 等に変更すると、完全に勝手にやってくれる。iff の 100 file の stopper の例
一番始めは、手でやり、保存 folder 等を指定してから、二個目からの file を上記マクロでやると良い。取扱は、注意しないと、良く分からない folder へセーブ氏マットの弊害もある。一般的に、くまらボタン、vbs の自動操作は、使用環境を間違えると、色々な所を壊すので少し危険である。
cf. jQueryで右クリックや中クリック(wheelクリック)する方法
cf. コンテキストメニューを表示する
VB.NET   'コンテキストメニューを表示する座標   Dim p As System.Drawing.Point = System.Windows.Forms.Cursor.Position
Control.ContextMenuStrip プロパティ

■ url 一覧指定で ソース一括ダウンロードtool (Microsoft bitsadmin, or free ware Irvine 相当) 汎用 tool

java script:

<script type="text/javascript">
<!--  
/* 指定文字列を、input 枠に入れ、選択し、 clip board へ copy */
	  function to_clip(f_name) {
	   in_box = document.getElementById("in");
	   in_box.value = f_name;
	   in_box.select();
	   document.execCommand("copy");
	   return true;
	}
// -->
</script>
<input id="in" type="text">

<br>
<a target="_blank" href="url_1" onContextMenu="to_clip(this.innerText)">file_1</a>, 
<a target="_blank" href="url_2" onContextMenu="to_clip(this.innerText)">file_2</a>, 
〜
<a target="_blank" href="dummy url" onContextMenu="to_clip(this.innerText)">///</a>, 

VB script: (Chrome の例)
Set WshShell=Wscript.CreateObject("Wscript.Shell")

While true      ' while 文の先頭

WshShell.SendKeys("{tab}")
WshShell.SendKeys("+{f10}")    'right click 模擬
Wscript.Sleep 500               ' 500 msec sleep
WshShell.SendKeys("k")         ' メニューから「名前を付けて保存」を選択。 一文字の英字なので、jjk 不要。
Wscript.Sleep 100     
sendkeys="^c"  ' clip board から file 名入手 ∵ 既に clip board に入っている。ので
str = createobject("htmlfile").parentwindow.clipboarddata.getdata("text")
if str = "/// then
Set WshShell = Nothing
WScript.Quit

else
WshShell.SendKeys("^v")  ' file 名格納
WshShell.SendKeys("~")   ' リターンキー
Wscript.Sleep 1000

Wend

----
or vb script 部分は、くまらボタンだともっと簡単。
{tab},+{f10},sl500,^c1,x1=sv1,ifm//////,alend,k,^v1,~,sl1000,skip-11
c. sleep 時間は大きい方が安全だが、時間がかかる。 tuning 要。 ///// は、最後の次のダミー url の保存 file 名。

onContextMenu="alert(this.innerText)"; の debug; タグでサンドイッチされた text 値は innerText で get
file_1
c. this.innerText の結果が、状況で異なる。困る。 this の解釈が異なるみたい。
<a target="_blank" href="url_1" onclick="alert(this.innerText)">file_1</a>,
alert 結果は、「file_1」で good.
<a target="_blank" href="javascript:alert(this.innerText);" onContextMenu="alert(this.innerText)">file_3</a>, onContextMenu= 同様 OK.
の alert 結果は、「undefined」オカシイ。alert(this) の結果は、「[object]」で誤りでは無い。
id があれば、マウス操作も無く、htmlタグのDOM要素 から、入手出来るが、id なんて通常 <a> Tag には付けない。onclick= や onContextMenu= のときは、this は、その Tag の object を指している。
href=javascript: のときの this は、一体何なのか。
this.document.documentElement.innerText ①と、this.innerText は、 click して object 範囲を限定している場合、どちらの表現でも良いみたい。でも、①は長すぎる、機能的にも、本末転倒だろう。

10    (保存先 file 名, copy 元 url アドレス) のペアの html 一覧表を、順番に {tab} しながら処理する。

html で作った url 一覧を、くまらボタンが操作する。
<input value="保存 file_1 名" ><a target="abc" href="URL_1 名" >Link add.</a>
<input value="保存 file_2 名" ><a target="abc" href="URL_2 名" >Link add.</a>

<input value="///" ><a target="abc" href="end" >終了マーク</a>

「tab1」「tab2」, 「tab1」「tab2」, ....., 「///」ストッパー。 <input> TAG に{tab}すると、保存ファイル名が全選択状態、なので、^c で copyする。次に、右隣<a> TAG に {tab} し、+{f10} し、web 保存のメニューを表示し、 k を叩き、コピーした保存 file 名を枠に埋める。^v。保存ボタンを押す。 ~。 コレを反復ループする。
c. シンプルだが十分である。馬鹿ソフトの、Irvine や bitsadmin より優秀である。これら、ソフトは下記 url に対し誤動作あるいはエラーとなり、動作しなかった。
https://textream.yahoo.co.jp/message/1835208/ffckdc8la4n5af8bb/1?offset=15800&rv=1&back=1
なので、しょうがないので、上記くまらボタンを自作するハメになった。https の s が関与。 お尻の引数の中に「&」の文字があると誤動作 ??。

11    先頭が★の印の行で Loop 処理終了判定。終了は「キャンセル」ボタン。

old:
ダミーの {right},{left} が必要である。これが無いと、選択後のカーソル位置が乱れる。理由不明。
cf. キーボード操作 選択解除のキーボード操作を捜していたら、コレ発見。100 倍速い。

12    先頭が★の印の行で Loop 処理終了判定。

x0 にカウント が入っている。メモ帳は、折返しが無い様に広くすること。

12'    VBS eval 関数利用

改行コードの数カウント。eval 関数で汎用動的演算。ev, ifev 変数を新設。x1はカウンター。InStr 関数の第1引数は、検索開始位置。ev をこの位置カウンターで使用。
→ ループ処理の制御を directive で行っているため、全てを 1 eval directive 化で実施するよりは、性能がかなり悪いと思う。loop 制御を eval 下で実現する方策が必要。
loop 処理を eval の Do while 〜 Loop で対応したもの。速い。1000 倍位 fast. directive の切り替えは、毎回全 directive 一覧を検索するので、性能は、悪い。directive 総舐めの hit 率を上げるために LRU 管理すると多分恐ろしく早くなる。History 管理。∵ 毎回同じ directive を使用するので。
^c1,x1-,eval(e9(pos_{}0):whllp[true{1}e9(pos_{}InStr(pos_+1{}sv1{}vbcrlf)){1}pos_ = 0{1}e9(x1{}x1+1)]:msgbox("x1 = " & x1),

c. 性能差が有り過ぎるので、x+, skip, eval の3つの directive 位置を くまら の coding の前に移動してみる。 copy を前におく。cut する必要は無い。∵ elseif は、成立すると、その場で以後の全 elseif チェックが終わるから。
12' new     VBS eval Do While Loop 構造利用   2019/09/07


12' new 2     VBS eval jmp offset 構造利用   2019/09/08


cf. javascript 正規表現 tester: Regular Expression Tester

12''    文字列式 利用


123    文字列式 利用  「/」置換の例。


124    replace 応用 改行 code 1文字の 0文字化。 & 引き算。最終行の改行マークは、選択範囲外にあるので、カウンターを +1 している。自動折返し表示のところには改行マークはついていない。


12補足 メモ帳活用「選択範囲の行数」: メモ帳に copy & paste し、書式/折り返し off, 表示/ステータスバー on。指定。最下行に、キャレットの 行・列番号が 表示される。 キーボードボタン CTRL+{END} で、最終行へ飛ぶ。 行番号確認。
折り返しの off は、自動化は無理、 menu/書式/の alt+o 、 menu/表示/ステータスバー %v で、 ,%o,sl5000,%v,sl5000,@   くまらを9 秒止める、の様な人間判断操作介入必要。
選択範囲 の copy を excel へ paste して行数を確認するのと似ている。

125    matrix の要素数。行が1要素。

c. =mat_=split(sv1,vbCrLf), のママにしておいたら、 compile err --- 疲れる!!。
c. HTML の <table> の 表をこれでカウントしたら、td の枠の数、改行の様で有った。html の tableの行数は、ソース code の方を選択し、 "<tr" で split する必要が有る。=mat_="",@ もしておいて。
al(len(vbcrLf), の結果は何か?。  --- 2。al(lenb(vbcrLf) は、 4。

best -- r0,al(ubound(split(w0{}vbcr))

13    コレ、目検だとかなり疲れる。つまり、<td>〜<td> のサンドイッチ内に</td> が無い。

z(0)は .td.〜.td.〜img, evは 2番目の .td. offset, 。InStr(2,〜) でoffset 2 から検索開始指示。
InStrRev(str,検索文字列,開始offset)

13'    logic 見直し。x0は、 元小文字str, <td>〜<td> の.td. の1st pos をev, 2nd. pos をz(0) で loop.

短くなると思ったが、ほぼ同じでした。logic 的には 13 の方が賢い。InStrRev の逆向きサーチが、13 では、.td.止まり、13' では、もっと前まで調べに行ってしまう。どちらが良いかは何とも言えない。

regexp  cf. repl directive
13''   (JavaScript 正規表現) 作るのにすごく時間が掛かったが、結果はシンプル。

当初、<td((?!\/td).)*<td としていた(問題なく動作していた)、が、やはり、本来の姿の上の形に直した。
cf. Regular Expressions ? TextMate 1.x Manual TextMate for macOS
cf. icohttps://regexr.com/ ← この tool 優秀。manual も優秀。
c. lookaround の lookahead は、指定範囲の後ろでも良い。"<td(.(?!\/td))*<td" ,,  ∵. を規制しているので、前後どっちに記述しても良い。.の対象結果に対して、? 状態チェックの意。 javascript では、?<=  や ?<! の左側チェックは、Chrome の java script? のみ実装。lookahead = 予見する。将来とは右隣方向を指す。
cf. ■Copyright c 2013 www.debuggex.com  with flow chart Debuggex(可視化&チェック)
cf. ■Rubular
cf. 初心者歓迎!手と目で覚える正規表現入門・その4(最終回)「中級者テクニックをマスターしよう」
cf. あなたが正規表現の中級者か判別する10問テスト (文字列処理の必須知識)
cf. 欲張りなマッチと控え目なマッチ(最小量指定子)
cf. 正規表現の最短マッチ(.*?)を知らなくて今更躓(つまず)いた話
cf. 手を動かしながら覚える正規表現<基礎入門編>
cf. 正規表現 オンライン教材 (大谷大学 人文情報学科)
c. project2 は正規表現お粗末。\d は NG. [0-9] 使用。 (〜) は、\1 参照出来ない。 $1 参照(replace 内での使用。 in javascript)も、\r\n 検索は可。挿入文字\r\n 置換指定、可。各、一行以内のみ対象。つまり、あまり動かない。 tool に thml ソースを copy し、置換処理して、また project2 に戻すのが速い。+? エラー mess. 発生。つまり、? 機能使えない。
cf. 利用可能な正規表現 (サクラエディタ Ver 1.6.7.0)
cf. サルにもわかる正規表現入門  ← Good.
cf. 置換要素と置換パターン 置換での group 参照は、$番号。 \番号 と書いてあるマもある。良くない。
cf. 正規表現リファレンス(CoffeeScript)   --- まとも。
cf. とほほの正規表現入門
cf. Visual Studio上でコードの検索&置換 での正規表現の利用について
先読み (positive lookahead) (?=subexpression)  否定先読み (negative lookahead) (?! subexpression)  後読み (positive lookbehind) (?<=subexpression)  否定後読み (negative lookbehind) (?!<subexpression)
  |--- Use Regular Expressions in Visual Studio
  |--- .NET Framework の正規表現言語 - クイック リファレンス   USA ver. : Regular Expression Language - Quick Reference
■メモ
• * = 0 以上、 + = 1 以上、? = 1 以下。ただし、.*? は最小解の提示。bk f@3ek ? の意味は 「1 以下」ではナイ。 「as small as」の意。ex. s="123114561" p="1.*1" の結果は、1 match "123114561" , p="1.*?1" の結果は、2 matches "1231" と "14561"。
13"' </td> がありません確認
<td を■、</td を★として、総数をカウント。 web メモ帳で、ペアがイコールで無い範囲を探す。2分法、使用。

14    奇数目は copy, 偶数目は paste のボタン

loop 内での user mess box は、popup (常に、画面中央) より input の方が、ボタンが隠れないので向いている。Project2 の 下の view 画面の copy は、選択状態が乱れ、copy されない。やはり、XCVform の方が優秀。 case by case.   ---- IN directive を新設した。
 XCVform よりも操作性が良い。
pool#kopi# として登録した。2021/04/26

15    +{NumpadEnter}  NumpadEnter::RButton (AutoHotKey Script) 指定

選択をfrom をクリック、to を長押しクリックで実装。drag ナシ。 drag が チャタリングする、イライラなし対応。click 2 回で選択操作可能。Case-Sensitive です。
cf. VB6やVBAで「長押し」処理を実装する 2014-08-25
cf. Send keys reference   {NUMPADENTER} を使用しても NG は変わらず。
スクリプト: D:\Vista_D_drive\Etymology\5_tree\AA_Kumara_new.vbs
行: 761 ----- WshShell.SendKeys(str)
文字: 1
エラー: プロシージャの呼び出し、または引数が不正です。
コード: 800A0005
ソース: Microsoft VBScript 実行時エラー
cf. How do I use WScript.Shell SendKeys to send Number Pad key strokes? ,, [lShift 42] [PadEnter 156] ---コノ人、バカ。
--- IN)chr(42)&chr(156), --- is 「*・」
Key Codes , ASCII 文字セット (0 〜 127) , ASCII 文字セット (128 〜 255)
----  オカシイ
So to send "123", you would need to do:
objWsh.SendKeys chr(79) & chr(80) & chr(81)
--- chr(79) & chr(80) & chr(81)  は、"OPQ" である
----
pad0 chr(52) = "R", asc("R") = 82 → 造りが悪すぎて、テンキーエリアは実質 sendkeys サポート外。考えるのは無駄。
「F9::+LButton」AHK で F9 ボタンを専用使用に指定したら動いた。sendkeys マクロも ,{F9}, で動いた。MS のバカ相手に一日潰した。要するに bug です。sendkey 操作なしの {NumpadEnter} 環境の操作性も悪くない。と判明。web の画面によって、drag が途切れると途切れないが違う。何故だ。操作性の選択肢は、+, padEnter, F9 の3ツもある。+ f は click と同時押し必要。他は、マウスを手放し、単独押し。一長一短アリ。マウス離しに抵抗感は無い。やはり当初の {NumpadEnter} が、右下角で美しい。カモ。
→ 微調整した。 F9 はマウスの手を完全手放し、&、マウスポインターが無管理状態でブラブラで、良くない、F2 (編集)ボタンに変更した。マウスの手はポインター保持のままで、ボタン単独押し。単独押しなので shift より優秀。NumpadEnter でも右手はそのまま、左手クロスオーバー操作で可能。
★日本語の AHK で、日本語キーボードの「無変換」ボタンを調べたら、「vk1Dsc07B 無変換キー」だって、
vk1Dsc07B::+LButton を登録してみる。→ 成功して、動いている。しかも、「無変換」のボタン位置は最高の場所(space キーの左)。
--- 操作性、かなり良い。また、drag よりもかなり速い。from の click 直後に「無変換」を押すと、shift+arrow の感覚に近くて、 very goo!
★AHK で、右click+左click = shift+左click 、が可能かやってみる。選択が drag なしマウスで可能。
cf. AutoHotkeyでキーボードをカスタマイズする②
RButton & LButton::Send,+LButton --- (a) → 動作していない。駄目みたい。また、今までの drag がさらに効かなくなった。コメント化して、AHK 最立ち上げしたら drag の動作は正常に戻った。
(Send, は、キーストロークやマウスクリックを発生させる。)
--→ 上記 (a) は logic miss 臭い。左辺は、実在ボタンでなければならない。左辺に、非実在の左 click が有るので、常に成立しない。右辺は、模擬ボタン。右&中、中&右、のどちらが操作性が良いかは、右&中、多分。実右を押した時点で、左を模擬しようとするが、押したままなので、未完状態。この基で、中を押すので、(a)' が成立し、競合も起きない。 (?)
RButton & MButton::Send,+LButton --- (a)'   Send, も悪さ ??
RButton & MButton::+LButton --- (a)'' ----- err 発生し、AHK 自体が abort。(a)'に戻し、さらに全体をコメント化。
[(a)'' err の原因は、右辺の指定が悪い。  どこがイケナイのか不明。 ]
cf. コンビネーションキー を見ると、下記は OK かも。
MButton & RButton::Send,+RButton  -----  選択処理されていない。しかし、弊害もナシ。
MButton & RButton::MsgBox,Send,+RButton  ----- 正常動作している。「Send,+RButton」のMsgBox が出た。
−−−web page, メモ帳、共に、正しい MsgBox が出た。  --- ◎
MButton & RButton::Send,+LButton  -----  選択処理されていない。しかし、弊害もナシ。
If InputChar = x
Send,!{F4}
If InputChar = s
Send,^s
  というsend, のがある。{f4} なのか。
MButton & RButton::Send,+{RButton} -- web page は OK, メモ帳では動作していない。 why? -- ◆
MButton & RButton::Send,{vk1Dsc07B} --- 動作していない。web page/ メモ帳共。 why?
MButton & RButton::+LButton    ---- Invalid Hotkey err で、AHK 初期 err
RButton & MButton::Send,+{RButton}   ---- drag が効かなくなった。
~RButton & MButton::Send,+{RButton} --- 動作していない。web page/ メモ帳共。 why?
~MButton & RButton::Send,+{RButton} --- 動作していない。web page/ メモ帳共。 why?
RButton & MButton::Send,{F2} ------  動作セズ。web page/ メモ帳共。しかも 実右ボタンが効かず。最悪。
MButton & RButton::Send,{click ,M,Up}{click ,R,Up}{F2} ---- 少なくとも {F2} 無視されている。話にならない。
--- オカシイ。logic 及び、手操作テストは ok なのに、AHK の sendkeys だと何故うまく行かないの。
マウスボタンは完全切り替えしているので、物理ボタン名ではいけないのかもしれない。すると、解は、次。
MButton & RButton::Send,{click ,L,Up}{click ,R,Up}{F2}
MButton & RButton::Send,{click ,L,Up}{click ,R,Up}{click ,M,Up}{F2}

--- 実行後、最後に右クリツク menu が出るので、消すために、「は2』の前に、{Esc} を挿入したら消える様に変わった。
メモ帳で動作確認したら、選択部の頭に「F2」の文字が挿入されていた。つまり{F2}が化けた。send {F2} が、 send F2 と動作した。--- file を見たら、{Esc}F2} と、ミス入力 していた。{Ecs}ttt とワザとしたら、ttt がclick last 位置に挿入された。つまり、ttt は効いている。send {F2} はリマップ前の {F2} ボタン機能そのものが動作した様に見える。
MButton & RButton::Send,{click ,L,Up}{click ,R,Up}{click ,M,Up}{Esc}+{LButton}

判明しました。最終解は、下記です。は、半分当たり。オシイ。少し違う。Send 指定ボタンは、リマップ前のオリジナル機能ボタン名。
MButton & RButton::Send,+{LButton} -- web page/ メモ帳 共 OK 。 ----- ◎
c. 選択後、コピペ nenu 付は、下記。
MButton & RButton::Send,+{LButton}{RButton}

RButton::
If GetKeyState("MButton") ; 物理のつもり、論理だと RButton どっち?
;--- 効いてない LButton にしたら、drag が効かなくなった。
Send {F2}
else
;LButton --- err オカシイ
Send {LButton} ; err なし、LButton 効いている。
Return



結局、◆に設定した。半分効いているので、今までよりは良い為。 MsgBox の ◎ の結果を加味すると、Send が効いていない。
cf. Macアプリ「PopClip」で、コピペやWeb検索を簡単に  価格: \840(記事公開時)

PopClip: One of My Favorite Menubar Apps (YouTube) に下記を投稿しておいた。 on 2019/08/27
my PopCorn for Windows.
I realize this subset function by AutoHotKey tool by below 1-line macro sample. Please try !! it's free.
MButton & RButton::Send,+{LButton}{RButton}
(Please consider this meaning. cf. https://www.autohotkey.com/docs/Hotkeys.htm#combo)

Tip: I'd like below, too.
MButton & f::Send, ^c^f^v{Enter} ; "find function in page" : this executes under data were selected.
--- PopClip は、普通に選択しただけで menu が出るのは問題である。例えば、選択部を加工する tool を使用するとき、勝手に menu を出すのは邪魔になる。失礼である。
【経験則】 words 全体選択の場合、左余白を click, 右余白に位置づけ、中+右ボタン を実行。で、右位置 word から離れているために、nemu は word にかぶらない。drag より疲れない。words 選択が楽しい。menu をけすには {Esc} ボタン。
cf. 通常マウスでコピー,ペースト,戻るなどができるようにするマクロ 似たのが沢山載っていた。
cf. マウスのドラッグを検知してCOPY   ---- drag 終了時 menu の右 click の logic. タイマーチェックの loop 必要

16    init で 300 が埋まっていたとして、それを ^f し、上書きして行く。

初めは、x1-364,^f,~,sl200,{Esc},j0[x1,,al???,x1+,if(x1 < 600),skip-9 で動作観察。
省力化抜群である。 vbs は非常に有効である。

17-1    by {r} ボタン。 遅い

17-2    by 一行総置換。 高速(為五郎 的 !!!)、処理は、おおげさ。
行末尾の1文字が選択外の場合もあるが、支障ナシ。

old:: {home},+{end},^c1,+{home},{del},j0[Left(sv1{}10)&"挿入イメージ"&Mid(sv1{}11),

18 キャレットのランダム移動
表を1次元配列 t(i) に変換。各要素は、各行対応。各行戦闘3文字は、行番号 iii を付加。行 n 文字位置 p のキャレットは、t(n) の 3+p の文字に mapping.
+{home} の選択をして、それを ^c1 し、sv1 へ data 格納。Left(sv1,3) が iii, len(sv1)-3 が n, .value は、Right(sv1)

19    検索語、下(or 上)方向、を事前に指定して、2・3回手操作で無事前確認して、その後実施。 コレはイロハのイ です。

{r},{l} は選択状態を解除し、右に位置づけ(+- zero)。{l},{r}は左に位置づけ (-+ zero)。矢印キーは、操作により適切なものに置き換えて、
ex1. ^f,~,{esc},{del},    検索語を見つけ、削除。矢印操作をしないと、選択状態のまま。~,~, とすると「次を検索(s)」ボタン2回押し。
ex2. ^f,~,{esc},{end}   検索後が見つかった行の、行末へ移動。
ex3. ^f,~,{esc},{r},{l},j0[挿入します,    検索した語の右隣に「挿入します」の文字を挿入。 {r}{l} は、誤動作する、タイミグ不正。
c. ^f,~,{esc} の中には slxxx を付けなくて正しく動作するとの経験則。従って、^f,~,{esc},〜,^f,~,{esc} のloop で、タイミングがズレて結果の値がおかしいときは、〜内に slxxx を入れて tunibg が必要。
^^f数字 なる専用 directive を作った。用心して、^f,sl数字,~,{esc}, を base にしている。数字を略すと 500 ms。

20  HTML <table> の <td> 枠に、列名挿入。
    alias を使用しないと、マクロサイズが半角 500 文字を超え、4列位しか出来ない。

c. アルタイ諸語・語彙対応比較表 を変更するのに使用したサンプル。

21    スゴイ basic な know how。 イロハのイ です。


22 IME の「A」状態判定。 ---- 【方法1】kb〜,{esc}, して、キャレット位置が同じなら、「A」で無い。同じだったら、半角化して、retry。
【方法2】 KB(" ", を実行。「あ」mode 下は &#x3000;、「A」mode 下は、&#x20; となる。つまり、bk 要求が来た時 現在 ime mode は、ダミーの「半角 space」をsendkeys して、それを select し、^x で clipboard に入れ、さらに内容を確認すれば判定できる。 dummy write, +{left},^x, get clipboard,
23    「半角/全角」ボタン押し 模擬。未サポート環境アリ。メモ帳、project2 は OK.

sl200 必須。無いと、タイミングがズレて失敗する。   --- win10 下では sl200 不要だった。同じ、駄目押し半角化の「カタカナ」ボタン and「半角」ボタンより、バルーンが1個なので速い感じがする。しかし、「あ」状態の時は、バルーンが3つ出た。なので、 total どっとも言えない。
l = ime 閉じる(あ→A)。 o = ime 開く(A→あ)。
24    各、行頭単語を変数 moji, moji_e でサンドイッチ連続処理。環境が合わなかったら、ok に「キャンセル」応答。の sample

("今、moji{}\nmoji_e")u_mess
下記を各々 moji, moji_e と 次 macro で定義   ^c,(sv1)moji,    ^c,(sv1)moji_e,
<span style="color:red;"><b>
</b></span>
最新は、3d ディレクティブ、p3d 変数にて正式対応されている。
ex1. [【^】]p3d,3d    ex2. [^]p3d,3d


〒sample_end ここはアンカー名 = sample_end です。 ^^^^^^ stopper mark

GNU UnxUtils

https://sourceforge.net/projects/unxutils/  : Port of the most important GNU utilities to Windows
から GNU shellutils の最新版 [UnxUtils.zip, 3.20 MB (3,365,638 バイト)] を down load し、usr\local\wbin 配下の echo.exe [7.50 KB (7,680 バイト) -- スバラシイ ]を所望の directory へ copy し、さらに、 echoux.exe に rename した。
echoux --version
GNU shellutils 1.9.4

echoux --help
Usage: echoux [OPTION]... [STRING]...

  -n              do not output the trailing newline
  -e              (unused)
  -E              disable interpolation of some sequences in STRINGs
      --help      display this help and exit (should be alone)
      --version   output version information and exit (should be alone)

Without -E, the following sequences are recognized and interpolated:

  \NNN   the character whose ASCII code is NNN (octal)
  \\     backslash
  \a     alert (BEL)
  \b     backspace
  \c     suppress trailing newline
  \f     form feed
  \n     new line
  \r     carriage return
  \t     horizontal tab
  \v     vertical tab
--------------
この echoux で clipboard への copy は統一管理可能。
 echoux -n "〜\n〜..." | clip

スッキリカンカン。
message は、「"」で囲む。改行文字は「\n」。
「〜」の message 長の文字数制限もナシ。data 内「"」「(」「)」等の特殊文字は、\NNN (8進数)と置換し escape 可能。
ex. 「"」= "\42", 「(」= "\50", 「)」= "\51"

■ bug 発見@2017/07/21 echoux -n "*" | clip  を実行すると、* が clipboard 内で文字化けしている。 「*」="\52" ASCII code と escape させて回避した。 [jj* で文字化け bug で発覚。]
c. 2019/09/30 echoux "*"|clip は、文字化け、しかし echo *|clip は、文字化けしない。echoux *|clip 文字化け、echoux "xyz*"|clip 文字化けしない。 echoux xyz*"|clip は、xyz*|clip とエコー。clip 効かない。 echo というよりは、echoux の bug みたい。

--- 当初、MS DOS の echo, set/p の使用を固執したが、結局使い物にならなかった。Vector の echo の freeware も全チェックしたが、皆、お粗末。
勝手にお尻に space を付加、勝手に先頭の space をサプレス、など無い。
一行複数 dos コマンド (command1&command2&...) なんてことも知らなくて良い。
日本の Vector の echo freeware or BATUTY は、どれも、echo 〜、の、〜 の message 長は max 約 120 バイトだった。何なのこのバカ spec. (実用性ナシ)
cf. WSH で文字化けさせずに SendKeys で日本語を貼り付ける (2016-07-10) --- この人、どの echo を使用しているの?
■ txt file i/o:
VBScript でテキストファイルを読み込む・書き出す
VBScript で UTF-8 のテキストファイルを読み込む・書き出す(このやり方だと「BOM 付き UTF-8」になる)
ADODB.Stream で BOM なし UTF-8 のテキストファイルを書き出す

WSHでIEを使わずにクリップボードを操作   DynaCall や Win32API

【vbs の debug 方法】
vbs の実動作は簡単に検証できる。メモ帳や project2 で、.vbs file を記述し、実行するだけ。3行のオマジナイ行。
Set WshShell=Wscript.CreateObject("Wscript.Shell")
実 coding.

Set WshShell = Nothing
WScript.Quit


【vbs 一括コメントアウト】
無い。なので、一括永久 skip にする。
IF False THEN    ' 一括コメントアウト、スキップ

END IF
or
WHILE false    ' 永久 skip

WEND
or
Do while false    ' 永久 skip

Loop

【vbs掲示板】
1. WSH Lab.掲示板
つちや さん 2004年 01月 24日 09時 34分 42秒
■インクルード
EvalでなくてExecuteでしたね。バージョンはわかりませんが、

Msg = "あいうえお!"
Msg2 = "かきくけこ!"
Execute "MsgBox Msg:MsgBox Msg2"
Execute "MsgBox Msg" & vbNewLine & "MsgBox Msg2"

とできるので、ひょっとしたら他のファイルの内容をよみとって、そのまま実行することも可能かも。
2. VBSの家
cf. Execute Statement

Executes one or more specified statements.

Execute statement
Collapse imageArguments
The required statement argument is a string expression containing one or more statements for execution. Include multiple statements in the statement argument, using colons or embedded line breaks to separate them.

Collapse imageRemarks
In VBScript, x = y can be interpreted two ways. The first is as an assignment statement, where the value of y is assigned to x. The second interpretation is as an expression that tests if x and y have the same value. If they do, result is True; if they are not, result is False. The Execute statement always uses the first interpretation, whereas the Eval method always uses the second.

NoteNote
In MicrosoftR JScriptR, no confusion exists between assignment and comparison, because the assignment operator (=) is different from the comparison operator(==).

The context in which the Execute statement is invoked determines what objects and variables are available to the code being run. In-scope objects and variables are available to code running in an Execute statement. However, it is important to understand that if you execute code that creates a procedure, that procedure does not inherit the scope of the procedure in which it occurred.

Like any procedure, the new procedure's scope is global, and it inherits everything in the global scope. Unlike any other procedure, its context is not global scope, so it can only be executed in the context of the procedure where the Execute statement occurred. However, if the same Execute statement is invoked outside of a procedure (i.e., in global scope), not only does it inherit everything in global scope, but it can also be called from anywhere, since its context is global. The following example illustrates this behavior:

CopyCode imageCopy Code
---
Dim X ' Declare X in global scope.
X = "Global" ' Assign global X a value.
Sub Proc1 ' Declare procedure.
Dim X ' Declare X in local scope.
X = "Local" ' Assign local X a value.
' The Execute statement here creates a
' procedure that, when invoked, prints X.
' It print the global X because Proc2
' inherits everything in global scope.
Execute "Sub Proc2: Print X: End Sub"
Print Eval("X") ' Print local X.
Proc2 ' Invoke Proc2 in Proc1's scope.
End Sub
Proc2 ' This line causes an error since
' Proc2 is unavailable outside Proc1.
Proc1 ' Invoke Proc1.
Execute "Sub Proc2: Print X: End Sub"
Proc2 ' This invocation succeeds because Proc2
' is now available globally.
The following example shows how the Execute statement can be rewritten so you don't have to enclose the entire procedure in the quotation marks:

CopyCode imageCopy Code
---
S = "Sub Proc2" & vbCrLf
S = S & " Print X" & vbCrLf
S = S & "End Sub"
Execute S
---
Collapse imageRequirements
Version 5

Collapse imageSee Also
Reference
Eval Function
ExecuteGlobal Statement

たった1行でブラウザ全体をメモ帳にする方法

data:text/html, <html contenteditable>
 

urlバーに上記の1行を貼付けるだけで、お手軽なメモ帳になる技です。

新しくブラウザを開いて、メモ帳代わりに使えます。

メモの保存は、一応ページを別名で保存すれば出来るけど、メモしたものを編集するのは、めんどうくさいので、本当に一瞬メモ帳に使う場合にのみ重宝 (ちょうほう)します。

お気に入り (ブックマーク)に入れて使うという手もあります。

cf. One line browser notepad
cf. @ringCurrent posted at 2018-08-26 【HTML】ブラウザでのメモ帳機能
Java Script メモ
■ " と' の代用
ex. <button onclick='aa="test0";alert(aa);alert("test");'>

つまり、onclick="〜" は、onclick='〜' でも行ける。

html code の value 化。ex. 黄色ハイライトの削除
string1.replace('','')
ex. <button onclick='aa="test
;";alert(aa);bb=aa.replace("","");alert(bb);'>
ex. <button onclick='aa="test</span>;";alert(aa);bb=aa.replace("","");alert(bb);'>

★ ◆ string.slice(from [, to])   to のマイナス指定が面白い。
string の from〜to - 1 文字目(最初の文字を 0 番目とする)の文字列を返します。負の値を指定すると後ろから数える点が substring() と異なります。to を省略すると残りのすべてを返します。
cf. sliceメソッド
Right(str,6) は、str.slice(-6)。 strt は尻から-6, to は、残り全て。+/- で、left/right 不要にした。--- 頭、イイ。 ★ elseif javascript には if, else, は有るが、 elseif は、無い。

AndroidのWebViewでHTMLソースを取得する
さて、Androidに標準であるWebViewクラスを使用してウェブアクセスを行うアプリを作成していて、ちょっと困ったことがありました。WebViewクラスを使用してウェブにアクセスするのはとても簡単なのですが、アクセスしているウェブページのHTMLソースを取得することが出来ないのです。タイトルとかURLとかは取得できるんですけどね。そこで、HTMLソースを取得する方法を考えてみました。

cf. HTMLソース表示ツール (SEOツール)  --page の iframe に表示。
cf. 指定URLのHTMLソースを表示します --- page 自身を source image に置換。
cf. (75) 指定URLのWEBページのHTMLソースコードを表示
cf. PythonでWebページのHTML要素からテキストやリンクURLを取得する方法
cf. Python

innerHTML 原稿用紙(おもちゃ エディター) id="h_src"   

原稿結果表示 id="h_view"

Video 作成
MP3と1枚の画像(PNG/JPG)をMP4動画に変換 OneImageVideo 紹介 web
https://www.oneimagevideo.com/
MP4Tools 分割された動画を連結する
× http://www.mp4tools.com/ja/join
失敗 oki_anime.mp4 .. oki_by_OneImage.mp4 : 同じ動画から分割されたファイルを指定して下さい
× 「Free Video Joiner」動画結合ソフト 紹介 web。 offline Win tool. DL and install 必要。
mp4を結合できるソフトとして試用、確かに簡単にできるが品質保持といいながら、2回試したが640*480Mp4が320*240Mp4に画素ダウンしてしまう。設定の部分も見当たらず、評価3とした。
× UniteMovie
ダウンロードした圧縮ファイル(unitemovie.zip)を解凍し、unitemovie.exe から起動できます。 ※ 本ソフトはインストール不要で利用できます。
UniteMovieで画質や音質の異なる動画を結合することは出来ません。 結合出来たとしても、プレイヤーでうまく再生されません。あしからずご了承ください。
→ コレ発生し、先頭 file のみ表示した。   ---- 枠サイズが異なると、動作しない、見たい。

WSH の SendKeys で日本語を入力する [WSH][programming] 2006-08-04 Fri
WSH の SendKeys でユーザのキー入力をエミュレートできます。
しかし、WSH の SendKeys は日本語に対応していないので、日本語を指定しても文字化けしてしまいます。

解決を調べたところ VB.NET では日本語に対応していることが分かりました。
しかも、VB.NET の SendKeys の COM オブジェクトを使いやすく DLL にまとめてくれている Clipboard.VB.NET を発見しました。

これを使えば WSH からも日本語入力を簡単にエミュレートできます。

まず、インストール。
マニュアル通りに Clipboard.DLL を C:\Windows\System32 にコピーし、regasm Clipboard.DLL を実行して登録します。
regasm が見つからないと言われ困りましたが、C:\WINDOWS\Microsoft.NET\Framework\<バージョン> に入っていました。
コマンドプロンプトから以下を実行します。

    > cd C:\WINDOWS\Microsoft.NET\Framework\<バージョン>
    > RegAsm.exe Clipboard.dll
    


サンプル (JScript)

var WshShell = WScript.CreateObject ("WScript.Shell");

WshShell.Run("NotePad.EXE");
while (!WshShell.AppActivate("メモ帳")) {
  WScript.Sleep(100);
}

// WSH の SendKeys は文字化けする
WshShell.SendKeys("文字化けします。\n");

// Clipboard.VB.NET の SendKeys は文字化けしない
var SendKeysEx = WScript.CreateObject("Clipboard.Clipboard");
SendKeysEx.SendKeys("文字化けしません。\n");

PowerShellでSendKeysを使ってみた updated at 2018-09-20
※1 日本特有のキー(半角/全角、変換)やWindowsロゴキー、アプリケーションキーは利用できない。

Generate From Text 1文字 favicon 作成サイト ---- 優秀

VBScriptでプログラミングの基礎を学ぼう14【エラー処理】 ココ

2021.02.19 2020.02.25   ITエンジニアの備忘録的技術ブログ【仮】版

On Error Resume Next

If Err.Number <> 0 Then
msgbox "エラーが発生しました。"
End If

〒vocab   Top へ戻る
数字のみ (ev への数字格納), @broken, zz, azz(番号), zz_ago2, @big, bigzoom, @zop, zopreg, bzop, azop, 3d, p3d, p0 〜 p9, 3tタグ名, emode, u_mess, man, @? or @@, @last [or @,last], @save退避 image, zoom, z1, nop〜 [先頭3文字が nop] , al文字列 or al文字列@数字@, al(文字列式, al[〜&〜&...., alias/置換前文字列/置換後文字列/ ( or dbalias/〜/〜/), kbキーボード英数字文字列 or kb( or kb[式 or KB/Kb/kB〜, kb#キーボード英数字文字列, s55arg引数イメージ, s80arg引数イメージ, s_Jarg引数イメージ, gemini_t引数イメージ or gemini_f引数イメージ, j2e or jmis, jj, jj[〜&〜&...., j0[〜&〜&...., j-[ or j-(, j0(文字列式, d+[〜&〜&...., d+(文字列式, ac文字列, ac#PID番号, acPID, achs, sl, rn, ex, ifm, iff, iff (又は、 ifm)文字列&失敗オフセットの数字, if(条件)失敗オフセット, ifeval(VBscript 評価式文字列)失敗offset数字 or if(?)失敗offset数字, sk+数字 or sk-数字, sk@識別子, ty1@識別子, ify1(条件式, sk#, x1-, or, x1+, x1-初期値数字, x1+加算数字, in, in0 or im0, im文字列, im(文字列式, ii(文字列式, ii)文字列式, ii文字列, menu.jメッセージ or menu.j(メッセージ変数, nnメッセージ or nn(メッセージ変数, ch1文字列, ed(変数名, =変数定義式・代入式, =(vbs 数式)代入先変数名, または、 (vbs 数式)代入先変数名, [文字列式]代入先変数名, exe(VBscript一版式, or exE(〜, ^c1,^c一桁数字, ^x1, cp or xp, ^v1, ^v1+, ^^f待ち時間(ms), ^^ff待ち時間(ms), ^^fv待ち時間(ms), ^^fw, clip-, or c-, clip-[〜&〜&.... or c-[式, clip-(文字列式 or c-(式, b- or b-[ or b-( or b+[ or b+(, u- or u-[ or u-( or u+[ or u+(, cget(変数名, cput(文字列式, clen, +^v, clip0, clip1文字, clip0r (又は 0r), c-/+ ファミリー, C-/+ ファミリー, [〜&〜&....]sv0, clip0rv (又は 0rv), wk- or wk-初期文字列, or, wk+, or wk|, or wk|区切文字列, mslc, msrc, msmc, msxy, alreg, {l},{r},{u},{d}, {l 回数},{r 回数},{u 回数},{d 回数} --- 「+,^,% の前置も可」, {lin} or {line}, db, dosc, dosk, dosc_f or dosc_t「d.」DOSコマンド群image, zm or zmm, loopck, pool, pool#アンカー名#, repl(srイメージ{}pイメージ{}igフラグ, s/パターン/置換/, s// or s//フラグ, s//r, r//w , test(strイメージ{}pイメージ, regu(strイメージ{}pイメージ{}igフラグ k_wd(〜 も可、変数 k_wd とペア運用, w数字, w(変数名, r数字/スリープms, r(変数名/スリープms, ww, ?, tmode,

bug メモ

• 2021/12/07: nop を頭に付けても、無視されない case がある。 nop{r},nop{l},nop{d},nop{u} は sendkeys される。実 write 発生。nop{right}等は正しく skip されている。
「elseif Left(str,3) = "nop" Then ' do nothing」の所に来ていない。
「elseif InStr(".{l}.{r}.{u}.{d}.", "." & Right(str,3) & ".") > 0 and InStr("^+%{",Left(str,1)) > 0 then
' ex. str is "{l}" just」が犯人。「and InStr("^+%{",Left(str,1)) > 0 」を付加した。
• 0_zop.html 修正。^c の単に 10 連続を、1回毎に 格納 mess. を出して止めるようにした。また、loop 100 回に増やした。directive 1個ごとの chk なので、CapsLock 方式よりは優秀のハズ。