Speeding!!!!!!!!

- Born to Fight -

主に Microsoft Windows 2000, XP で動作する、プログラマーに便利なツールをつくっています
どのソフトもレジストリは使用しないので、気軽に試用してください

dSprit dSprit

フォルダツリー&ファイルコピー / タイムスタンプ編集

編集画面 編集画面 詳細画面 詳細画面 オプション画面 オプション画面

ダウンロード

dSprit を Vector ライブラリ からダウンロード

詳細

C:\WINNT\system32\dllcache\notepad.exe
C:\WINNT\NOTEPAD.EXE

 ↓ コピー処理実行 (指定した保存先は"C:\保存先")

C:\保存先\WINNT\system32\dllcache\notepad.exe
C:\保存先\WINNT\NOTEPAD.EXE

という具合に、指定したファイルのドライブ名以下のフォルダツリー構造を含めてコピーすることを目的としたソフトです。コマンドプロンプト xcopy コマンドを利用して、バッチファイルを使った確実なコピー処理をします。バッチファイル名にタイムスタンプを挿入することにより、コピー時のログとしてバッチファイルを残すことができます。コピー処理のオプションとして、xcopyのオプションが画面上からそのまま指定できます。

・ 起動オプション [ファイルパス]
SendTo(※) にショートカットを作成しておくと、エクスプローラの「送る」からファイルの絶対パスを入力することができます。
※ C:\Documents and Settings\...\SendTo\

※ダウンロードパッケージに格納してある exclude.txt ファイルには、Visual C++ のプロジェクト用の除外ファイルを記述しています。これを指定した場合、オブジェクトファイルを除いたソースファイルだけのコピーが可能です。

詳細画面では、タイムスタンプの編集、クリップボードへのコピー、ファイルサイズの表示が行なえます。ディレクトリのサイズの表示は、ディレクトリの下のファイルのサイズを計算するのに時間がかかる場合があるため、メニューから指定してサイズを取得します。複数行を選択して、サイズの合計をステータスバーに表示します。

将来

予定ありません。不具合対策を続けて枯らします。

備考

個人的に作者がもっともウェイトを置いて作成しました。開発中のプログラムのソースの一部を退避する際や、ソースを別のバージョンに反映する際など、仕事の都合上もっとも利用するソフトでもあります。

変わった使い方としては、詳細画面を使って(ファイルパスでない)テキストのソーティングや重複削除などにも利用できます。
※文字列がfile:///で始まる場合、これを削除しているので注意する必要があります。

また、詳細画面のタイムスタンプは自動リフレッシュしないため、編集する前にファイルをいくつか登録しておき、本ソフトが覚えているタイムスタンプで上書きすることで、ファイルの編集後にタイムスタンプを編集前のものに戻すという使い方もできます。

更新履歴

version1.24 → 1.25 の修正点
・ 詳細画面の更新処理の見直し(詳細画面遷移時に更新→編集画面で編集後orドラッグ後)
・ 詳細画面にサイズ列を追加、ファイルとディレクトリ(遅い)のサイズ取得方法を別にしました。
・ 詳細画面のリストボックス幅をINIファイルに保存し、次回起動時に復帰するようにしました。
・ 詳細画面で画面サイズ変更時、連動してファイルパス列幅を変えるようにしました。
・ 詳細画面の選択したサイズ合計をステータスバーに表示するタイミング、イベントを修正(1.25v2)。
・ 最小化から復帰した時に詳細画面のリストボックス幅がおかしくなる不具合を修正(1.25v2)。
・ ディレクトリサイズ以外の更新をした時、ディレクトリサイズ表示がおかしくなる不具合を修正(1.25v2)。
・ アイコンを変更しました(1.25v2)。
・ アイコンが一部更新されていない不具合修正(1.25v3)。

version1.23 → 1.24 の修正点
・ メニューから /t にチェックした際、追加オプションにもチェックが表示される不具合を修正。
・ オプション画面に、/d、/exlude 以外の xcopy のオプションのチェックボックスを追加しました。

