27 3月

Tascher Ver.1.62公開

マウスの移動とホイールの回転やMigemoインクリメンタルサーチでウインドウを切り替えるTascher Ver.1.62を公開しました。

○Ver.1.62 – 2017/03/27
・タスクバーへのアイコン登録に失敗すると操作ができなくなる不具合を修正。
・Migemo検索において特殊記号「[」「]」「~」でもマッチできるように。
・ウインドウリストのフレームを非表示にできない不具合を修正。
・Ver.1.61までの隠し設定を設定ダイアログの「高度な設定」タブから編集できるように。
・[表示方法]-[マウスの移動]に「上」「左」「右」「下」「マウスホイール回転時のみ」を追加。
・「restore」をShowWindow(SW_RESTORE)ではなくPostMessage(WM_SYSCOMMAND,SC_RESTORE)で行うように
・中断しているUWPアプリを列挙しないように。
・UWPアプリのアイコン表示やファイル名取得に対応。(Windows 10に対応)
・ウインドウのサムネイル表示ができるように。
・ウインドウリスト非表示時に関係のないウインドウに切り替わってしまう不具合を今度こそ修正。

ストアアプリ(UWPアプリ)の列挙やアイコン取得に対応しました。
以下、Note.txtの内容掲載。
《UWPアプリ対応メモいろいろ》

  • 中断かつタスクバーに表示されていないUWPアプリ(「設定」、「ストア」、「フォト」等々)を弾くため、
    1. WS_EX_NOREDIRECTIONBITMAPの有無でUWPアプリか確認。
    2. DwmGetWindowAttribute(DWMWA_CLOAKED)でFALSEを返すウインドウのみを列挙。
  • ↑で列挙されるウインドウはクラス名「ApplicationFrameWindow」、プロセス名は「ApplicationFrameHost.exe」とUWPアプリ共通なので、
    FindWindowEx(hWnd,NULL,”Windows.UI.Core.CoreWindow”,NULL)
    で取得したウインドウハンドルを利用し個別のプロセスを操作。
  • UWPアプリが最小化されている場合、「Windows.UI.Core.CoreWindow」は「ApplicationFrameWindow」以下ではなくトップレベルに存在するため、
    1. トップレベルの「Windows.UI.Core.CoreWindow」を列挙。
    2. ↑のウインドウタイトルを含む「ApplicationFrameWindow」を親とする。

    という処理に。
    ただ、これだと一部UWPアプリに対応出来ないと思われます。

  • UWPアプリのアイコンはSendMessage(WM_GETICON)やGetClassLongPtr(GCLP_HICON)で取得することができません。
    アイコン(HICON)取得方法は以下の通り。
    1. ↑で取得した「Windows.UI.Core.CoreWindow」のウインドウハンドルからGetWindowThreadProcessId()でプロセスIDを取得。
    2. OpenProcess(PROCESS_QUERY_LIMITED_INFORMATION)で開く。
    3. GetPackageFullName()でパッケージ名取得。
    4. GetPackagePathByFullName()でUWPアプリのディレクトリを取得。
    5. PackageIdFromFullName()でパッケージIDを取得。
    6. UWPアプリのディレクトリにある「AppxManifest.xml」をMSXMLで開く。
    7. Square44x44Logoからロゴのパスを取得。(Windows 8.1ならSquare30x30Logo、Windows 8ならSmallLogoらしい。未確認。)
      (Microsoft Edgeなら”Assets\MicrosoftEdgeSquare44x44.png”が取得出来ました。)
    8. BackgroundColorから背景色を取得。
    9. “@{パッケージ名?ms-resource://パッケージID/Files/ロゴのパス}”をSHLoadIndirectString()に投げ、ロゴ用PNGファイルをパスを取得。
    10. Gdiplus::Bitmap()でロゴを開く。
    11. 表示用アイコンのサイズでGdiplus::Bitmapを作成し、Gdiplus::Graphics()で開き、FillRectangle(BackgroundColor)で塗りつぶす。
    12. 読み込んだロゴをDrawImage()で描画し、GetHICON()でHICONを取得。
  • 上記は全てWindows 10で確認しました。Windows 8/8.1で動作するかは不明です。

サムネイルの表示機能なんかも実装してみました。
Windows10導入と同時にXPが故障したため、XPでは動作を確認していません。

21 4月

Tascher Ver.1.61公開

マウスの移動とホイールの回転やMigemoインクリメンタルサーチでウインドウを切り替えるTascher Ver.1.61を公開しました。

○Ver.1.61 – 2016/04/21
・アイコンの取得をリスト表示時のみに限定する設定[ListView]CacheIconを追加。
・ドラッグ時のみマウスホバーを有効にする設定[ListView]DragMouseHoverを追加。
・ドラッグ時のみタイムアウトを有効にする設定[ListView]DragTimeOutを追加。
・コマンドメニューで設定が有効ならばチェックを付けるように。
・ウインドウリスト非表示時に関係のないウインドウに切り替わってしまう不具合を修正。
・不透明度が255でない場合に限り、WS_EX_LAYEREDを付加するように。
・ウインドウ切り替え時に落ちる場合がある不具合を修正。
・アイテム数が多い場合にウインドウリスト下部に余白が発生していた不具合を修正。
・デフォルトでウインドウリストにフレームを表示するように。
・ウインドウリストから除外するファイル名を指定する設定[Exclude]FileNameを追加。
・インクリメンタルサーチの結果、選択していたウインドウが絞り込み対象外となる場合、先頭ではなく順序が近いウインドウを選択するように。
・Migemo「デフォルトで有効」を「小文字入力で有効」に名称変更。
・Migemo「常に有効」を追加。

細かい不具合修正がメインです。
相変わらずウインドウ切り替え処理は安定しません^q^
自己解凍ファイルをインストーラに変更しました。
アップデートが少し楽に…?

Tascher161ss

29 3月

Tascher Ver.1.60公開

マウスの移動とホイールの回転やMigemoインクリメンタルサーチでウインドウを切り替えるTascher Ver.1.60を公開しました。

○Ver.1.60 – 2016/03/29
・インクリメンタルサーチ中、選択しているウインドウがリストにある限り選択し続けるように。
・「候補のウインドウが1つなら確定」で切り替えるまでの時間を指定できるように。(Special Thanks!:hokorobi様)
・「close」「restore」等で処理後もTascherがフォーカスを保持したままになる不具合を修正。
・メニュー表示中にホットキーを押下するとメニューが残ったままになる不具合を修正。
・リスト外アイテムのウインドウタイトルがインクリメンタルサーチの検索対象とならないことがある不具合を修正。
・Migemo検索の対象をリスト内のウインドウに限定するように。
・最小化されているウインドウに切り替える場合にまず元の大きさに戻すように。
・インクリメンタルサーチ「あいまい検索」機能、コマンド「flexmatch」(あいまい検索)を追加。
・設定項目[IncrementalSearch]ForwardMatchをMatchModeに変更。
・コマンド「uniquewindow」(候補が1つなら切り替えする/しない)を追加。
・透過PNGや透過GIFを背景画像として使用できるように。
・「背景画像」の「明るさ」を「不透明度」に変更。
・設定項目[Background]Colorを廃止。
・「背景画像」のオフセットを相対値ではなく座標値で指定するように。
・アイテム数が多い場合に、背景画像が一瞬スクロールされてしまう不具合を修正。

Tascher160ss

背景画像はまがりひろあき先生に描いていただいた、せせりちゃんです。

  

続きを読む

16 11月

Vector新着ソフトレビュー「Tascher -Task Switcher-」

Vector 新着ソフトレビュー 「Tascher -Task Switcher-」 – マウスでもキーボードでも快適に操作できる、インクリメンタルサーチ機能搭載のタスクスイッチャ

マウスの移動とホイールの回転やMigemoインクリメンタルサーチでウインドウを切り替えるTascherについてのレビューを書いていただきました。

まさかあのVectorのソフトレビューに掲載していただけるとは…これ程嬉しいことはありません!!!!

#今回のレビュー掲載にあたり、Vectorの中の人様には大変お世話になりました。この場を借りて御礼申し上げます。

万人におすすめできるようなソフトウェアではありませんが、少しでも皆様のお役に立つことができれば幸いです。

10 11月

Tascher Ver.1.59公開

マウスの移動とホイールの回転やMigemoインクリメンタルサーチでウインドウを切り替えるTascher Ver.1.59を公開しました。

○Ver.1.59 – 2015/11/10
・ドラッグしつつウインドウリストを表示させると、ちらつく不具合を修正。
・ハングしているプログラムがある場合、ウインドウリストの表示が遅くなったり、フリーズする不具合を修正。
・ウインドウリスト表示時にカーソルが移動しない不具合を修正。
・「デザイン」タブから「サンプル」を削除。
・「背景画像」を「全般」タブから「デザイン」タブに移動。
・背景画像「大きさ」オプションを追加。
・列挙するウインドウが多い場合、壁紙が正しく表示されない不具合を修正。
・プロセスツリーに親子関係のないプロセスを列挙していた不具合を修正。
・列挙できるウインドウ数の制限を撤廃。
・PNGファイルを背景画像として使用できるように。
・動作「マウスホバーで選択」オプションを追加。ドラッグ中は自動的に有効になります。
・動作「タイムアウトで確定」オプションを追加。ドラッグ中は自動的に有効になります。

Tascher159ss

背景画像はシルヴィちゃん

 
 

プロセスツリーに親子関係のないプロセスを列挙していた不具合

について。

TascherではCreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0)/Process32First()/Process32Next()を使用し、プロセスリストを取得、PROCESSENTRY32のth32ParentProcessIDを参考に、親子関係を判断しています。
ところが、th32ParentProcessIDの値が再利用(他の新規プロセスに割り当て)されることがあり、全く関係のないプロセスを親と判断してしまう不具合がありました。
そこで、Ver.1.59ではGetProcessTimes()を用い、親子(推定)プロセスの作成時間を取得し、CompareFileTime(parent,child)==1であれば親子でないと判断しています。

(151111)以下の機能を追加したバージョンに差し替えました。

・動作「マウスホバーで選択」オプションを追加。ドラッグ中は自動的に有効になります。
・動作「タイムアウトで確定」オプションを追加。ドラッグ中は自動的に有効になります。

広告