HOME  >  2013/11

Migemize Windows 0.5.15.1 公開

設定ウィンドウを追加して、 エディタを使わずカスタマイズできるようになりました。
ダウンロードはこちらから

設定ウィンドウの表示方法

タスクトレイアイコンを右クリック→「設定」をクリック

旧バージョンを使用していた方へ

旧バージョンでフォント、フォントサイズを変更していた方は、
お手数ですが設定ウィンドウで再設定してください。それ以外の設定はそのまま引き継ぎできます。

設定ウィンドウのスクリーンショット

mw_SettingForm.jpg

Version.0.5.15.1

  • 設定ファイル編集ウィンドウ追加
  • 自動で隠す設定のウィンドウが隠れたときに検索が自動で終了するよう修正
スポンサーサイト



2013/11/24 | カテゴリ:ソフトウェア開発 | トラックバック(0) | コメント(0)

設定、オプション、プロパティ画面の作成

今、公開しているソフトウェアに設定画面をつけようとして、
いろいろとどんな UI にするかを試してます。
今の最有力候補がこんな感じです↓
settingform.jpg
雑感
なんだかんだで、既存のコンポーネントをうまく使い倒したほうがやりやすい……。
PropertyGrid だなんて初めてつかったけど、これは面白い。
Visual Studio 以外で使われてるところをあまり見たことないけどなんでだろ。
みやすさ、わかりやすさとかその辺りの問題かな。
PropertyGrid で値を True, False で設定するより、
チェックボックスの on/off の方がわかりやすいとかそんなんかな。
なんだか気に入ってしまった PropertyGrid。
2013/11/22 | カテゴリ:プログラミング | トラックバック(0) | コメント(0)

Hit a Hint for Windows 0.2.7.4 公開

次の変更が若干大きくて時間がかかりそうなので、一先ず現状で把握している不具合を修正しました。
ダウンロードはこちらから

Version.0.2.7.4

  • グローバルフック解放処理の不正を修正
  • 一部パフォーマンス改善
2013/11/19 | カテゴリ:ソフトウェア開発 | トラックバック(0) | コメント(0)

Migemize Windows 0.4.13.0 公開

前回「ライブラリ以外の特殊フォルダならいけるかも。」とかいっていましたが、
ライブラリ内の検索に対応しました。そのかわり他の特殊フォルダが検索できないままに……。
ダウンロードはこちらから

Version.0.4.13.0

  • エクスプローラ上での使用で、ライブラリ内の検索に対応
  • デスクトップ上の検索に対応

現状で検索できないのは下記の通り。

検索できないフォルダ

エクスプローラ上で使用する際、下記フォルダ直下では動作しません。
※サブフォルダ内では動作します。
  • お気に入り内の"最近表示した場所"直下
  • "コンピューター"直下
  • "ごみ箱"直下

一部検索できないフォルダ

エクスプローラ上で使用する際、下記フォルダ直下では一部ファイルが検索できません。
  • お気に入り内の"デスクトップ"直下(システムフォルダーのみ検索できない)

めも

しらべたことをめも。自分のマシンで挙動を確認したところあってそう。
ただし公式に明言されているのを発見できず。
  1. 最近表示した場所の正体
  2. "C:\Users\[ユーザー名]\AppData\Roaming\Microsoft\Windows\最近使った項目"内に存在するフォルダへのショートカットのみ表示されるっぽい。
  3. ごみ箱
  4. Vista 以降だと、"C:\$Recycle.bin\"内にユーザー毎にフォルダが作成されて管理されている。
    ただし、その内部でファイル名は変更されてしまう。
    たとえば、memo.txt をごみ箱につっこむと、$R8JHLHI.txt($R で始まる名前) に変わってしまう。
    同時に元あった場所等が記載されるバイナリファイル $I8JHLHI.txt($I で始まる名前) が作られる。
2013/11/17 | カテゴリ:ソフトウェア開発 | トラックバック(0) | コメント(0)

Migemize Windows 0.3.12.1 公開

ごちゃっとしてきたので全体的に処理を見直しました。
その際にいろいろと思いついたこともあって、
エクスプローラ上での使用時のパフォーマンスがかなり改善しています。
(次の候補、前の候補の選択の処理が特に。)
ダウンロードはこちらから

Version.0.3.12.1

  • 全体的にパフォーマンス改善(エクスプローラ上での使用時の処理を主に改善)

メモ

いまだにライブラリ等の特殊なフォルダ内の検索ができない。
"ライブラリ\ドキュメント"とかアドレスを受け取って
実アドレスである "C:\Users\hoge\Documents" に変換する方法がわからない。

アドレスの先頭が"ライブラリ"だったら Libraries フォルダを見に行って、
その中の *.library-ms と desktop.ini 読み込んで……とかやればできるんだろうけど。
汎用性がなさすぎで、他の特殊なフォルダの"ごみ箱"とかはどうするの?っていう話になっちゃう。

特殊フォルダをひとつひとつ調べていくしかないのかな。
この記事書いてて、いい方法思いついた。ライブラリ以外の特殊フォルダならいけるかも。
ライブラリだけはとりあえず放置かな……。

2013/11/14 | カテゴリ:ソフトウェア開発 | トラックバック(0) | コメント(0)