version1.21v2 → 1.23 の修正点
・ 重複行選択処理時に、処理前のフォーカス行を(重複していないのに)フォーカス&選択する不具合を修正。
・ 保存先をエディットボックス上で編集後、同ダイアログの開閉により入力文字が編集前に戻る不具合を修正。
・ 詳細画面の更新時、またファイルドロップでの更新時に、複数行選択をすべて復帰するようにしました。
・ 更新日時、作成日時の編集にアクセラレータキーを割り付けました。

version1.20 → 1.21 の修正点
・ /s, /e 指定しないでファイルのみコピーした場合に、存在しない変数でコピー処理を出力する不具合を修正。
・ Slash ⇒ Yen 変換する際の Yen の検索に失敗する不具合を修正、file:/// も変換するようにしました。
・ Yen 変換のタイミングをバッチファイル作成時から詳細画面初期化時に移動しました。
・ 詳細画面初期化時のファイル情報取得で少し時間かかるため、経過をステータスバーに表示するようにしました。
・ Enter キーを押した時に INI 書込なしの画面クローズするのを廃止しました(1.21v2)。

version1.10 → 1.20 の修正点
・ ソフト名を dIo から dSprit に変更しました。
・ オプション画面を追加しました。タイムスタンプ指定コピー、除外ファイル指定が可能になりました。
・ 前回起動時のウィンドウサイズ復帰機能を追加しました。
・ 常に手前に表示する機能を追加しました。
・ ウィンドウのアクセラレータキー修正し、前画面、次画面にアクセラレータキーを割り付けました。
・ 詳細画面に遷移した際に、フォーカス行を設定するよう修正しました。
・ INIファイル書込処理がメニュー変更時に行なっていたのを、プログラム終了時に行なうよう修正。
・ オプション画面追加に伴ない、各画面での最小サイズ設定(サイズ変更枠の最小値)を設定しました。
・ フォルダ名終端文字のマルチバイト判定、保存先終端の Yen の検索に失敗する不具合を修正しました。
・ バッチファイルのコマンド、オプションを変数にしました。バッチファイルのサイズが小さくなりました。
・ /s, /e 指定してファイルコピーした場合に、同階層ディレクトリの同名ファイルもコピーする不具合の対策。

version1.00 → 1.10 の修正点
・ メニューバー、ステータスバーを追加しました。
・ タイトルバーに出力していたメッセージをステータスバーに出力するようにしました。
・ 作成ボタン、保存先ボタンを削除し、メニューバーからの機能のみとしました。
・ リストボックスのコンテキストメニューからのウィンドウの切替を削除し、メニューバーから切替のみとしました。
・ 各画面での最小サイズ設定(サイズ変更枠の最小値)を廃止しました。

トップへ戻る

dKill dKill

プロセスの強制終了 / 軽量タスクマネージャ

dKill

ダウンロード

dKill を Vector ライブラリ からダウンロード

詳細

Microsoft Windows XP professional 以外でも、コマンドプロンプト taskkill のように指定したプロセスを強制終了します。
※ PID を指定した強制終了、他のPCのプロセスの強制終了には対応していません。

「プロセスの強制終了」
・ 起動オプション [強制終了したいプロセス名(イメージ名)]
コマンドプロンプト、またはショートカット〜プロパティ〜リンク先などで(例) dKill.exe notepad.exe として起動した場合、プロセス名の一致する全プロセスを強制終了し、dKill を終了します。指定するプロセス名は、拡張子を含めて指定します。

「軽量タスクマネージャ」
起動オプションなしで起動した場合、タスクマネージャライクな動作をします。動作しているプロセスのフルパスを表示するため、タスクマネージャより見やすいと思います。選択したプロセスの終了、優先順位の変更、フルパスのコピーが可能。

将来

