スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

本体機能を作る

今日は仕事を休めたので、家族で市外にある少し遠目の公園に行ってきました。山を公園にしたような感じのところだったので、ずっと坂道だったのと、どういう意図なのか遊具が入り口からかなり遠いところにあるのと、かなり離れた2カ所に分かれていてたどり着くまでに結構歩きました。と言ってもせいぜい行き帰りで3~4Kmなんですが、なにせ運動不足なもので途中から心臓がドキドキ鳴ってました。(^^; でも結構山登り好きなんで、いい汗をかくことが出来ました。(^^)

さて、お忍びリネームの本体の機能を作ってます。っていうか、こっちはかなり簡単でもう結構出来てます。(もう自分のは開発中のものに置き換わってます。)これまで、お忍びリネームを使っていても細かな不満点がいくつかあったので、それを改善するための機能追加を行っています。結構個人的には満足できそうです。前回のは設定をできるだけ少なくっていう目標で作ったんですが、今回はかゆいところに手が届くようにって感じで作ってます。(^^) (というか、自分のかゆいところか。)
あとは設定プログラムですね。今週末の休みに頑張ればかなり先が見えてくる気もしますが、花火見に行きたいってのもあるので分かりません。

一応、自分のことだけじゃなく、以前ユーザーの方からいただいたご要望にお応えして、ファイル名の部分選択の順序をカスタマイズできるようにしようかなーと今のところは思ってます。
開発効率を重視し、機能を増やしつつ、常駐プログラムとして太りすぎないようにというのが今回の目標です。
スポンサーサイト

お忍びツール暫定版完成

お忍びツールの暫定版が完成しました。暫定というのは、設定項目などの検討を後回しにしてあるためです。とりあえずVer.1.0.0のお忍びツールを無効にして、しばらくこの新バージョンを使ってみようと思います。実は(って程でも無いかもしれませんが)、お忍びツールは通常の名前変更操作の拡張部分とは完全に独立していて、単体のDLLだけで動作します。(※Explorerから呼ばれる。)
新バージョンでは、お忍びツールは独立したDLLに分離する予定です。

さて、次は名前変更操作の拡張部分を作るか。

あー、やっぱり1つのプログラムを作るってのは、本当に大変な作業だなーと改めて実感します。まだそれ以外にも、設定プログラム作ったり、テストしたり、ドキュメント作ったり・・・。

お忍びツール全機能仮実装完了

お忍びツールメニューの全機能の仮実装が終わりました。とりあえず動くように作っただけなので、これからコードを見直し、整理していこうと思います。



ファイル名の先頭又は末尾から数字の固まりを削除する機能を追加しました。ハイフンやカッコを含む場合も数字の固まりと見なすようにしたため、たとえばtest_20080726.txtを簡単にtest.txtにリネームすることができます。

また、文字列の除去系は、除去対象がない場合に非表示にしました。そのためだいぶメニューがスッキリしました。リネーム系はCtrlキーを押すことでリネームからリネームコピーに動作が変更されます。プログラム開発等で設定ファイルを複数作っておいて、元の名前にリネームして使用することを想定しています。例えば設定ファイルとしてconfig.datがあったとすると、これをコピーして予めconfig1.dat、config2.datの2バージョンを作成します。あとは必要に応じてconfig1.datまたはconfig2.datをリネームコピー(数字を削除)します。単にコピーして「コピー ~」という名前にして、複数バージョンを作成しても同じ事ができます。
リネームコピーはバックアップにも有用です。たとえば現在の日付や日時を付加して、コピーを作成することが出来ます。この操作はフォルダに対しても有効です。「プログラム開発」というフォルダがあった場合、簡単にマウス操作だけで「プログラム開発_20080726」のようなコピーを作成することが可能です。

さて、最近生活が不規則なので、今日は早めに休もうと思います。

基本動作作成

お忍びツールの基本的な動作ができるようになりました。「~へのショートカットを除去」は、やっぱり今のところ残してあります。後で検討します。

Oshiname11ContextMenu20080726.png

全体的に使ってみると結構便利な感じです。(自分が欲しいものを入れてるので、そりゃそうなんですけど。)いざやろうとすると面倒なことを肩代わりしてくれるって良いですよね。プログラム的には大したこと無いってのも楽でうれしいです。(^^)

あとは、CtrlキーやShiftキーを押したときの変化とか、無効な操作の場合に無効化したり非表示にしたりとかですかね。順番を入れ替えたり、項目の有効・無効の切り替えをできるようにするかどうかとかは後で考えようと思います。それはEXEでやることなので。
日付挿入もただ挿入するだけじゃなく、すでに同じファイル名が合った場合には(2)みたいに付くとさらに便利かもしれませんね。

どこまで設定できるようにするかって難しいんですよね。設定を増やすと便利になる反面、難しくなりますし。バランスが難しいですね。すべて設定可能にするのは、ある意味考えるのを放棄することにも思えますし。

ショートカットファイルへの対応

「お忍びツール。」に「~へのショートカット」を削除する機能を付けようかと思ってたんですが、MSDNで推奨されていなさそう(禁止とまでは行かないと思いますが)なのと、実装がトリッキーになりがちなのが個人的に嫌なのでやめようかと。
この機能は懐かしので「Dさんの名前変更お手伝い。」に実装されていたもので、昔はショートカットをデスクトップなどに作ったりして、「~へのショートカット」って付いているのが嫌だったから作ったんだっけ???
最近は、「お忍びランチャー。」を使ってるし、ショートカットを作ったとしても「~へのショートカット」って付いていた方が分かりやすいって思ってるので、要らないかなーと。

あと、「先頭のみ大文字」というのも使い道がハッキリしないのでやめようと思います。

今回は、Cランタイム使うようにしたおかげで、例外やら標準関数(日付)やらATLの正規表現クラスやらが使えるので、実装が本当に楽です。(^^)
作ってて結構楽しい。

ALPS MD-5000(P)が逝く。

おそらく10年近く頑張ったALPS MD-5000がついに壊れました。起動時のお約束、ウィー、ガガガガッ!の後に、いつもとは違うさらに甲高い音が何度も鳴っていました。蓋を開けて中を見てみると、どうやら紙送り用のローラー周辺のバネを支えるプラスチックがポッキリと折れているようでした。
サポートに電話すると、MD-5000の修理は今年の3月で終了したとのこと。ちょうどここらが潮時だったのかもしれません。

もう数年来、写真印刷等はPX-G920を使っていて、封筒とCDラベルの印刷の時だけMD-5000を使っていました。MD-5000はインクリボンを使用していて、その中にMFインクというものがあり、これを先に印刷することによって用紙の荒さを克服し、高い印刷品質を得ることが出来ました。インクジェットプリンタやレーザープリンタしか見たことがない人がこのプリンタを見ると、何度も用紙が行ったり来たりしてインクが重ねられていく様に驚いたものです。また、当時としてはインクジェットに比較して優れた耐候性や耐水性を持っているのも特徴でした。

MD-1500、MD-5000と使ってきましたが、ついにサヨナラです。
今までありがとう。良いプリンタでした。(T-T)/

転落事件発生。

プログラミングしていて、ふと腕がかゆいことに気がつき、周りを見渡すと1匹の蚊が。数度、手でパチンと攻撃を試みるとどうやら当たった感じ。でも肝心の蚊がいないので探してみると、なんとキーボードのキーとキーの隙間にハマってる!(T-T)
これはマズいとそおっと指でつまもうとしたら、つまめずに中に入っちゃったー!(ToT)
最近、爪を短く保っているのが仇に・・・。orz

正直、虫嫌いなので触るの嫌なんですけど、意味なく勇気を出してみたのが駄目だった。仕方がないのでピンセットを持ち出して引っ張り出そうとするも隙間が狭くて、蚊の脚が抜けたりつぶれたりでキモい・・・。orz
うかつにフーッて吹いたらよけい中に入っちゃうし。orz
もう、この状態ではキーが押せない。orz
仕方がないので、大事なRealforceをガンガンと机に打ち付けてみるも、蚊は出てきません。(俺、粗いな・・・。orz)
最後の手段、エアダスターを吹き付けると、出てきたー!(T-T)/

そんなわけで、今日は、「すべて小文字に」から実装を始めてます。
はぁ~、疲れた。

さてそろそろ中身を決めようか・・・。

だいぶ調査も進んできましたので、ここらで今回改造を思い立った動機を思い出しておこうと思います。以前から気になっていたこととしては、

・名前変更時の細かな操作性の悪さ

があります。さらに仕事でよく使ういくつかの操作を簡単にできないかと考えました。

・ファイル名への日付の挿入
・「コピー~」のファイル名を「コピー~」を除去してコピー
・ファイル名や拡張子の一時的な無効化(微妙にファイル名、拡張子を変える)

そんなわけで今のところ暫定的に考えてみたのが、下のコンテキストメニューです。

Oshiname11_ContextMenu.png

これにShiftキーやCtrlキーで変化を付けようかと考えています。今回は、メニューを編集できるようにしようかとも考えてますが、そのあたりは実際に使ってみてから考えようかと思います。
日付挿入なんかは、通常の名前変更操作からも簡単にできるようにしたいですね。

コンテキストメニュー拡張・事前調査その3

やっぱり調べてみると結構判断に迷うところが多いですねー。ログを出すようにしてみて良かったです。IContextMenu::QueryContextMenuのindexMenuに0が来ていると書きましたが、ショートカットファイルの時には1が来ていました。ショートカットファイルの時には、メニューアイテムを追加すべきでないとヘルプなどには書いてありますが、ショートカットファイルそのものを処理すべきなのか、リンク先のファイルを処理すべきなのか、また対象の切り替え処理はどのように行うべきなのかはなかなか難しいところです。実際に試したことがある人は分かってもらえるかと思いますが。
ネットで探しても情報が少ない上に、必ずしもそれが正しい情報であるとは限らないんですよね。(私の実装方法も同様です。)ヘルプに曖昧な点が多いために、実装方法が個々の判断に委ねられているんですね。クライアントとサーバーが作用する点に関してはきちんと仕様を書いておいて欲しいものです。メニューのセパレータとかね。

さて、今日はIContextMenu::GetCommandStringについて書きます。こいつも簡単ではないです。

「コンテキストメニュー拡張・事前調査その3」の続きを読む

コンテキストメニュー事前調査・その2

今日はIContextMenu::QueryContextMenuについて調べたことを書きます。

「コンテキストメニュー事前調査・その2」の続きを読む

コンテキストメニュー拡張事前調査

ご要望コメントありがとうございます。検討しますね。
実はあんまりだらだら作ってるので、何を改造しようとしていたのか忘れてきてるんですけどね。orz

テキストファイル操作クラスを作ったので、ログを出して動作を確認しながら進めています。

「コンテキストメニュー拡張事前調査」の続きを読む

コンテキストメニュー拡張を調べ始める。

さて、だらだらといろんなことを調べたり悩んだりしているため、なかなか進みませんが、テキストファイル操作のクラスはまずまず納得できるものができあがりました。結局、C標準関数では細かい点が満足できなかったためAPIを使用することにしました。特に気になったのが、C標準関数だとエラーメッセージを日本語で取得できなさそうな点です。エラーは例外で投げることにしたんですが、全部の例外に日本語メッセージを自分で載せるのは嫌だったので、APIを使ってFormatMessageで取得するメッセージを投げることにしました。

で、以前はメモリ操作のクラスを自分で作っていたので、今回も作ろうかとも思いましたが、ATLにいろいろあるのでそれを使おうかと思いとどまりました。やっぱり全部自分で作ろうというのが進まない原因になっているので。

そんなわけで、ようやくシェル拡張に戻りまして、IShellExtInit::InitializeやIContextMenu::QueryContextMenuあたりを調べ始めました。今までよく調べずに使ってましたが、今回は少し検証してから実装を決定しようと思います。気が向いたら気になる点をブログに書こうかと思います。
カレンダー
06 | 2008/07 | 08
- - 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31 - -
カテゴリー
最近の記事
最近のコメント
タグ

カメラ GH2 GH3 

ブログ内検索
月別アーカイブ
RSSフィード
プロフィール
●オンラインソフト作家。しかし長らく活動休止中。
ソフトウェア

●Dさんの長押しIME起動2
●IME+ (仮称)

・Dさんの長押しIME起動。
・Dさんの日本語じゃなきゃイヤン。
・Dさんの名前変更お手伝い。
・Dさんのダイヤルアップ接続お手伝い。
・DさんのWindows終了お手伝い。

・お忍びランチャー。
・お忍びリネーム。
・デジくいっくサーチ!
・Simple Remote
・計算王?

※過去の開発ソフトの一部はリンク先からダウンロードできます。

リンク
FC2カウンター
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。