Migemize Windows 0.2.10.6 公開

今回は、エクスプローラ上での使用時のバグフィックスがメインです。
ダウンロードはこちらから

Version.0.2.10.6

  • エクスプローラ上での使用で、パスに空白が入っていた場合検索できなくなっていたのを修正
  • エクスプローラ上での使用で、Migemo の検索結果が複数あるとき、
    ファイルの選択がまれにおかしくなっていたのを修正
  • グローバルフック解放処理の不正を修正
  • パフォーマンス改善
2013/11/12 | カテゴリ:ソフトウェア開発 | トラックバック(0) | コメント(0)

64bit で使用する Windows Automation API のパフォーマンス

Hit a Hint for Windows の処理速度改善を色々やっていて気になったところをメモ。

64bit Windows 上 での Windows Automation API のパフォーマンスについて

64bit プロセス上で Windows Automation API を使用した場合
32bit で動作しているソフトウェアに対してのレスポンスが悪い。

32bit プロセス上 (WOW64上) で Windows Automation API を使用した場合
64bit で動作しているソフトウェアに対してのレスポンスが悪い。

ソフトウェアによっては 100ms で終わっていた処理が 400ms かかる。
WOW64 のオーバーヘッドなのかなと思ったけどそれだけじゃなさそうで、
API 内部で Exception が投げられまくるときがあるのも原因だと思われる。
「クラスが登録されていません。」という Exception を投げられるときがあって、
この場合、レスポンスが悪くなるのは納得できるが、
処理上必要な情報は取得できているので Exception を投げている意味がわからない。
64bit プロセス上では 32bit の COM オブジェクトが見えないから
Exception 投げるのはまだ納得できるのだけど。。。
COM オブジェクトとれなかったら別の方法で情報取得するように API 内部で処理してるとか??
実際、 API 外部ではその Exception を catch できないし。

Exception 対策に 32bit の COM オブジェクトを 64bit 環境で使えるようにする方法もみつけたけれど、
これはレジストリを操作しなきゃならないので今回の場合は微妙。
一応リンクを。
Using a 32bit COM object in a 64bit environment

考えるのも調べるのも面倒になってきた。
何も考えずに解決するには 64bit 上のプロセスに対しては 64bit 上で、
WOW64 上のプロセスに対しては WOW64 上で Windows Automation API 動かすとかすればいいのかな。
単純に 64bit プロセスと 32bit プロセス両方立ち上げてそれぞれの環境内で処理すればいいのか。
わかりやすいし、割と自然なやり方のような気がしてきた。
この方向で改善してみようかな。
2013/11/10 | カテゴリ:プログラミング | トラックバック(0) | コメント(0)

C# で Windows タスクスケジューラを操作するライブラリの紹介

自分で使ってみて便利だったので紹介します。
タスクスケジューラ 1.0、 2.0 に対応した ITaskScheduler(COM) のラッパーです。
Task Scheduler Managed Wrapper

特徴

  • 新規タスクの追加、既存タスクの削除と取得が可能
  • Windows 98 以降の OS で使用可能
  • C# 以外でも .NET なら別の言語でも使用可能

簡単な使い方

プロジェクトの参照にダウンロードした Microsoft.Win32.TaskScheduler.dll を追加してください。
3日に1度 notepad.exe を起動するタスク "Memo" を追加する場合は以下のようにします。

using System;
using Microsoft.Win32.TaskScheduler;
 
class Program
{
   static void Main(string[] args)
   {
      new TaskService().AddTask("Memo", new DailyTrigger { DaysInterval = 3 }, new ExecAction("notepad.exe", null, null));
   }
}

タスクの起動条件はクラス化されて、いろいろと用意されています。(DailyTrigger, BootTrigger 等)
その中から適切なものを選択してオプションを設定してあげるだけで起動条件は設定できます。
詳細は、ドキュメントがあるのでそちらをご覧ください。
サンプルが豊富なので理解しやすいと思います。

注意

  • System.Threading.Tasks 名前空間も使用している場合、 一部クラス名が競合する (Task とか)
  • OS のバージョンによって使用できるクラス、メンバが限られる
    (このサンプルを見ると使用可不可がわかりやすいと思います。)

2013/11/06 | カテゴリ:プログラミング | トラックバック(0) | コメント(0)

Hit a Hint for Windows 0.2.5.2 公開

Migemize Windows にひきつづき、ログオン時に自動起動するオプションを追加しました。
タスクトレイのアイコンを右クリックして、「ログオン時に自動起動する」をクリックしてください。
ダウンロードはこちらから

Version.0.2.5.2

  • ログオン時に自動的に起動するオプションを追加
  • 多言語対応(日本語、英語)
  • タスクバー操作モード時の Deactivate 時の処理を修正

そのうち使用したライブラリの紹介でもしようかなと思います。

2013/11/02 | カテゴリ:ソフトウェア開発 | トラックバック(0) | コメント(0)
外部リンク

カンパのお願い
公開しているソフトウェアはフリーウェアなので無料でご利用いただけます。 気に入ってくださった方は、Amazon でお買い物をする際に下記のリンクを経由して頂ければ励みになります。

検索BOX・タグ一覧