「プロセスの強制終了」として絞った方がニーズがありそうなので、機能追加する場合には別ソフトとして開発します。

備考

taskkill が使えない環境で、開発中のプログラムを強制終了する必要があったため作成しました。サクっと開発した割にはダウンロード数がもっとも多いソフトなりました。ソース自体はほとんど Microsoft の TIPS を元につくられています。

更新履歴

version1.01 → 1.02 の修正点
・ プロセス数変更時のリストボックスのリフレッシュ処理の高速化しました。
・ アクセラレータキーを割り付けました。ステータスバーを追加しエラーメッセージなどを出力するように修正。

version1.00 → 1.01 の修正点
・ メモリ使用量の表示を追加しました。また、最小サイズ設定(サイズ変更枠の最小値)を廃止しました。
・ 表示プロセス数をタスクマネージャと同じにしました。
・ "System Idle Process"、"System"の文字列が取得できないため、固定文字列を出力するようにしました。
・ 表面化はしませんが、イメージ名の取得失敗した場合にも、PID、優先度、メモリ使用量を表示できるように修正。
・ 起動直後のソート処理を、(XPにあわせて)イメージ名昇順からPID降順に変更しました。

トップへ戻る

dTm9 dTm9

経過秒数とローカル時刻の相互変換

dTm9

ダウンロード

dTm9 を Vector ライブラリ からダウンロード

詳細

万国標準時刻の 1970 年 1 月 1 日 0:00:00 からの経過秒数と、ローカル時刻(日本)の日付と時刻とに、相互に変換します。+localtime は、万国標準時刻の経過秒数に、ローカル時刻との差分(ロンドン〜日本 の 9 時間差)をプラスします。ちなみに、万国標準時刻の日時に表示しているのは、 tm 構造体(※)です。
※ tm_yday は 1 月 1 日からの日数 (0 〜 365)、tm_wday は日曜からの曜日 (0 〜 6)、tm_isdst は夏時間でない場合 0 となります。

将来

コンボボックスで世界各地のローカル時刻を指定できるようにする。localtime をボタン → コンボボックス+スピンに変更予定。

備考

データベース部分としては経過秒、表示はローカル時刻というプログラム開発時に、デバッグ用途に必要に迫られて開発しました。最初のバージョンは、プロジェクトファイル作成から30分でビルドされたシロモノでした。

更新履歴

version1.00 → 1.01 の修正点
・ 経過秒数 2147451247 以降に変更できない不具合を修正しました。

トップへ戻る

dBst dBst

物理ドライブのディレクトリを仮想ドライブ化

dBst

ダウンロード

Vector ライブラリ 未登録です。
最新はこちら ⇒ dBst version0.10

詳細

コマンドプロンプト SUBST により、指定した物理ドライブのディレクトリを、仮想ドライブに割り当てます。ディレクトリを設定する→仮想ドライブを設定する、でドライブに割り当てます。

・ 起動オプション [/s]
コマンドプロンプト、またはショートカット〜プロパティ〜リンク先などで dBst.exe /s として起動した場合、前回設定したディレクトリのすべてを仮想ドライブに割り当てます。割り当て処理を行なったあとは、プログラムを終了します。PC起動時用にスタートアップに入れて使用する場合にどうぞ。

/s で起動した場合に作成されるバッチファイルのみ、複数ドライブへの割り当て処理(連続して SUBST 処理)を行ないます。PC起動毎に、常に同じ設定の仮想ドライブを割り当てるのでしたら、このバッチファイルを直接スタートアップに入れることをおすすめします。

将来

機能追加の予定はありません。アイコンを変更する予定。

備考

個人的には、普通にバッチファイルを直接編集して実行しているため、もっとも使わないソフトです。いきおいで作った感があります。

トップへ戻る

dMepo dMepo

メモリークリーナー

dMepo

ダウンロード

Vector ライブラリ 未登録です。
最新はこちら ⇒ dMepo version0.10

詳細

