[VisualStudio2017] C# でTextBoxに連続で大量の文字列を追加すると遅くなるので、高速化を考える。みんなほんとに早くなってる?^^;

2018/03/21 追記:表示更新用のDoEventが重かったり、処理によってはファイルに書き出して、読み出した方が早いです(^◇^;
BMP1600万ピクセルのカラーをテキストボックスに書き出しなど、メモリ内でやる方が馬鹿ですがヘ(゚∀゚ヘ)アヒャ

「実際に思いつく限り試して早いやつで!」
おま環でした。
—-

結論:ゲームプログラミングでは当たり前のダブルバッファ的な手法を使います。
(キャッシュから外れるような大きいデータアクセスをしていると、他のサイトでたくさん書かれている方法ではあまり早くならなかったので・・・)

フォームに配置したTextBoxにテキストを追加するのは非常に遅いのは文字表示プログラム作ったことがある人なら誰でも分かることですが、一般的な高速化技法で書かれているサイトを見ても効率は大して変わらなかったんじゃないかなと思います(^◇^;
テキストが追加されると描画されちゃいますもんね^^;

SelectIndexとかAppendTextでも全然話にならない重い処理(データ量よりも、TextBoxへの処理回数)。ただ追加するだけでも128×128のピクセル情報を書き出すと気が遠くなります
。軽く1万6000回超えますものねヘ(゚∀゚ヘ)アヒャ
今のPCなら1秒に1行程度の出力ならどんな方法でも体感できる遅延とか負荷はないと思います。

私も通常のログ出力はこちらを使わせていただいてます。

私がC#でログをテキストボックスに書き出す時に使用していたコード
http://upa-pc.blogspot.jp/2014/04/c.html

かといって、別の管理方法導入するほど真面目なお金の発生するプロジェクトでもデバッグできる時間もないのが日曜プログラミングですものね・・・

そこで、フォームに置かず、でもTextBox的な処理はやりたいそういうときに、内部でもう一つ用意して内部TextBoxに処理を行い結果を貼り付ける。
これで「大抵」はなんとかなります(^◇^;

仮想とか、仮とか、テンポラリとかハイドとかまぁ概念は一緒です。
proc()
{
TextBox textBoxTemp = new TextBox();
ループ
{
textBoxTemp.Text += “追加する文字列”;
}
textBoxDisp.text = textBoxTemp.Text;
}
(イメージ)

株トレードも一緒です。どこでも使えば良いって物ではないですが、知ってる人は当たり前のように使う方法ですね。

—-
キャッシュから外れる大きいデータにアクセスしてますm(__)m
シンプルに後ろに文字列くっつけるだけです。128x128回、処理を呼び出してます。
このプロセス以外は同じ処理です。
約16,700行、700KBくらいのデータ生成です。
普段ならファイルに書き出す処理ですね^^;

それをクリップボ・・・こことは関係ないか(^◇^;
デバッグモードなので、実速度は不明です。

速度計測してみる。
1回目:(TimeStamp:00:00:06.0519016)
2回目:(TimeStamp:00:00:06.1209471)
3回目:(TimeStamp:00:00:06.0617603)

Releasec:(TimeStamp:00:00:06.1811334)

private void OutputDataLine(string logText)
{
textBoxLog.Text += logText + “\r\n”;
}
—-
・普段使い用。表示行削ったりいじるときに便利だよね…
1回目:(TimeStamp:00:02:58.5319648)
2回目:(TimeStamp:00:03:04.6596441)
3回目:(TimeStamp:00:03:06.4340553)

Release:(TimeStamp:00:02:54.6543528)
private void OutputDataLine(string logText)
{
textBoxLog.Select(textBoxGen.Text.Length, 0);
textBoxLog.SelectionStart = textBoxLog.Text.Length;
textBoxLog.SelectionLength = 0;
textBoxLog.SelectedText = logText + “\r\n”;
}
—-
・後ろに追加するだけ
1回目:(TimeStamp:00:01:21.4883463)
2回目:(TimeStamp:00:01:27.0448043)
3回目:(TimeStamp:00:01:24.1339280)

Release:(TimeStamp:00:01:18.2318539)
private void OutputDataLine(string logText)
{
textBoxLog.AppendText(logText + “\r\n”);
}

とりあえず、原因は不明。
目標レスポンス(銀行のATMとか)3秒とは行かない物の我慢できる範囲に向上したので、高速化の時間はまた別の時に。

これだけなら長い文字列作ってテキストに追加など、回数減らした方がもっと早くなると思う。
しかし遅いと言われてる処理の方が早かったり、最適化が進んだのか他の呼び出し処理の存在とか何だろうね^^;
6秒と80秒とか話にならない何かが!w

深追いはしないのです。引退して気楽なおっさんは!’`,、(´▽`) ‘`,、

いやぁこの先・・・数百万行の書き出し処理テストが…il||li _| ̄|● il||li

(改名)「Minecraft Image Converter」と、名前を変えて特化することにしてみた。

作り直すのもなんなんで、プロジェクト名変更で・・・(毎度てきとー^^;)
うっかり名称変更するとはまります、
namespaceは右クリックから名称変更で。

Visual Studioでプロジェクト名称を変更する

先人の知恵“φ(・_.) メモッ!
自分で書いたら6ステップくらいになっちゃう文章力のなさ(^◇^;

で、ほぼ作り直しなんですが、遺産をも人間関係も捨てるのがもったいない性分の私としては、まるごと移動するだけで対応。
必要な物を作り込んでいく。

画像はフリー画像で有名な「ぱくたそ」さんから。数十回読み込みに耐えれる画像を選択(^◇^;
ファイルを読み込むとこんな感じ。

ディザ適応された感じ。

まぁここはメインじゃないけど1日かかってしまった^^;
ここから先が大変なのに、画像処理の勉強とソースの理解と全然分かってないです。
表示できればなんとかなるっしょ!(^◇^;

—-
BMP以外も読み込めるようにしてみた!
まだメモリががっつり必要です。処理が遅いです(^◇^;
ゴールが遠い・・・

課題:途中で高速化・最適化して時間を取られる。反省。
(ちゃんと動く物ができてから、枝葉を作りましょう!)

BMPIndexInfo v1.0.0ベータ版の“φ(・_.) メモッ!

BMPIndexInfo

うむむ。
最初思ったことはなんとかできた。
振り幅がないというか余裕がない動作条件だ(^◇^;

・フォトショップの[.act]ファイルが扱える環境が必要(カラーパレットとIndex番号いじれるほかのツールがあれば代用可能)
 [.act = アドビ カラー テーブル?]
・BMPをインデックスモードに変換(確定前に、「カスタムパレット」→「カラーテーブル読み込み」の必要あり)するくらいのやる気が必要

そのファイルを読み込むと、[setblock]コマンドと[座標]と[ブロックID]をテキストファイルに書き出せます。
パレット固定でのインデックス番号がそのままブロックIDに置き換わるので融通が利かないです。

コマンド入力できる環境でコマンド一覧をペーストすれば、ブロックを並べてくれます。

WorldEditとか使わずできます!それだけw
新しいツール覚えるの面倒なんで・・・(まだいうか^^;)

これをたたき台にして、他のファイルも読めるようにして、方角も4方向だけでなく・・・
フレと相談しながら新仕様を煮詰めます。

あ、外部ソフト使わないのが一番ですね(^◇^;
(シンプルで、いじらないのが一番安定してるんだろうけど)

確定申告済ませてまた頑張ります(^_^)/~
やば、今日も寝てない!w

追記:色が違うとか、大きいファイルがだめだとか、いろいろあってダウンロードのリンクは下げました。(・・ゞポリポリ
そのうちまたなんかすると思いますm(__)m

ひょんな事からヘンテコツールを妄想中。マイクラ用にBMPのIndexの情報をコマンドで書き出すツール。の“φ(・_.) メモッ!

燃えるブロック(ウールと木材)のデータで作られたパレットのみで出力されたBMPデータ情報を書き出すツール。

Aパターン:インデックス番号のみ。
Bパターン:ブロック番号(インデックス番号をブロック番号に置き換える)
Cパターン:セットブロックコマンド+ブロック番号
Dパターン:セットブロックコマンド+座標+ブロック番号

うむむ。AとDだけあればとりあえず用は足りますね。
—-
ウール16色+木材6色


(上2段が羊の近似色、下が木材の近似色)
静止画からカラーピッカーで見ただけなので適当です。[ここの適当が重要かも^^;類似色検索は曖昧さが必要なので…たぶんね!]

アップデートで色が変わりますm(__)m
サンプルは1.13v2のテクスチャを使っています。

ver 1.00a:稼働したかも。(アルファ版)
-パレット固定のためパレット順が変わると狂う。これなんとかしたら公開?
-「ハルの画像変換ソフト」があるので不要

・・・終了?(^◇^;

途中まで作ったんでプログラミングのリハビリにもうちょっといじります。
類似色検索ではまっているので先に進まない感じ。
奥が深い!
フォトショは4.01(XP)とか7(Windows7)とかCS2(Windows7)とかエレメンツ(Windows10)とか使ってます。
PV4録画用に32bitXP現役ですがデバッグ面倒なのでWindows10の64bitのみ対応で行きます。



パレット固定だとちょっちじるだけで狂うので、修正します。
パレットに白色が入る気がする?なんだろ。22色で作っても23色になるのね…
これも調べないと。

あとはOpenCVとかMagick.NETとか思考錯誤というか、あがいてみます(^◇^;
完全に溺れてる感じですが!

(コマンドですm(__)m)世の中はひな祭りらしいのでマイクラで写真を読み込んでみた!ひな祭り全然関係ないっす(^◇^;

森の洋館以降何か燃やしたく・・・ケホケホ
どうせ燃やすならすっきり全部燃やしたいよね!
燃えるブロックのみで壁を作って火を付けるという感じで…

せっかくの休日、風邪気味で冷えピタクール貼ってる場合じゃないですよね!
天空トラップタワー作るのがだるいんで、逃げてるだけですけど。

お昼時でおなかすいてきたので、ひな祭り気分やめて、肉焼いてみました(^◇^;


ただ燃える絵を眺める・・・むなしぃw

熱が・・・
アホなツール作ってる場合じゃないw
MODなくてコマンドだけで写真を取り込んで見た感じです。
燃えるブロックだけじゃ実用にはほど遠い(^◇^;

サバイバルモードで、リアルタイムで絵が投入できるって事で何か使う気がする。かも?
スクリプト組むかMod入れればすみそうな気もする。
90分超えるとモチベさがって頭が回らないのでまた明日以降で。

いつか闇夜に燃え落ちる城作りたいのに!ヘ(゚∀゚ヘ)アヒャ


ご飯食べて薬飲んで寝るとしましょ(´・ω・`)

追記:「コマンド」です。タイトルに入れときました。
画像は「ぼかすなら使うなよ」って言われる世界ですが、モチベーションってやつです。
知り合いに江頭でモチベーション上げる人も居ますけど、あれをデバッグ中数時間見続ける気力の方がすごいw

C#のツールでBMPからコマンド吐き出して、そのコマンド貼り付けるだけです。(setblock使用権限が必要です)
横にして地図にも使用できるようにいじくってます。
ツールに減色処理を搭載してないので、画像の事前処理が必要なんで万人向けではないです。
(フォトショップでパレット読み込むだけですけど^^;)

今のところウールと木材だけなんで22色しか使えませんヘ(゚∀゚ヘ)アヒャ
(他のツール覚えるのが面倒なんで…座標調べて、貼り付けるだけでどやーっていう素人です)

多分完成形は抜き色指定と重ね合わせで3Dプリンタみたいになりますね!
CADで変換した方が早い気もする。

そんな日曜の朝の妄想でした。
ひさしがまぶしい!うとうと。
ハルさんみたいにちゃんと減色機能搭載できる高みに登りたい…zzzz

自作ツール更新。PicoPicoTimer ver1.1.8β

自作ツール更新。
ガラクタツール置き場はこちら→http://nln.jp/software/

2017-12-28
[PicoPicoTimer ver1.1.8β]
・Tabでフォーカスを移動したときなど、数値を全選択するように修正。
・削除処理の空白処理追加。(追記1.1.8)

微々たる修正。です。
自己満足:カーソル移動と数値削除が大分それらしい動きになった!ヽ(*^。^*)ノ

モニタが省エネモードで消えていると最初の音が出ないとかありますが…(・・ゞポリポリ
当たり前ですよね。モニタの復帰時間なんて分かりませんもの。
設定増やすか…

—-
MSDNありがたや~。

手順 5: NumericUpDown コントロールの Enter イベント ハンドラーの追加
https://msdn.microsoft.com/ja-jp/library/dd492138.aspx

private void answer_Enter(object sender, EventArgs e)
{
// Select the whole answer in the NumericUpDown control.
NumericUpDown answerBox = sender as NumericUpDown;

if (answerBox != null)
{
int lengthOfAnswer = answerBox.Value.ToString().Length;
answerBox.Select(0, lengthOfAnswer);
}
}
カーソル移動後、削除した時の「空白」挙動が「一般的」になるよう修正。

(非推奨)NumericUpDown.TextChanged イベントのついか
https://msdn.microsoft.com/ja-jp/library/system.windows.forms.numericupdown.textchanged

参考:C#の質問です
https://oshiete.goo.ne.jp/qa/9467513.html

—-力ら技でまとめるとこんな感じ?
public PicoPicoTimer()
{
InitializeComponent();

this.numericUpDownHours.TextChanged += new System.EventHandler(this.numericUpDownHours_TextChanged);
this.numericUpDownMinutes.TextChanged += new System.EventHandler(this.numericUpDownMinutes_TextChanged);
this.numericUpDownSeconds.TextChanged += new System.EventHandler(this.numericUpDownSeconds_TextChanged);
}

private void numericUpDown_SelectAll(NumericUpDown answerBox)
{
// Select the whole answer in the NumericUpDown control.
// NumericUpDown answerBox = sender as NumericUpDown;
// NumericUpDown answerBox = numericUpDownSeconds;

if (answerBox != null)
{
int lengthOfAnswer = answerBox.Value.ToString().Length;
answerBox.Select(0, lengthOfAnswer);
}
}

private void checkBoxTopMost_CheckedChanged(object sender, EventArgs e)
{
this.TopMost = Settings.Instance.TopMost = checkBoxTopMost.Checked;
}

private void numericUpDownHours_Enter(object sender, EventArgs e)
{
numericUpDown_SelectAll(numericUpDownHours);
}

private void numericUpDownMinutes_Enter(object sender, EventArgs e)
{
numericUpDown_SelectAll(numericUpDownMinutes);
}

private void numericUpDownSeconds_Enter(object sender, EventArgs e)
{
numericUpDown_SelectAll(numericUpDownSeconds);
}

private void numericUpDownHours_TextChanged(object sender, EventArgs e)
{
if (numericUpDownHours.Text == “”)
{
// If the value in the numeric updown is an empty string, replace with 0.
numericUpDownHours.Text = “0”;
numericUpDown_SelectAll(numericUpDownHours);
}
}

private void numericUpDownMinutes_TextChanged(object sender, EventArgs e)
{
if (numericUpDownMinutes.Text == “”)
{
// If the value in the numeric updown is an empty string, replace with 0.
numericUpDownMinutes.Text = “0”;
numericUpDown_SelectAll(numericUpDownMinutes);
}
}

private void numericUpDownSeconds_TextChanged(object sender, EventArgs e)
{
if (numericUpDownSeconds.Text == “”)
{
// If the value in the numeric updown is an empty string, replace with 0.
numericUpDownSeconds.Text = “0”;
numericUpDown_SelectAll(numericUpDownSeconds);
}
}

2017年12月年越し前に録画環境をアップデート! EpgDataCap_Bon(EDCB)、TvTest、TvtPlayをビルドしてみるメモ

自分でできる人はスルーしてください。初めての人は解説サイトへ行ってください。そういうメモです(^◇^;

2017年12月年越し前に録画環境をアップデート!EpgDataCap_Bon(EDCB)、TvTest、TvtPlayをビルドしてみるメモ
(不都合の時のために古いバージョンはコピーなどして、「上書き」だけはしないように!不都合無い人は更新しない方が良いのがこの世界です!)

3か月で浦島太郎なチキン脳みそです。Windows10 FallCreatorsUpdateもあったし、クリーンインストールしたし、再構築から・゚・(ノД`)・゚・
初歩的なこと忘れてる私には確認作業が重要。C++も必要なら入れましょう。

いまから能動的にC++覚えようなんて素人の人もいないと思うので、こういうところから入るのも…邪道です(^◇^;
変な癖つきますw

Visual Studio Community 2017の15.5.2で、Windows8.1SDKインストールしておくこと。

ググって
>[TvtPlay github]
>[TvTest github]
以下のファイルをダウンロード&展開

・EDCB-work-plus-s
・LibISDB-master
・TVTest-develop
・TvtPlay-work

◆LibISDB-masterは中身を[TVTest-develop\src\LibISDB]に移動(コピーでも可)

詳細)空きディレクトリがあるので、TVTest-developの中身を移動。
TVTest-develop\src\LibISDB\.gitignore
TVTest-develop\src\LibISDB\CMakeLists.txt
TVTest-develop\src\LibISDB\Documents
TVTest-develop\src\LibISDB\LibISDB
TVTest-develop\src\LibISDB\Projects
TVTest-develop\src\LibISDB\README.md
TVTest-develop\src\LibISDB\Samples
TVTest-develop\src\LibISDB\Tests
TVTest-develop\src\LibISDB\Thirdparty
と、なるようにする。

最初にビルドする。

開くソリューション
TVTest-develop\src\LibISDB\Projects\LibISDB.sln

インクルードファイルの確認など下のゲージを見ながらしばし待つ

確認2点(最後に設定した内容で変わってしまうので毎回確認)
・x64→x86(Win32)
・Debug→Release


んで、ビルド。

おまじないしたい人は、ソリューションのリターゲット。

◆次にTvTest本体

開くソリューション
TVTest-develop\src\TVTest_All.slnを開く

右のソリューションエクスプローラーからプロジェクトを右クリックして「ソリューションの再ターゲット」を選んで更新。

確認2点
・x64→Win32
・Debug→Release

LibISDB-masterはコピーしてビルド済みなので、本体のビルドを始める

※ここでLibISDB.libとかライブラリがリンクできないのは最初にターゲットが間違っている場合が濃厚。x64(64ビット)指定でビルドしている。またはディレクトリ構成が違っている。
注)パスを確かめる(^◇^;

完了!
成果物の場所:
TVTest-develop\src\Win32\Release\TVTest.exe
TVTest-develop\src\Win32\Release\TVTest_Image.dll

◆次にEpgDataCap_Bon
EDCB-work-plus-s\Document\EDCB_ALL.VS2015.sln

おまじないしておこう。リターゲット!

確認2点
・x64→Win32
・Debug→Release

ビルド。完了!

成果物の場所:
EDCB-work-plus-s\x86\Release\EdcbPlugIn.tvtp
EDCB-work-plus-s\x86\Release\EpgDataCap_Bon.exe
EDCB-work-plus-s\x86\Release\EpgDataCap3.dll
EDCB-work-plus-s\x86\Release\EpgTimer.exe
EDCB-work-plus-s\x86\Release\EpgTimerPlugIn.tvtp
EDCB-work-plus-s\x86\Release\EpgTimerSrv.exe
EDCB-work-plus-s\x86\Release\SendTSTCP.dll

◆おまけTvtPlay

開くソリューション
TvtPlay-work_20171222\src\TvtPlay.sln

プロジェクトの再ターゲット画面が出る→OK

確認2点
・x64→Win32
・Debug→Release

ビルド。完了!

成果物の場所:
TvtPlay-work\src\Release\TvtPlay.tvtp

平和だ…トラブルがないなんて…中の人に感謝!

—-
ts再生でオンボードGPUでアクセラレータ使用すると、再生秒数スキップ移動するとたまにアスペクト比無視して横長になって右が切れてしまうシマウマ…トラウマ。
CPU負荷模索して低くしたら発現した(・・ゞポリポリ 何度か再生位置移動させれば戻るけど。
Intelさぁぁん。おろろんおろろん。おま環っすよ。でも、たすけて。

自作ツール更新。PicoPicoTimer ver1.1.6β(32bit) Reduce the duplication directory ver1.1.7β(32bit)

自作ツール更新。
ガラクタツール置き場はこちら→http://nln.jp/software/

2017-12-13
[PicoPicoTimer ver1.1.6β]
・Tabオーダーの修正。
[Reduce the duplication directory ver1.1.7β]
・削除キーワードリストのスクロールバーを有効にしました。

寒くなってきましたねぇ{{ (>_<) }} こたつは却下されたので、デスクにむかってます。 足下寒いです… いつもの同級生のカウンターでラノベ書きたいと言ったら、娘の使い終わった小学生国語の教科書をもらいましたヘ(゚∀゚ヘ)アヒャ 句読点(くとうてん)読めるようになってから出直してこいと言う話題^^; いやぁ、読めるけどさ。 「くどくてん」だろ?って周りの人が言ったら否定できるほど自信がないって話で… 酔ったイケイケのおにーさんに口出せるほど勇者じゃないです。 カギ括弧のの終わりの前と後ろの[。]の扱いの勉強中なのは事実ですけど(^◇^; ですよね!」。 日本語難しい。

ランサムウェアからデータを守る!(データ退避HDDはつながなきゃいいよね!)

と、お題のように安直に考えておりますが(^◇^;
作業用のワークSSD(古くて容量少ないやつで十分です)の利用をお勧めします。

「PC→バックアップ」
そのHDD、バックアップの後もつなぎっぱなしになってませんか?
HDDの容量足りなかったりしてバックアップとってあるからとメインPCのデータ消したりしてませんか?
それはバックアップではなく退避というんです!w

退避データはオリジナルなので、
「退避HDD→PC」という作業が終わったら極力外しておきましょう。
「退避HDD→ワークSSD=PC」としておくと、ワークが壊れても退避データは守られます!

※外付けHDDなどの接続・取り外しはできる限りOSをシャットダウンして電源を切ってから行いましょう。
一般家庭向けではホットプラグ機能があってもまとものセーフガードかかってないので、キャッシュに残ったままで電源落とそうとしますので(^◇^;
または、キャッシュに残ったまま電源切るとHDDデータそのものが壊れます。
マニュアルに書かれた基本的な使い方を守るのが前提ですよ!(当たり前ですが)

—-
メインデータ→バックアップという考え方が普通のように思いますが、毎日差分をバックアップするのはもう普通だと思いますので、新しい差分データではなく、古いデータを守る方法を模索していきましょ!

そもそも、参照とか写真データとか新しいデータはBD-Rに焼いたり別HDDにコピーしてると思います。前提です。
重要なのは「古いデータを必要な分だけワークHDD(コピーデータ用)に戻して使う。
バックアップHDD(みんなバックアップというより対比HDDになってるよね…)をPCにつなぐ時間を最小限にする工夫が重要かなと。

うちはファイルサーバー等なの退避サブPCがそんな位置取りです。
退避PCはファンはうるさい方がいいです。長くつないでおきたくなくなるので(^◇^;
静音PCにコピーして使う。壊れて困るデータはメインPCに置かない。日々の差分はクラウドにバックアップ。
PCからはアップロードやダウンロードでしかアクセスできないので、PCが死んでも残ります。
自動アップデート(マッチング)かかってると死にますが(^◇^;

まぁ、操作してないのに目の前でガリガリHDDにアクセス始まれば怪しいと気づきますもんね!
ランサムタイプやウィルスによりますが大体異常なアクセスが発生します(・・ゞポリポリ
SSDだとあまり気づかないという。恐ろしい。
圧縮ファイルの展開や、コピー作業程度の負荷ですけどね。。。

写真の整理と引き出しが結構あるのでその都度HDDをリムーバルに入れて…ファイル探してという膨大な時間を無駄にしてきた経験から、HDD中身のファイル情報だけ書き出すというヘンテコ機能を持ったツールを作ったわけです。

機能追加で肥大化して訳がわからなくなってきているうちのガラクタ置き場にある 「Search Clone」くんがそれです。
HDD20台くらいまでならドライブレターいじくり回してなんとか見つけやすくなっているかと。
見つけたらコピーをSSDにコピーして(キャッシュみたいなもんですね)普段の作業で使う。

年賀状シーズン古いデータ引っ張り出すことも多くなると思いますので、バックアプトコピー利用法を考えてみては?

コピーして重複ファイル増えたら、「Search Clone」使って削りまし!
なんてマッチポンプでしょう・゚・(ノД`)・゚・

[Windows10] エクスプローラーの検索で部分一致させる方法?

今更感もりもりですが、“φ(・_.) メモッ!

フリーのツールや自作尾検索方法やってるのであまり使わないんですけど(´-`).。oO(使いにくいよね)
いつの間にか単語検索に変わっていたようです。XP時台が懐かしい。
英語圏では単語検索の方が早い設計なんだろうけど日本語には合わないと思う。
略式・略語のオンパレードですものねぇ^^;

キモはこれ
エクスプローラー→表示→オプション→検索タブです。リボンを開いてくださいな。
(右上の「拡大縮小閉じる」の下の?の左の「V」です)
「ファイルシステムのファイル フォルダーの検索時にインデックスを使用しない」をチェックします。

あら不思議、「*」付けなくても部分一致検索ができちゃいます!(完璧じゃないけど)

やっぱりみんな困ってたんですねぇ
時間かけて検索ツール作ったあたしって・・・(´・ω・`)

参考サイトはこちら
Windows10:エクスプローラーの検索を改善する
http://thinkingskeever.hatenablog.com/entry/2017/02/14/063000