[テクニカル インフォメーション ]
最終更新日 2011/11/08
プログラムを書いていて考えた事や 諸々の事を書いていきたいと思います。
* 2011/11/08 からの インストールファイル *.INF について。
( 2012/10/03 追記 )
* 2011/09/10 本日 アップした ExecSlct について。
* 2011/09/05 ClipSaver 用 リスト保存ファイルにパスワードを設定出来る様にした事について。
* 2011/05/16 配布アーカイバ形式を ZIP 形式に変更した事について。
* 2010/12/12 他のプログラムをクリップボードをコマンドラインにして立ち上げられるプログラムについて。
* 2010/02/20 ドライブを列挙するプログラムについて。
* 2010 年からのWindows 2000 検証について。
* 06/03 2009 SbFolder の キーボード操作対応について
* 04/01
2009 プログラムのリンク
オプション 変更について
* 08/13
2008 SbFolder について
* 07/13
2008 GetWinTx について
*
10/20 2007 ClipName.DLL の Date Time について
* 05/08
2007 ClipSaver の ,;, 以降を代入 の設定オプションについて
* 04/18
2007 ファイル ( フォルダー ) を メニューにして表示するプログラムについて
* 12/13/2005
常駐型 プログラムについて
* 05/14/2005
応答のない ( ハングアップした ) プログラムへの対応について
* 01/18/2005
プログラムのコマンドライン について
* 12/26/2004
SetDetail CabFixer OnlyDetl の アップについて
* 10/28/2003 ClipSaver.DLL Ver 1.200 の機能拡張
と サイズ に ついて
* 05/17/2003 K_Launch Ver 2.1000 について
* 05/07/2003 DIalUpDs Ver 1. 020 について
* 04/15/2003 SbFolder 2.303 に関しての
コンパイルオプション について
* 06/28/2002 ターゲット Window の
アクティベート色について
* 03/06/2002 SbFolder の
リアルタイムメニュー変更に関して
*
10/01/2001 ClipName の 複数選択時の 右コンテキストメニューについて
* 09/14 2001 SbFolder の 左利き用 Reverse
M Botton バージョンについて
* 07/23/2001 からのクリップボードに書き込む全てのプログラム
バージョンアップについて
* 04/29/2001 ExitWndw について
* 01/19/2001 ClipSaver Version Up について
* 12/01/2000 SetDetail CabFixer & SbFolder
Version Up について
* 11/16/2000 11/10 前後のプログラム
Version Up について
* 08/04/2000 SetDetail の改訂について
* 06/02/2000 SbFolder 2.04
* 02/24/2000 ClipSaver 2.14 について
* 2011/09/10 本日 アップした ExecSlct について。
今更ながらですが 本日 アップした ExecSlct は Windows Vista 7 と来て 此ではちょっと不便だと言う事を
解消しようとして作成した最初のソフトになりました。( XP 以前ではそれ程問題は無かったのですが。)
SendTo フォルダー と言うのは結構便利な物で ファイル フォルダー等関連付けされていない物でも 送れるし
試しにいつもと違う物で操作したいとかの需要には汎用性が有って 大変使い勝手が良い物だと思っています。
ところが Windows Vista 7 と出て Vista から SendTo フォルダーの扱いが変わり XP 以前には此の SendTo
フォルダーに作成したフォルダーはスタートメニューのようにポップアップになり深い所に追って行けたのに
Vista 7 共に扱いが単なるフォルダーになってしまいました。従って フォルダーを作ってもポップアップも
出ないし此のフォルダーを送るから選択すると 此のフォルダー下に コピー 移動 ( 意味 ??? )
になってしまいます。
XP 以前の時には 例えば 音楽関係 とか 画像関係 とか フォルダーを何個か作って その下に立ち上げたい
プログラムのショートカットを置いておけば結構整理されて使用できたのに 同じ様な事を Vista 7 で行う為には
SendTo フォルダー直下に多数の実行ファイルの ショートカットを作成しなければならすに見た目が煩雑に
なってしまい順序も自分で決められません。何で此の様な仕様にしたのかが ??? です。
そこで 少しでも整理出来て 便利に使用する様に SendTo フォルダー直下には 此の ExecSlct.EXE の
ショートカットだけを置き 各々の欲しい実行ファイル は設定ファイルに書いた物をメニューで選択出来る様にして
これらの 実行ファイル に SendTo からのコマンドラインを渡す様にしたのがたのが ExecSlct です。
もちろん XP 以前の SendTo 下のフォルダーの様に何もせずにフォルダー下がポップアップする訳では無いのですが
( ExecSlct.EXE 立ち上げの One Click が入る ) ExecSlct が上がった後はこちらの方が便利でしょう。
ただ それだけの機能では汎用性に欠けるので 設定ファイルに記録した各々の実行ファイル には それぞれ
バックアップの コマンドラインを与えられる様に設定ファイルに書いておける様にしました。
此で 設定ファイルを切り替えれば スタートメニューの様にメニューでの立ち上げランチャーにも使用できます。
( 私は メインが XP なので 此の ランチャー機能が気に入っています。)
ただし 此処にある幾つかのプログラムと同じように ExecSlct.EXE も設定ファイルが無ければ何の意味も機能も
有りません。その面では立ち上げのハードルが多少高い ソフトと言えるかもしれません。
* 2011/09/05 ClipSaver 用 リスト保存ファイルにパスワードを設定出来る様にした事について。
ClipSaver の用途が クリップボードのテキストデータの保存だけに留まらずいろいろな 文言やアドレスの
リマインダーとか パスワード ユーザーID の キープや出し入れ クレジットカードの番号 暗証番号 等で
一纏めに使用される様になってくると 此のワンセットの *.CSL で何でも出来る様になり 個人使用の外に出ない
家だけのパソコンでも多少まずいかな と言う感じになってきました。
そこで 此の辺で ClipSaver の リスト保存ファイル *.CSL にパスワードをかけて使用の制限を考える事に
しました。
本来 *.CSL は扱いの効率化の為 殆ど平テキストの形を取っていましたが此の部分とのデータの互換性は取りたい
所です。各々の *.CSL にパスワードをかけて ClipSaver からの使用の制限をする事は色々な方法もあり
プログラム上それ程 大変な事でもないのですが ClipSaver 以外のプログラム ( 例えば Binary Editor 等 ) から
見てどう見えるかが 肝心な所だろうと思います。
最初はパスワードだけは暗号化して簡単には解らない様にしようと思いましたが その後の *.CSL を データの
互換性と 扱いの効率化の為に現在と同じ殆ど平テキストの形を取っているのでは データ自体は
すぐに解る人には解ってしまうのでパスワードだけ解りにくくするのも意味は無いと言う訳で パスワードと
データを含め 暗号化 ( 単なる変換 ?? ) して記録する事にしました。
この為に パスワード を忘れてしまった時には パスワード付きの *.CSL はデータを含めて *.CSL から直接読み取る
事が出来なくなりました。
ただし負荷と手間を考えてそれ程複雑な データ変換をしている訳では無いので 心得の有る方にはパスワード
を含めて変換されてしまう可能性も十分有り それ程 セキュリティー的に盤石だとは思わずに使用して
いただければと思います。
* 2011/05/16 配布アーカイバ形式を ZIP 形式に変更した事について。
UNLHA32.DLL 作者の Micco さんの「お知らせ」 後も( 2010年6月5日公開 )
( LZH形式を、特に企業や団体が利用する事は セキュリティ上危険であるとして、利用しないよう呼びかけ )
私個人は UNLHA32.DLL ( 此はもう対策済み ) を使用していて 特に アーカイバ形式を lzh から変える気も
必要性を感じる事も有りませんでした。しかし オンラインソフトウェア流通サイト Vector の方から これ以降
( いつだったか忘れましたが結構前 ) の新規ソフトと バージョンアップについては lzh 形式のアーカイバは
認めないとのお達しも有ったり ( 必要性がない気がして無視して Vector の方では 新規ソフトと バージョンアップ
もしていませんでしたが ) 何となく 全体の流れが 利用しないような方向になってくると まあ 変えた方が
いいのかなと言う気になって来ていました。
変えるについては zip 形式で定型作業をこなす用意をしなければ行けないのですが そろそろ用意も整ったので
本日 ( 2011/05/16 ) からの新規ソフトと バージョンアップについては zip 形式に変えていく事にしました。
此の事は 自分が内部で使用するのも zip にすると言う事では無く あくまで此処に上げる アーカイバ形式を zip に
すると言う形式的な事です。 別に内部で使用する分には今まで通りの lzh 形式で何ら問題はありませんので。
誤解の無い様に書いておきますが lzh を使用するから 脆弱性が有る と言う話では全くなく 殆ど全ての圧縮形式で
此の部分を扱うソフトの対応が悪ければ 脆弱性は出る訳で どっかの機関が lzh に脆弱性が生ずると言う事を取り上げず
公認しなかったので此の脆弱性についてのソフトの対応が進まないかもしれないので利用しない方が良いと言う
意味です。この辺の詳しい経緯はインターネットで "LZH 脆弱" とでも検索すれば見つかるでしょう。
どちらにしても ダウンロードした 配布アーカイバ形式が lzh で有ろうと zip で有ろうと現在の解凍ソフトは
自動的に判断して良きに計らってくれるので 解凍は同じ事だろうとは思います。
* 2010/12/12 他のプログラムをクリップボードをコマンドラインにして立ち上げられる
プログラムについて。
12/12 にアップした Clpbd_IE の事について多少書いておきたいと思います。最初に作成しだしたのは
単にリンクの無いテキストの URL を開くのが結構面倒だなと思ったからです。無いなら作成すればと言う事で
リンクの URL は通常コピーして IE のアドレスに貼り付けて Enter と言う手順を踏む訳で URL は Clipboad に
入っているので 此のテキストを インターネットエクスプロラー にコマンドラインとして与えて IE を立ち
上げれば リンクが開けます。よし やった と言う事で 私の環境では此で OK だったのですが 他のブラウザーを
使用している方は此では楽しくないでしょう。
それでは Clpbd_IE 自身のコマンドラインに立ち上げるブラウザーを指定してもらえば OK 指定しない時には
IE を開けば良い所まで来ました。此で Clpbd_IE はとりあえず完成して此を 12/12 日に Ver 1.000 として
アップした訳ですが Clpbd_IE 自身のコマンドラインに指定出来るのは ブラウザーだけではない と言う事に
気がつきました。結局 どの様な プログラムでも指定出来 その実質的なコマンドラインは URL でなくても良い
制限のないテキストクリップボードの内容。となると 今までには無い結構いろいろな使用法が有りそうです。
Clpbd_IE と言う名前で プログラムのプロジェクトをスタートして名前を変更するのが面倒くさかったのですが
多少早まったかもしれません。
* 2010/02/20 ドライブを列挙するプログラムについて。
此処にある プログラムで ドライブ全てを確認してそれをメニューにして表示する物が 3個ほど有ります。SbFolder
SubFolder EjctClse です。このうち SbFolder SubFolder については 2009/01
に最初にドライブから始める時に初めに有効なドライブを確認して始めるコードにして余分なドライブの確認をしない様にしていましたが なぜか
EjctClse はこれから外れていました。EjctClse は コマンドラインでドライブを指定されなければ (
まあこの方がケースとしては多いと思いますが )D〜Z までドライブを確認するわけですが 存在しないドライブを確認するのは存在する物に比べて 10 倍以上時間がかかるようです。通常は Z: ドライブまで有るケースはまれで
殆ど半分もないのではないのでしょうか。従って殆どの時間を存在しないドライブを確認するのに使用していたわけでかなりの無駄が有ったわけです。そこで
EjctClse でも SbFolder の様に有効なドライブを確認して始めるコードにし
てはじめの時間短縮をしました。此によりこの部分では 20 倍以上のスピードアップになっています。とは言っても 100 回して
20ms が 1ms になるぐらいで 一回にすれば 0.2 ms ぐらいの差で殆ど感じる所は無いとは思いますが
自己満足的なコードとしては優れています。
* 2010 年からの Windows 2000 検証について。
マザーボードの故障から
此の変更の為 Windows 2000 環境での 開発 検証 が出来なくなってしまいました。本当は新しいマザーボードにも
Win 2000 を入れたかったのですが ドライバー等の為に断念しました。まあ 今までと同じようにプログラムをして
XP で 検証すれば 当分 OK だろうとは
思いますが基本的に Win 2000 の方が速い事が多いので
細かい タイミング等は 問題が出てしまうかもしれません。
* 06/03 2009
SbFolder の キーボード操作対応について。
SbFilder を使われている方はお気づきだとは思いますが
SbFolder ( 含 SubFolder ) もメニュー表示のプログラムですが
通常のメニュー操作と選択決定が大きく違っている所が有ります。通常のメニュー選択決定は最後のポップアップ
ではない所を選択決定で使用しているのに SbFolder
では此に加えて下にメニューが出ている途中のメニューのマウスクリックでフォルダーを開きます。此はマウスの左右クリックをモニターして
OK ならメニューを消して 選択されていたフォルダーを開く事にしているからです。ただ此だと
キーボードだけの操作 →↑↓→ で選択 して Enter キー
で決定という通常出来るメニュー操作は最後のポップアップでない所以外は出来ません。ポップアップの時に Enter を押すと → キーと同じ
動作で下のメニューを開いてよりまずい事に最初のメニューを選択状態にしてしまいます。
そこで → キーと Enter キーの動作を分けて
Enterr キーを途中のポップアップでも選択を決定実行の
キー動作にしました。ただ マウスの左クリックの記憶は出来ませんし
多少 キー入力の違う所は出るかと思いますが取り敢えず一個だけは →↑↓→ で選択 Enter キーで決定
開く or 実行 とキーボード操作だけで出来る事と思います。
* 04/01 2009
プログラム のリンク オプション 変更について
此まで此処 ソフトの小物たちに有ったプログラムは
Win 98 のメモリー管理法に最適化されて Win98 環境での立ち上げ速度を稼ぐ
オプションでリンクされていましたが Win 98環境ももう少なくなって来た事を考え又 Win NT 系 では意味が無いので
此のオプションはやめる事にしました。此によってプログラムサイズは余分な物が
入らなくなるので小さなプログラム程サイズが縮小される様になります。もちろん
Win 98 で使用出来なくなる訳では無く
Win 98 で若干立ち上がり速度が遅くなるかもしれないという事です。
今まで 間の抜けた話ですが
Win 98 で動かない物まで 此の Win98用の オプションでリンクされている物が有りました。開発環境が
Win 98 時代の物で デフォールトの オプションがそうなっていた為ですがちょっと無駄でした。(
??? ) 此からは Win 98 環境も益々少なくなっていくと思われますので本日以降は此の Win98 を対象にした
4Kb Align オプションは全ての プログラムでやめて行きたいと思います。
* 08/13 2008
SbFolder について
メニューが出る前には有る程度その場所にマウスカーソルが止まらないとメニューが出ない事は皆さんご存じだと思います。此の値は
デフォールトだと 400 ms ぐらいですが
カスタマイザー等で短くしたり長くしたりしている方も多いだろうと思います。
SbFolder も メニューの深さを戻った時とか
ディスエーブルされているメニューを出す時 ( FD
ディスクは最初の立ち上げを速くする為に此の文字が白くなっている状態
又 立ち上げ時に無変換 キーを押しながら立ち上げると リムーバル
や CD ディスクは 文字が白くディスエーブルされています。此の時には
Windows は自動的にはメニューを出しません。)
等にはメニューを出す遅延時間をデフォールトの時間で決めて此の遅延を取る事で本来のウィンドウの動作を推し量りメニューの深さを戻った時の不安定さを殆
ど解消していました。ただコンピューターによっては
メニューを戻った時のメニューの出方が遅かったり
又 戻り方によっては先にSbFolder が結果を確認した後で
本来のウィンドウ動作が入っておかしなメニュー表示が出たり
突然に原因が解らずに可能性は本当に少ないのですがたまにエラーが出る事も無い事は有りませんでした。
そこで必ずウィンドウのシステムがメニューをした後で
SbFolder がその結果を確実に確認出来る様に個々の遅延時間 MenuShowDelay
を取得して + α する事にしました。( α は 0.02 sec
ぐらいですが )此によりより確実に安定動作を期待出来
又システムは出さないメニューを再構築し出すタイミングも動作しているシステムと変わりが無くなり不自然さも無くなりました。
* 07/13 2008
GetWinTx について
GetWinTx は 最終的に目的ウィンドウがどれかを探し出して確認しそれに関してテキストを取得すると言う動作をするわけですが
此までは 親ウィンドウを探した後に 子ウィンドウを探し確認する所はウィンドウズAPI
の子ウィンドウ列挙関数で全て当たって行っていたのですが此だと
タブで切り替えるタイプのウィンドウ( タスクマネージャー等
) では上下の関係が把握できずにタブで重なった子ウィンドウを正確に決定する事が出来ませんでした。又
全ての子ウィンドウを調べる事になる訳で当然その親ウィンドウが候補でなければその子ウィンドウも候補で無い訳で
明らかに候補で無い物も調べざるを得ない事になっていました。
それで此の子ウィンドウズの列挙を内部的なコードで行う事にしてタブで切り替えるタイプのウィンドウでも上下関係が把握できる様になり正確に最上位子
ウィンドウを決定できる様になるのと同時に
最初から候補でない余分な子ウィンドウズの確認の手間も省き効率よく決定出来る様になりました。此は
IE 等の深い階層を持ち子ウィンドウも数の多い物や
タブが何個もあるプログラム等に関してはかなりの効率アップとなる筈です。だだし 自前の順序を付けた列挙なので取りこぼし
( ??? ) が有るかもしれません。近からず ClipSaver.dll
も 同じような仕様に改良するつもりです。
* 05/08/2007
ClipSaver の ,;, 以降を代入 の設定オプションについて
色々な物を買ったり 何らかの会員になったりすると
この所 インターネット上で 処理する事が多くなり
結構 やれ ユーザー ID だとか パスワードだとか 商品の
SN だとか 型番 だとか ブラウザに書き込んで送る事が多くなりました。私はこの辺の事は単なるテキストファイル 若しくはClipSaver
のCSL に貯めて対処しているのですが 例えば
有る会員登録のとあーる製品.CSL
製品名
RW-XXX
SN
PL0252972
購入年月日
2005/06/27
お客様ID
kkkk-xxx45
パスワード
hhhkkk
この中で結構このページにアクセスする時に
お客様ID と パスワード 又 サポートを受ける時なら
製品名 を下手をすれば SN まで 入れなければならない
かも知れません。幸い ClipSaver では キャレットの位置に内容を貼り付けてくれますが
上記の表示では見通しが悪い気がしていました。上のリストがが
製品名:RW-XXX
SN:PL0252972
購入年月日;2005/06/27
お客様ID:kkkk-xxx45
パスワード:hhhkkk
と言うような形になっていれば良いのですがこれでは貼り付けた時に余分な物まで貼り付けてしまいます。
それで ,;, 以降を代入
の設定オプションを考えて見ました。”,;,” の部分は何でも良いのですが見た目が 離れて見える事 キー入力がし易い事 あまり出現頻度の無い文字並
びと言う事で
,;,にしました。( 判り易いように ,;,は全角で書いていますが
実際は 半角で ,;, です。)
製品名,;,RW-XXX
SN,;,PL0252972
購入年月日,;,2005/06/27
お客様ID,;,kkkk-xxx45
パスワード,;,hhhkkk
まあ 上記の様に纏めておけば 代入を求められた時に
サクサクと必要な物だけ代入できるのではないかと思います。
又 この主旨からして 改行の付いているような長い文章はこの必要が無いと言う事と
どこかに ,;, が有るかも知れないので最初から 126文字以上の保持リストについては
時間短縮の意味もかねて この対象から外しています。最後まで この ,;, で迷ったのですが
とりあえずこれで行こうかなと思います。
* 04/18/2007
ファイル ( フォルダー ) を メニューにして表示するプログラムについて
此のホームページに有る ファイル (
フォルダー ) を メニューにして表示するプログラムSbFolder や ClipSaver のファイルメニューの CLS
ファイル等では此までは
メニューを作ってから そのメニューをソートしていました。此は 有る条件のファイル ( フォルダー )
を見つける関数が此を作成した順序で見つかり必ずしもアイテム名の順序では出てこないため 後で名前でのソートが必ず必要になります。(
そうしなければ数が多くなった時に収集がつかなくなってしまします。) 最初にメニューを作りそれを後でソートすると言うのは
メニューにメニュータイトルが( ファイル名等が ) 入りプログラム自身ではバッファは用意せずにウィンドウのメニューの機能に任すと言う事で プログラムは楽なのですが いざソートする時になると
メニューの文字を読み込んで此を比較して又メニューに入れ直して修正すると言う作業が
ソート中ずっと続く事になりかなりメニュー作成にも余分なバッファが必要でしょうし文字列のコピー再配置でかなり無駄な負荷がかかる事になるでしょう。
新たに ファイル ( フォルダー )名を取得後
此を自分のメモリー中で ソートしてから メニューを作る方が
余分なファイル名のコピーも無く メニューの変更も無く
単にメモリー配列の入れ替えだけでかなりのスピードアップになり 動作中の負荷も軽い物になる事が解りました。(
場合にもよりますが 約 80 % 程度の時間で終了する様です。) もちろん 最初の ファイル ( フォルダー
)名を取得する時にそれだけのメモリーバッファが必要でその分は手間がかかるのですが
此はメニューでする時も内部的には同じ事だと思います。プログラムのうちファイルをメニューにする物は当分此の方針でアップしていきたいと思います。
* 12/13/2005
常駐型 プログラムについて
此処の所 TaskSwch SubFolder
と常駐を前提としたプログラムをバージョンアップしていますが此までは出来るだけ素早く立ち上がって 機能して終わる
事を目標としてきましたが ある日タスクマネージャーで見て見ると 色々な事をした後でも メモリーが最大まで行っていない事が解りました。(
512 Mb と 1024 Mb の環境 ) 又 TaskSwch SubFolder は ( TaskMuEx SbFolder )
かなりの頻度で使用しており
特に TaskMuEx はマウスの横 ボタンにアサインしてほぼ何かをしながら
下の物を前面にと常に使用しています。そんな時に考えたのですがいかに軽く素早く立ち上がっても やはり ゼロからの立ち上げですから
画面のサイズをチェックして フォントを取得しクラスを登録して ウィンドウを作ってメニューを作って出す。選択されたら
機能を実行して 自分の作った ウィンドウを破棄して 又 諸々の物を 破棄。此の繰り返しは
呼ばれる毎に繰り返される訳で かえって此はシステムの
負荷に( CPU の占有 ) になっていないかと思ったりした訳です。確かに常駐すればメモリーは占有します。(
そんなに必要ないと思ってもなぜだか 3 Mb とか 5 Mb とか随分余裕を持ってアサインしてくれる様ですが。)
ただメモリーは占有しますが常駐時には ただメッセージが来るのを待っているだけですから何もしていません。
CPU の占有 は ほぼ ゼロでしょう。 メッセージが来たら必要な物はもう準備して有るので
ニューを作って出す/選択されたら 機能を実行し 又 待機
そんな繰り返しの方が負荷が軽く良いような気がしてきたので常駐する物を現在作って使用してみています。
ただ 一つのプログラムでも此の機能は現実出来るのですが
( TaskSwch SubFolder ( 実は SubFoldJO.EXE ) 共に此だけで此の機能は実現しています。 但し
TaskSwch SubFoldJO.EXE 共に常駐して メッセージが来たら機能を遂行する部分と 立ち上げ時に 色々な物を準備する部分
終了時に事後処理をする部分が付いていて此を毎回読み込むのは ( 機能が付いていればその分の DLL を準備したりしなければなりません。)
無駄だと思われます。それで此の様な部分をキッパリと無くして単に 常駐している物が有れば
メッセージを送るだけ 無ければコマンドラインに従って常駐 プログラム を立ち上げるだけ と機能を割り切った
TaskMenu,EXE SubFolder.EXE を通常表で使用するプログラムとして作ってあります。SubFolder.EXE と
SubFolder.DLL
が此の関係だったのですが 常駐した時は SubFolder.EXE
+SubFolder.DLL となり 常駐部が SubFoldJO.EXE だけの時より大きくなってしまうので
SubFolder.DLLは残念ながらやめにしました。( DLL の方が格好は良いのですがメリットは有りません。)
まだ常用しだしてから 一月ぐらいなので本当に上記の様かどうかははっきりしませんが取り敢えず当分常用するつもりです。考えて見れば ウィンドウズ
だって多くの機能は常駐させている訳ですから。
* 05/14/2005
応答のない ( ハングアップした ) プログラムへの対応について
どんなプログラムでもバグが無くハングアップしないように期待して書かれているとは思うのですが不幸にして内部的或いは外部的な問題で応答が無くなって
( ハングアップ ) しまうことも有るかとも思います。この話は自分自身が
ハングアップする事では無くてこんなハングアップしたプログラムを相手にする時の話です。
此の ソフトの小物たちに の プログラムのうちでも外部とのプログラムとやり取りしながら作動する物がいくつか有ります。( ClipSaver
/ SetDetail / CabFixer
/ TaskSwch ・・・ ) 此の外部とやり取りしながら作動する物は
此のやり取りが大まかにはスムースに行くことを前提として出来ています。(
部分的にはスムースに行かない事を想定してコードを書いている所も有りますが。)
但し此では 常駐して長く使用する物 ( 上記の例など
) ではちょっとまずいのではないかと考えるようになりました。応答のない
( ハングアップした ) プログラムへやり取りを要求して返事が返って来ないと そこでず〜と待ってしまい
自分も動けなくなってしまう ( 今度は巻き込まれて自分のハングアップ ) コードがまだ残されている所が有りました。この事は
せっかくためたテキストが活用保存できずに失われてしまう ClipSaver では大変に具合の悪い事です。
こんな事情からこれからのバージョンアップで外部プログラムとのやり取りのコードは全てスムースに行かない事も有ることを前提にして行きたいと考えてい
ます。
* 01/18/2005
プログラムのコマンドライン について
結構メールでの質問や相談も多いので此処に書いておくことにします。
DOS 時代から始めた方は コマンドライン が無ければ話が始まらなかったので特に迷う事は無いとは思うのですが Windows
から始めた方はちょっと解りにくいようです。通常
テキスト ファイル等をダブルクリックすると NotePad 等が立ち上がりますが 此は NotePad が
コマンドラインとして テキストファイル名を受け付けるように作られていて Windows 内部でPath + NotePad.EXE +
テキストファイル名 ( Full Path ) と 言うように テキストファイル名 ( Full Path )
を NotePad に コマンドラインとして送って NotePad
に そのファイルを開かせているからです。
プログラムを開く時には 殆どの場合は そのプログラム
( *.EXE ) を直接ダブルクリック 等はしないで 何処かに
ショートカットを作って立ち上げると思います。此のショートカットにファイルを送ったり
ドロップしたりすると プログラム が ファイル名のコマンドラインを受け付けるようにできていれば
そのファイルを読み込んでプログラムが立ち上がります。此も
Windows 内部で
プログラム + ファイル名
と ファイル名 を コマンドラインとしてプログラムに渡しているからです。
それでは /A /G とか意味の解らない
コマンドラインをプログラムに渡す時はどうすれば良いのでしょうか。ショートカットを作ったら その プロパティ
を開いて ショートカット タブを開き その中の
リンク先(&T): に Path + プログラム が 入っていると思いますが
此の後に /A /G と入れて OK として下さい。場合によっては "Path + プログラム" と
"" で括って有るかも知れませんが此は
Path + プログラム の 途中に スペースが入っている時には付いてきます。Path + プログラム / A /G とかで
プログラムを立ち上げる事が出来る様になります。
又 此の時に Windows から の ファイル名とかも入る様になる時は
此の /A /G とかの後に ファイル名が入ってきます。コマンドライン としては /A /G
ファイル名 となる訳です。此は此で良いのですが コマンドライン
としては /A /G ファイル名 では 具合が悪く コマンドライン としては ファイル名 /A /G
として入って欲しいと言う事も有ります。此は プログラム 側の 都合で有ったりします。(
プログラムのコマンドライン解析の都合 ) こんな時は
リンク先(&T): に Path + プログラム %1 / A /G
と入れて下さい。 Windows は %1 の所に ファイル名
を入れてきます。此のショートカットにファイルを送ったり
ドロップしたりすれば ファイル名 /A /G の
コマンドラインを送れる様になります。
* 12/26/2004
SetDetail CabFixer OnlyDetl の アップについて
上記 3個の プログラム共に新しく開かれた
Window に対して何かをする物ですがその Windows が
対照かどうかを判断するのに 見える物は最初から決まっていましたが
もっと手っ取り早く効率よく決定するのに 2004 9月から 子Window
を持たない物は排除するのを最初に入れました。此は大変効率良く見える前から( 見えるかどうかは新しく出来た Window
についてはある程度待たないと解りません。 )
不必要な物を排除出来て大変に具合の良い物でしたが今回一つの落とし穴が有るのが解りました。 Windows の System は各 プログラムの
Thread に時間を割り当てて
Multi Task をさせている訳ですが時間が 来れば次に廻すと言う事で必ずしもきりの良い所で時間を廻している訳では無いのです。(
当然 System はそんな事は解りもしないでしょうが ) 新しい
Window を表示しようとして 大本の 親 Window を作った時に時間切れで SetDetail CabFixer OnlyDetl
に順番が回ってくると
子Window を持たないとして此は排除と言う事になるらしいのです。まさか そんな中途半端な Window が
Foreground Window ( 今キー入力権を持った作業している物
) になるなんて思いもしなかったのですが実際はなるようです。
従って子Window を持たない物はその時点でもう一度待って
各 Tread に時間の権利を与えて ( と要っても 0.1
秒ぐらいですが ) からもう一度 子Window が有るか無いかで判断する様にして確実に判断出来る様になりました。気が付けば
ちょっとした事で当たり前と言える様な事ですが
此で 此処 3ヶ月ぐらいのもやもやがすっきりしました。
* 10/28/2003
ClipSaver.DLL Ver 1.200 の機能拡張 と サイズ に
ついて
ClipSaver.DLL は ClipSaver.EXE の 他のテキスト取得の補助
プログラムとして最初は独立させました。初期の内は 共用メモリーを取得するのが難しくこの為場合によっては落ちる事がありましたので此によって
ClipSaver.EXE まで落ちるのはどうも と言う事で独立させました。しかし
考えてみれば テキストクリップボードの 出し入れや 保存 等は
ClipSaver.EXE 本体の機能で十分で 後のクリップボードに対する便利機能は使わなければ邪魔な ( 常駐にとっては余分な
) 物だろうと思います。現在でも ClipSaver.EXE は ClipSaver.DLL の機能を使用しない限り
ロードしない様になっていて
最初の立ち上げや常駐量を出来るだけ軽くする様にしています。 その ClipSaver.DLL
ですが Ver 1.180 ぐらいでそろそろ 後 数行のコードで 24 Kb から 28 Kb のサイズのジャンプアップが見えていました。
MS C++ の仕様として 有る オプションを入れなければ 4 Kb ずつに サイズを纏める様です。(
そのサイズまで 0 を埋め尽くしてくれる様です。) 現在は NTFS の ファイル管理をしておられる方が多いので
あまり気にはならないでしょうが 私の所は バックアップの方法が 未だに所謂 DOS
からなので FAT を使用しています。この為 何となく
クラスター単位を気にしてしまいます。 24 Kb = 8 Kb * 3 何となく良い数字です。
28 = 4 * 7 ?? さすがに 現在の大容量 HD では 4 Kb クラスター は少数派 では無いでしょうか。(
特別なソフトで操作すれば可能ですが )まあ実用的な 所で 8 / 16 Kb と 言う所でしょうか。そうすると
28 Kb に増えてしまった サイズの次の制限は 32 Kb と言う所でしょうか。此なら 当分の間
サイズ に悩まされる事なくのびのびと機能拡張の
コードが書けそうです。 ClipSaver.EXE の方は 此を呼び出す
コードだけですので それ程大きくならずに当分は大丈夫でしょう。
* 05/17/2003
K_Launch Ver 2.1000 について
究極のランチャー( ??? )を目指して大幅
バージョンアップしたのは良いのですが 若干ですが
以前の EXL ファイルと互換性が取れなくなっている所も有ります。此の辺の所と
EXL をどういう風に修正するかについて書きたいと思います。
以前の K_Launch では 指定できる パラメーターについては
2個で
xoxoxo.EXE [与えるパラメーター]
という仕様にしていましたが此では若干不足で
又 .EXE .COM でないと パラメーター区切りが判断出来ないという 欠点と 第一パラメーターにパスや名前の通った
EXPLORER や NOTEPAD 等が第二パラメーターと共に使用出来ないという欠点が有りました。又 立ち上げる時に 最大化や 最小化も
指定したい
時も有りますし プログラムによっては相対パスで動作する物もあり はっきりと 作業フォルダーも指定する事が必要な場合もある
と言う事で 新しい EXL では 4個のパラメーターを指定出来る様にしました。( もちろん今まで通りに 1個でも良いのですが
)
ファイル名(Tab区切り)コマンドパラメーター(Tab区切り)動作基準フォルダー(Tab区切り)立ち上げ時の状態
と言う仕様にしました。(Tab区切り)と言うのが一番の違いで
今まで ファイル名 ( xxx.EXE xxx.COM とか xxx.TXT C:\ とか ) だけなら 特に変更は必要ないのですが
xxx.EXE コマンドパラメーター となっている 行は xxx.EXE(Tab区切り)コマンドパラメーター と
(Tab区切り)に変えなければなりません。それさえすれば メニューの見栄えが若干違いますが以前と同じように使用できます。
第 3 4 パラメーターについては与えなければ以前と同じように処理し殆ど指定する必要は有りません。(Tab区切り) にする事により
パラメーター分解速度
確実性 柔軟性 サイズ どれをとっても改善されています。又 メニューアイテムの最大数も制限を無くし
メニューの列を変えるのも EXL の中で指定出来る様にしました。
K_Launch や ClipSaver の様に動作データを使用するタイプのプログラムは最初に決めるデータ形式が大切だと思いますが
此で当分変える必要は無い物と思います。最後に蛇足かも知れませんが EXL ファイルは
テキストファイルですから テキストファイルの中の
文字を一挙に置換するタイプのプログラムで .EXE を .EXE\t
に .COM を .COM\t に一挙に置換してしまうのが簡単かと思います。
* 05/07/2003
DIalUpDs Ver 1. 020 について
ADSL 等の所謂 ブロードバンドが全盛の時に
ダイアルアップ接続 切断の ソフトもどうかと思うのですが自分の Home でする以外の時にはやはり契約プロバイダーに
ダイアルアップ と言う事になるのかなと思います。やはり何かの時にまだ ダイアルアップ
は必要であろう と言う事で 末永く 使用する為に
全体的に安全サイドに見直してみました。 Ver 1.011 でも殆どトラブルは無かったのですが
見直せば ちょっと危ないかなと思う所も ( そう言う場合は殆ど無いはずだとは思うのですが
) 有ったりしました。又 メッセージももう少し分かり易く親切な方が良いかと思われる所等を加えたりしています。当然小さいプログラムですから
此だけで使用するというよりは
何らかの方法で呼び出されて使用する事を想定していますが、そんな用途には結構便利に使えるのではないかと思います。実際私の所でも
一種のランチャーから 此と インターネットエクスプローラー 通信回線速度ソフトを
一度に呼び出すようにして それを インターネット
としてひと括りにして使用しています。今回の
バージョンアップで 何も トラブルが無ければ
結構まとまっているのでたぶん( ? ) 最後になるだろうと思っています。
* 04/15/2003
SbFolder 2.303 に関しての コンパイルオプション
について
ここに有る全てのプログラムは Ms の Visual C++ 6.0
で作られています。VC 6.0 になってからかなり手を入れられたらしく だいぶ オプティマイズ が進みました。
殆どの場合 此に任せておいて間違えがない感じがします。時々 やりすぎて 何を
オプティマイズ しているのか解らない事も有るのですが
この頃だいぶ慣れて来たせいか大体の様子が解かってきたような気がしています。コンパイルする時のオプションとしては オプティマイズ が有りますが
主に
スピード か サイズ かの選択が有るとは思います。
此まではサイズ が許せば 通常は スピード のオプションを選択していました。
( そんなに急ぐ プログラム ってそうないとは思うのですが ) ただ スピード のオプション
と サイズ の オプション でどれぐらい違うのか
( サイズスピード ) ちょっと確かめてみました。 確実に言える事は
スピード を優先すれば必ずサイズは増えます。( VC 6.0 の仕様から *.EXE は 何もしなければ 4 Kb
毎にまとめられるのでわからない事が多いのですが
) サイズの方は良いとして スピード は ?? 当然きびきび感の欲しい所では
速いに越した事は有りません。何個か確かめてみました 確かに スピード
オプティマイズ が効いている所も見受けられる事も有りますが確かめた範囲では 1% 有るかどうかでした。(
確かに同じ事をするのに そんなに変わる筈は有りません。) 此なら 各コードを( コーディング を )
最適化した方が確実に速いでしょう。それより問題なのは 中によっては サイズで
オプティマイズ した方が速いと言う事が有ることです。オプティマイズ に スピードを選んで余分な事をする方が
遅くなる事も有るようです。こうなると本末転倒と言う所で何をしているのだと言う事になります。幸いな事に
此処にある プログラムは 殆どが サイズ で オプティマイズ しているので それ程考える事は無かったのですが
今回の SbFolder に関しては 部分的なスピード オプティマイズ をやめて サイズ
スピード 共に 向上しています。結局 一つ一つ
確かめないといけないと言う事でしょうか。
* 06/28/2002
ターゲット Window の アクティベート色について
此処にあるプログラムの内の何個かは相手を定めてそれをなんとかすると言う動作をする物が有ります。例えば
ClipSaver の送る相手とか SetDetail の 此をTop
にとかですが この時此の相手( ターゲット )
Window をはっきり示すために 此のwindow のタイトルバーをアクティベート色にして分かり易い様に
示していますが 6/18 日以前の物では Win API の FlashWindow と言う物を使用してアクティベート色
にしていました。
此は此で良かったのですが Win 98 と 2000 で若干動作が違い Win 98 では 一度 アクティベート色
にしたら次に呼び出すまで変わらなかったのに Win 2000 では 勝手に 300ms ぐらいで 色落ち
( 非アクティベート色 )してしまうのです。何か API の仕様が変わっているのです。ただ
Win 2000 では タスクバーの 表示だけはアクティベート色で残ってしまい此を解消するいい方法が見つかりません。(
ちょっと迷惑 ) したがって 此の FlashWindow と言う API の使用をやめて
Win Message の WM_NCACTIVATE と言うメッセージを使用する事にしました。 此のメッセージをターゲットに
ポストする事で アクティベート色 非アクティベート色をコントロールする事が出来ます。
此の方が動作がシンプルでコントロールが思いのままになりました。又 都合の良い事に 自分に来た此の
メッセージを ウィンドプロシージャーに廻さない事で自分自身も常にアクティベート色
非アクティベート色に保つ事が出きる様になります。(
此は MousePos で使用しています。)取り敢えず 簡単でより動作のはっきりしたコントロールのし易い
方法になりました。
* 03/06/2002
SbFolder の リアルタイムメニュー変更に関して
Win 2000 でも ドライブの有効無効 記憶した物選択した物の
チェックを リアルタイムにメニューに反映させる様にして 確認の
使い勝手を良くしたのはいいのですが、時と場合によってはリアルタイムにメニューに反映しない事が出ています。この場合は
此の一番下のメニューは反応しなくなります。但し一つ上のメニューに戻ればすぐに戻りますし 選択で記憶した
ファイル/フォルダーも間違う訳では無いので実害は無いのですが何となくすっきりしません。又 どの所で常に出るとか
常に出ないとかでなく 殆どランダムに出ている様なのでちょっと 今の所原因がつかめず対策の打ちようが無い状況です。(
Win 98 では全く出ないのですが )したがって あまりに多い環境で 回数も多数出る様なら
此の リアルタイムメニュー変更機能はやめにするかな等と考えていますが、私の所の Win 2000 環境では
今の所
確認のしやすさが此の不具合に勝っている様な気がしています。どちらかが良いかはもう少し確認してから決めたいと思っています。レポートをお待ちしていま
す。
* 09/14 2001
SbFolder の 左利き用 Reverse M Botton バージョンについて
ご使用になっている方は何となく気がついておられるかも知れませんが
SbFolder は フォルダーを開ける時に通常は認められないポップアップメニュー上のクリックで開いたり
又何個かのフォルダーを同時に開ける様に右クリックを認めるのにメニューが閉じないと言う仕様を実現する為に通常のマウスボタンメッセージを無視する様に
作られています。この為マウスボタンが左右どちらが押されているかは押された時に物理的な
ボタンをスキャンしています。( システム( ソフト )から来る左右ボタンではない
) この為 ソフト的な機能で ( フックなどで )マウスボタンの左右を入れ替えても SbFolder
には入れ替えた事にはならないのです。この様な事情から 左利き用 は SbFolder 内部での
左右のスキャンを入れ替えるしかなく 左利き用
を別途ビルドする事にしました。( 内容は大したことはなく
3 行ほど変えただけですが ) サイズも小さくまとめるために一つの プログラムで両方をカバーする方法はやめにしました。サイズも圧縮すれば
EXE だけで 8 kb 程度ですのでアッという間にダウンロードも終わるでしょう。左利き用 SbFolder は ファイルの プロパティーの
バージョン情報タブの スペシャル ビルド情報
に Reverse M Botton と出る事で解ります。( ちなみに
通常の SbFolder は None です。)
07/23/2001 からのクリップボードに書き込む全てのプログラム
バージョンアップについて
クリップボードに書き込むプログラムが
私の 所には何個か有りますが 7/ 23 より此の書き込む所のコードを全て変えていきたいと思います。今までも書き込めてはいたのですが
クリップボードが
オープン出来なかったり 書き込めていなかったりした時に クリップボード 用に確保したメモリーが解放されなくなってしまう コードでした。(
実際には 上記の可能性は殆ど無かったとは思いますが
)新しい コードでは 此の区別をはっきりさせて
クリップボードに入らなかった時には自分でメモリー解放をする様に変えました二行ほどしか変わらないのですがより安全再度と言う事で
クリップボード書き込みコードを持つ プログラムを 全て変えたいと思います。取り敢えず クリップボード書き込みがメインの
ClipName から バージョンアップ したいと思います。
04/29/2001 ExitWndw について
何となくまあ作ってみるかな と言う感じでちょこちょこっと作り上げましたが。結構使えます。本当は
プログラムマネージャーの持っている終了ダイアログ (
スタートメニューから Windows の終了 を選んだ時に出る物
) を何とか出したかったのですが 解りませんでした。同じ様な
ダイアログを作っても良かったのですがそれでは普通にある物になりそうなので メニュー選択としました。その代わりと言っては何ですが
サイズを絞りましたので ハイドディスクの1
クラスター分で済むのでショートカットを作るより直接必要な所に置いてしまった方が良いかと思います。一応 Win NT 用に
シャットダウン権限を与える
コードも入れていますので Win NT で働くかも知れません。強制終了も 実際に 起こったことがないので
はっきりとはしないのですが 一応 全てのタスクに
終了通知を出してからシャットダウン する様にしているのでそれ程の害は無いのではないかと思っています。お気に召したら使用してみて下さい。勿論
私は デスクトップに ショートカットでなく本体を置きました。
01/19/2001 ClipSaver
Version Up について
ClipSaver も随分落ち着いていて
Version Up は機能拡張ぐらいしかないだろうと思っていたら何となく動きの遅い重いソフト
( はっきり言わないけど Ms WinWord で 図が入っていたりして又これらのヘッダー フッター
やらを出して編集している時等 ) Auto Clip を有効にして
コピーなどを行なった後すぐに スクロールさせた時等、時によっては
まず WinWord のページ違反が出てこれを終了させた後にClipSaver
のページ違反が出る事が有るのが解りました。プログラム的には特にClipSaverの方に問題は無い筈なのですが 出るものはしょうがないと言う事で
取り敢えず Clip Boad Chain の信号は即流す様にして 一刻を争う物では無いので
後で落ち着いた所で Clipboad の内容を取得する様に変えました。Clipboad の内容を取得する全ての所で
何となく忙しそうだなと思われる所は 此の取り敢えず
メッセージだけは流して置いて後で落ち着いた所で
Clipboad の内容を取得する様に変えてあります。(
高々 0.1 秒ぐらいの遅延ですが
コンピューターにとっては結構長い時間かも知れません。)
この結果 上記の問題は此のバージョンからは出なくなりましたが
全く出ないとは保証の限りでは有りません。大体 Ms WinWord
ってそれだけで動かしていても変な事が起こり易いと思いませんか。(
(;O;) )
12/01/2000 SetDetail
CabFixer & SbFolder Version Up について
SbFolder は 選択したフォルダーを
三つまで同時に開けることが出来ますし又 そのフォルダーの下を連続して全て開けることもできます。それに引き替え
SetDetail CabFixer は 256 ms に一度の割合でしか新しく開かれた
ウィンドウを見に行きません。従って連続的にフォルダーを開けられると当然のように取りこぼしが出てきます。又
11/ 18 以前の SetDetail CabFixer
だと表示変更の動作に無理が利かず場合によってはメニューの引っかかりを起こすことが有りました。しかし新しい物はかなり表示変更の動作が安定しているの
で
SbFolser から 此の SetDetail CabFixer にメッセージを送りタイマーとは別のタイミングで新しく開かれた
ウィンドウを見に行くようにしました。従って
SbFolder から
フォルダーを開くときは殆ど取りこぼし無く表示変更が可能になっています。二つをセットにして使用すると軽快に動作すると思います。勿論
単独で使用しても全く問題はなく以前の物より多少なりとも速くなっています。
11/16/2000 11/10 前後のプログラム
Version Up について
ここ数日間で随分頻繁にバージョンアップしていますが以前からプログラム自体は殆どを
Win API に頼って作成して来ました。以前の C の ライブラリーと比べると何でもありでは無いのですが
まあ こまめに探せばそれなりに Win API だけでも何とかなるような気がしています。
従って MFC42*.DLL のお世話にもなっていないのですが。しかし
ふと気が付くとちょっとしたプログラムでもサイズが小さくならないような気がしていました。例えば
ClsFolder 等は立ち上がって終わるだけなのになぜ
20 KB も有るのでしょうか。プログラムの内容から言っても又他のライブラリーを
Include している訳でもないのにです。まあ
Visual C++ の仕様でしょうがないかとも思っていましたが
有る記事で VC++ が用意した立ち上げファイルを有る程度外す方法が有りました。此と既存のライブラリーを全て無視のオプションでリンクする事で
8 〜 20 KB 程度サイズダウン出来ることが解りました。
100 KB や 200 KB 有る内の その程度なら許容範囲なのでしょうが プログラム自体が 30 〜 50 KB しかないので
結構大きいと感じています。
ほぼ全てのプログラムを此で修正した訳ですが 此の間にもう少し詰められる所が解りました。
従って今しばらくの間細かい Version Up が続きそうです。細かな所はいいかなとも思いますが
最初 C++ Builder を使用して便利かなと思いましたが そのサイズを見て 又 中が解らない所が何となく
気になってやめた者 ですから。
08/04/2000 SetDetail
の改訂について
メニューを折り返して多数表示する時に
画面の高さにメニューが幾つ入るか計算して折り返す訳ですが今までの環境ではメニューの各々の高さは
API の GetSystemMetrics で取得してそれが画面の高さに幾つ入るかで
折り返す数を決めていたのですがどうも此のメニューの高さが違う環境が( ノートの液晶画面
1024 x 768 で ) 有りました。調べてみてもこの画面の出す
メニューの高さをあらかじめ取得する方法が思いつかないので
SetDetail では 余裕を持って ( メニューの高さを通常より 一ドット高くして計算しています。)
いるのですが 此だと 画面の高さいっぱいに
メニューは並びませんが SetDetail
では それも良いだろうと言うことで 取り敢えず
8/04 に此だけ アップしておきたいと思います。正確には
メニューが出てから 此処の メニューの高さを調べるのが正確なので ClipSaver / CabFixer /
SbFolder はこの様に作ったのですがそこまでするかと思うこともありまして結論が出るまで
保留しておきたいと思います。そのうちにもっと良い方法が見つかるかもしれませんし。画面の高さを
いっぱいに 使わなければ良いのですがそれももったいないような気がします。近々 何らかの形で
アップしたいと思います。
06/02/2000 SbFolder 2.04
だいぶ久しぶりに書きますが
この 10 日ぐらいでやっつけた SbFolder の事です。本当に構想二年
プログラム・・日ですが 私は左に Tree
を持ったエクスポローラーを使用しないのでファイルの移動やコピーはフォルダーそのものを開いてするものですから素早く
目的のフォルダーを開くものと言う事で作ってみました。
Ver 2.03 までは
ウィンドウ の メッセージの WM_MENUSELECT と言う選択されましたと言う メッセージ を使用していたのですが
どうも メニューが表示されてから書き換えるものですからどうしても画面がちらちらする(
落ち着きがない )感じがしていましたが ふと他の メッセージ が目に付きました。(
なかなか最適な メッセージ を探すのは難しい ?
)新たに WM_INITMENUPOPUP
と言う 表示する前に来る メッセージ で書き換えることにしました。とりあえず
メニューハンドルは 一段階 1つ
でしているものですから選択が変わったらすぐに消去して書き換えないといけないものですから。とにかく
WM_INITMENUPOPUP により 表示する前に書き換える事が出来
その後ポップアップメニューが表示される事になりました。ただ此だけだと逆に戻っていく時に
メッセージが来ないので やはり WM_MENUSELECT の方も併用しています。余分な表示が無くなったので使用時の
CPU負荷も半分ほどに減っています。何もトラブルがなければこの辺が初期目標かなと思います。
02/24/2000 ClipSaver 2.14
について
インフォメーションのダイアログの
URL や メールアドレス 等やリストボックスの項目などWindow の コントロールが
STATIC / COMBOBOX / LISTBOX / BUTTON で出来ている物は
EDITコントロールなどと違って
選択して右クリックメニューでコピーの出る筈も無く通常はクリップボードにコピー出来ない物です。そういった物に表された文字は
書かれているにも関わらずコピー出来無いので
手書きで入力するのは手間がかかるので、他の
ウィンドウが持っているテキスト取得機能を
ClipSaver Ver 2.14 から付けてみました。勿論 取得できない時も有るのですが大体そういう場合は
EDIT コントロールで 選択して右クリックメニューでコピーが出来るので問題にはなりません。又
原理上 フォームやコントロールに直接描かれたテキストに対しては
はっきり言って無力です。後 COMBOBOX についてはドロップダウンコンボはテスト出来たのですがそれ以外の
COMBOBOX については ?? です。
ListView コントロールについては対応していません。
02/10 ClipName INF ファイルを加えた為に右クリックコンテキストメニューに
・ClipName
が加わったのは良いのですがここから送られるコマンドラインと送るから送られるコマンドラインとは全く違うのでその対応に多少苦労しました。右クリックコ
ンテキストメニューからはあくまで
一つずつ送りプログラムを立ち上げるのに対して 送るから送られるコマンドラインは
選択したファイル名を 一つのコマンドラインでスペースで区切って送ってくるので右クリックコンテキストメニューからの物は先に立ち上がった
ClipName に自分のコマンドラインファイル名を送るようにしています。従って
送るからのコマンドライン文字制限を受けません。より多数のファイル名を扱えるようになります。その代わり選択したファイルの中に関連図けがされていない
ファイルがあると「指定されたファイルに対して・・・・・・
関連付けて下さい。」 と出たダイアログが出て
そののファイル名は送られて来ません。そのファイルが先頭かいつだけだとなったく何もないのですが。その為そのファイル名はコピーされません。メッセージ
を出してそこで止まってしまいますので
OKを押し続ければ最後にコピーされます。右クリックコンテキストメニューで複数ファイルを選択して
ClipName を起動する方がコマンドラインも異数制限を受けないのでずいぶん多数の名前をコピー出来るようです。
又 検索から複数ファイルを選択した時は 送るのメニューが出ませんが右クリックコンテキストメニューなら此も可能なので便利に使える事も有るでしょう。
[現在の環境] 2010/02/22
自作機 Phenom x 2 550 BE 3.1GHz 十分早いと思います。
Hard Disk SATA x 4 システム用/通常ソフト用/開発用/Tempo 作業用 と別々にしています。
Removal Disk DVD RAM x 2 ドライブのレターが結構多くなっています。
Video nVidia GT240 ( ファンレス ) 最近変えてアイドルでの省エネが気に入っています。
RAM-Disk メモリーを 8Gb 積んで /PAE 領域に 5Gb のRAM-Disk を作り此に pagefile.sys TEMP フォルダー Temporary Internet Files をアサインして 後 何やらの ワークに使用しています。シャットダウンすれば消えてしまうのですが消さなくて良いのがかえって便利です。
Ms Visual Basic 6.0 ランタイムが有り常に常駐しない物は便利だと思いますがあまり使用していません。
Borland C++ ビルダー 4.0 使いやすいとは思いますが小物でもファイルサイズが大きくなってしまうので此を使用した物は公開していません。
Ms C++ 6.0 Ver 2.xx 以降の物は全て此を使用していますが Ms C++ のクラスを使用する気が無いので
(ランタイムとサイズが気に入りません。) 殆どは Windows API を直接呼び出し Window Message
をそのまま受けています。( Version Up が頻繁なのもこの為かも知れません。)
結局 コンパイルが出来れば単なる C でいいのですが Ms C++ 6.0 の統合開発環境が気に入っています。