一般的なメモリークリーナー処理を行ないます。サクサク動かしたいプログラムを起動する前に実行すると効果的です。物理メモリの合計に対してサイズの1% 〜 99%を指定して解放処理をすることができます。

・ 起動オプション [/s] or [/p]
コマンドプロンプト、またはショートカット〜プロパティ〜リンク先などで指定して、解放処理を行なうことができます。
/s 任意のサイズ (単位はMB)
/p 任意の割合、物理メモリ合計のパーセント を指定します (単位は%) 
例 > dMepo /s 100  (100MBの解放処理します)
例 > dMepo /p 70  (物理メモリの合計の、70パーセントを解放処理します)

将来

機能追加の予定はありません。アイコンを変更する予定。

備考

このソフトも含め、メモリクリーナーと呼ばれる大部分のソフトは、メモリのコンパクション、フラグメント関連の処理は実装されていません。OSの機能として、(例えば自分自身の)物理メモリの使用領域を増やせば、他のプロセスの物理メモリのデータを仮想メモリに移動させる機能があります。つまり、メモリクリーナーと呼ばれる大部分のソフトは、自分自身の物理メモリを使用領域(空のデータ)を増やして、他のプロセスの物理メモリの使用領域を仮想メモリに移動させて、その後に動作させたいソフトのために物理メモリを空けておく、というだけのソフトなのです。本ソフトを含めてこのようなソフトは導入する意味がまったくないと思います。学習用に作ったもっとも使わないソフトのひとつです。

トップへ戻る

dColor dColor

システムカラー変更

dColor_wxp Windows XP の場合 dColor_w2k Windows 2000, NT の場合

ダウンロード

Vector ライブラリ 未登録です。
最新はこちら ⇒ dColor version1.10

詳細

画面のプロパティ〜デザイン画面で変更できる部品の配色情報をまとめて変更します。画面の配色を変更したいとき、配色リストを選択して部品リストを更新します。「現在の配色」を選択しているときだけ、RGB値が変更できます(RGB値は設定ボタンにより部品リストに反映します)。適用ボタンを押すと、部品リストに基づいて画面の配色に反映します。適用ボタンはレジストリを更新しないため、OSを再起動すると適用前の状態となります。レジストリを更新したい場合には、配色リストの「現在の配色」を選択し右クリックで「レジストリに保存」してください。

「適用」 (Ctrl+S)
他のアプリケーションを含め、起動しているすべての画面の配色を選択した配色に変更します。レジストリを更新しないため、OSを再起動すると適用前の状態となります。
※ RGB 値を変更していても設定していなければ適用されません。

「設定」 (Ctrl+V)
部品リストのRGB値を更新します。配色リストで「現在の配色」を選択しているときのみ、設定できます。
※ OS により、設定できる部品数に違いがあります。

「起動時の状態に戻す」 (Esc)
本ソフトを起動したときの配色情報を記憶しており、この状態に戻します。

将来

予定ありません。

備考

あるプログラムを開発していた際、勝手にシステムカラーを変更してしまうため、この対策として作成したソフトです。初期バージョンでは、起動時の配色に戻す機能しかありませんでした。そういう意味ではあまり意味のないソフトでしたので、レジストリ書き込み機能だとか、画面のプロパティで設定できる配色を設定する機能だとかを追加しました。

更新履歴

version1.00 → 1.10 の修正点
・ レジストリに保存できるようにしました。
・ アイコンを変更しました。

トップへ戻る

dReversi dReversi

リバーシゲーム

dReversi

ダウンロード

Vector ライブラリ 未登録です。
最新はこちら ⇒ dReversi version0.30

詳細

8x8、16x16の画面サイズが選択可能です。また、5段階の難易度を選択可能です。

将来

画面サイズを自由に設定する(10x10、8x16など)。

備考

3回ばかり作り直しています。はじめは Microsoft Excel 上の VB マクロとして作成しましたが、このデバッグに不慣れのため挫折しました。 Visual C++ で作成し直して、完成することができましたが、ルーチンが貧相(静的な盤面の評価値で石を置くだけ)なのと、盤がボタン64個固定のためサイズ変更をすることができませんでした。ルーチンを先読みできるように修正し、かつ画面サイズを柔軟にするように作り直して現在のバージョンが完成しました。

更新履歴

version0.10 → 0.30 の修正点
・ マス数によるCPUルーチン切替
・ 背景色をINIファイルから取得して表示するようにしました。
・ キーボードからの入力に対応しました。

トップへ戻る

profile

作者について

ハンドル名 takeit78  伊東剛史 1978.10.15 茨城県ひたちなか市 福島県郡山市
http://www.vector.co.jp/vpack/browse/person/an043145.html

主に Microsoft Visual C++ を使った各種アプリケーションソフトのUI部分に従事しています。

ソフト開発のコンセプトは、高速、安定、シンプルな機能です。カスタマイズ性が高いソフトより、良いセンスでしぼられたシンプルなソフトを好みます。メーラーで言えば、Outlook より nPOP(Q) が好きです。自分の好みの設定にカスタマイズするという行為自体、余計な手間と思っているところもあります。

開発環境は、主に hp nx9110 + メモリ増設1GB + 17インチ液晶 で開発しています。OSはMicrosoft Windows 2000 Professional SP4、ビルドは Microsoft Visual Studio 6.0 Enterprise Edition、MFC、ダイアログベース で作成しています。

連絡先は下記になります。「/」を取り除いたメールアドレスです。
/t/a/k/e/i/t/7/8/@/h/o/t/m/a/i/l/./c/o/./j/p/

トップへ戻る

update history

更新履歴

2006.10.19 HomePage レイアウト修正
2006.05.24 dReversi version 0.30 をアップロード
2006.05.20 dSprit version 1.25v3、 dColor version1.10 をアップロード
2006.05.16 dSprit version 1.25v2 をアップロード
2006.05.15 dSprit version 1.25 をアップロード
2006.05.01 dSprit version 1.24 をアップロード
2006.04.19 dSprit version 1.23 をアップロード
2006.04.08 dReversi version 0.10 をアップロード
2006.04.03 dSprit version 1.21v2 をアップロード
2006.03.31 新規に dColor version1.00 をアップロード
2006.03.29 dSprit version1.21、dKill version1.02 をアップロード
2006.03.27 新規に dMepo version 0.10 をアップロード
2006.03.24 新規に dBst version0.10 をアップロード
2006.03.21 dIo を dSprit に名称変更し、version1.2 をアップロード
2006.03.21 dKill version1.01 をアップロード
2006.03.09 dIo version1.1 をアップロード
2006.02.14 dIo version1.02 をアップロード。カウンタをつけました
2006.01.25 dIo のアドレスが変わりました、dTm9 が登録されました
2006.01.14 dTm9 version1.01 をアップロード
2006.01.11 新規に dTm9 version1.00 をアップロード
2006.01.10 新規に dKill version1.00 をアップロード
2006.01.08 dIo version1.01 をアップロード
2005.11.27 HomePage 新規作成

トップへ戻る

TIPS

技術的なオマケ

TIPSというより、おまけの付録みたいな。開発者向けの技術情報です(Visual C++ 6.0 MFC)。
わかりやすい文書が検索して見つからなかったため、ここに記述しておきます。

マルチバイト文字の判定には _ismbslead、_ismbstrail を使う

ダメ文字は _ismbblead、_ismbbtrail で抽出できますが、引数で指定した1バイトしか判定せず、
上位バイトと下位バイトで有効範囲は一部重複するため、正確な判定結果は得られません。
たとえば、「ん」( 82 F1 )は、_ismbblead、_ismbbtrail では区別できません。
これの上位バイトを判定する際、_ismbbleadでは 82、F1 のどちらも上位バイトとして有効となります。

上位バイトが確定している位置から判定していく _ismbslead、_ismbstrail を使うべきです。
ちなみに関数の引数の型でコンパイルエラーが出る場合、LPVOID で型キャストしてください。

すでにあるマルチバイト文字列の上位/下位バイトを判定する場合に _ismbslead、_ismbstrail 、
バイトからマルチバイト文字列を生成する場合に _ismbblead、_ismbbtrail を使うと考えたほうが良さそうです。
例えば、総当りで文字を生成するとき、そのバイトがマルチバイト文字の上位/下位バイトとして使用可能か?
といった判定に _ismbblead、_ismbbtrail を使うことが考えられます。
_ismbslead、_ismbstrail を高速にするために _ismbblead、_ismbbtrail が存在するわけではないのです(多分)。

検索用キーワード ismbslead、ismbstrail、ismbslead、ismbstrail

ダイアログベース(CDialog)でのステータスバーの作り方

サイズ変更枠で、右端ギリギリまでステータスバーを描画します。コピペ推奨(行頭の全角空白は要修正)。
ヘッダーファイルに CStatusBar m_StatusBar; を定義し、ペインのIDをストリングテーブルに追加。
OnInitDialog から (サイズ変更枠の場合には OnSize からも) 下記関数を実行します。

void CMyClass::OnInit_OnSize_StatusBar()
{
  UINT indicators[] =//※適当なペイン※
  {
    ID_INDICATOR_Pane1st, // ストリングテーブルあたりに定義追加
    ID_INDICATOR_PaneEnd // 同上。ペインを増やす場合、1st と End の間に追加すると良い
  };
  if (m_StatusBar.m_hWnd == NULL)
  {
    if( !m_StatusBar.Create(this) ||
      !m_StatusBar.SetIndicators(indicators, sizeof(indicators) / sizeof(UINT)) )
    {
      MessageBox(_T ("ステータスバーの作成に失敗しました。"));
      return;
    }
  }
  CRect cClient;
  GetClientRect(&cClient);
  int nClWidth = cClient.Width();
  int nPane2 = 120;//※適当なペイン※
  //※サイズ変更枠の場合にペインを画面幅以上にしない※
  if(nClWidth < nPane2 ) //ペインの数を増やす場合、それらの幅の合計が画面幅を超えないよう注意
  {
    nPane2 = nClWidth;
  }
  m_StatusBar.SetPaneInfo(0, 0, SBPS_NORMAL, nClWidth-nPane2);
  m_StatusBar.SetPaneInfo(1, 1, SBPS_STRETCH, nPane2);//最後のペインをストレッチにする
  RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST,
  ID_INDICATOR_PaneEnd);
}

検索用キーワード CStatusBar SetIndicators SetPaneText GetPaneText

トップへ戻る

reference

参考文献

コーディング関連

最適化のすすめ - より速く、より小さく -

¥記号 (※2バイト目に0x5Cを持つ文字(いわゆる「ダメ文字」)一覧)

4GBを越えるファイルサイズの扱い方に関して (※3桁毎カンマ挿入についても)

Win32 API でアプリケーションを列挙する方法

SeDebugPrivilegeを使用して任意のプロセスへのハンドルを取得する方法

メモリーお掃除ソフトを作ろう (※VisualBasic)

Visual C++ を使ってオセロを作ってみよう (※Min-Max法、α-β探索など)

BlueLeaf1336 (※Delphi)

Tips (※Microsoft Visual C++ 6.0)

HTML関連

Another HTML-lint (HTMLの検証)

W3C CSS 検証サービス

Open Web Design

トップへ戻る

counter et cetera

その他

このページは Mozilla Firefox 1.5x, Opera 9.0x, Microsoft Internet Explorer 5.0x, 5.5x, 6.0x で表示確認しています。

Valid HTML 4.01 Transitional Valid CSS!

作者ホームページ一覧へ戻る

[EOF]