解像度別にウィンドウの位置/サイズを記憶するアプリを作ってみた

タイトルの通りですが、解像度ごとにウィンドウの配置/サイズを記憶して復元するアプリを作ってみました。

タブレットPCを使ってみて、画面を回転させて解像度を変更させる事が多くなりましたが、

解像度を変更するたびにウィンドウの位置がずれてしまってどうしたもんかなぁと思っていました。

 

これを解決するためのアプリを探していたら、まさにその用途で開発されたものが見つかったんですが、

初回起動時の解像度以外を記憶してくれず、期待する挙動になりませんでした。

そこで、WinAPIの勉強も兼ねて自分で作ってみることにしました。

近いうちにvectorで公開予定ですが、出来立てホヤホヤの成果物を上げておきます。

 

窓の仕切り屋(madomana.zip)

 

適当なところに展開して実行してください。

レジストリなどは一切弄ってないので精神的に安全です。

しかしながらこのソフトは生後二日なので、変な挙動していたりする可能性は十分にあります。

ウィンドウがどこか遠くの世界へいってしまってもどうか怒らないでください

 

アプリの起動後は特別な操作は必要ありません。

タスクバーに常駐してウィンドウの情報を監視し、

解像度が切り替わったときに位置/サイズを更新します。

また、情報は終了時にファイルに出力しているので次回起動時にも位置/サイズは継続されます。

 

アプリ名はとりえず適当に決めましたが、

ついさっき窓☆マネとかいいんじゃね?

って思いましたが露骨に某アニメのパクリですほんとうにありがとうございました。

TabletPCUtility v1.1 のリリース

デジタイザをSAIで使用していると、

一定時間使用しない状態から復帰した時(原因不明)に位置ズレが発生することがあります。

この症状が発生した状態で試しにISDサービスを再起動してみたところ、無事正常の動作に戻りました。

毎回手動でこれをするのは面倒なので、さっそく再起動できる機能を追加してみました。

 

v1.1 変更点

 

機能追加

  • ISDサービスの再起動をサポート

 

修正

  • サービス操作時にコマンドプロンプトが表示されていたのを非表示にした
  • Wacomサービスの起動、停止時にWacom_Tablet.exeの起動状態を確認して待つようにした
  • Wacomサービスの起動、停止時にボタンが有効になっていたのを修正

 

ダウンロード

TabletPCUtility v1.1

 

前回バージョンをつけていなかったですが、前回をv1ということにしてください。

Wacomサービスを操作していると、たまに文字化けしたダイアログが表示されたりしますが、原因が不明です。

おそらくサービスが完全に停止していない状態で再度操作した事が原因だと思います。

そこで今回、プログラムが開始、終了するまで待機するよう修正しましたが、

それでも再現されてしまったので、意味がなかったかもしれません。

(ほかにもプログラムがいくつか起動しているので、すべてを監視する必要があるかも)

とはいえ現状不具合も確認していないし、ダイアログは閉じてしまえば問題ないです。

タブレットPC⇔板タブの切り替えを便利にするプログラムを作ってみた

最近X220tabletを購入しました。(前回の記事でフライングしてるけど)

デスクトップ並みの性能を兼ね備えているので、

ウルトラベースを仲介させてデスクトップPCのように使っています。

 

そんなわけで、普段はintuos4を繋げてお絵かきをしたいわけですが、ここで問題が発生。

タブレットPCのドライバと、板タブのドライバが競合してタブレットPCで筆圧が効かない。

この問題は、このPCに限ったことではなく、そういう仕様のようです。

サービスからTabletServiceWacomを停止させる事で筆圧が効くようになります。

 

この作業を毎回やるのは面倒なので、

バッチ処理で簡単に切り替える方法が手っ取り早いです。

 

X220tabletでお絵かきする際、縦画面にしているんですが(この向きの方が描きやすい)、

パネルが固定されていると縦が非常に狭くなってしまいます。

ので、misc.iniを弄くってパネルを独立させる必要があるんですが、

タブレットPC⇔板タブで切り替える際、毎回設定を弄らなくてはならず、非常に面倒です。

 

そんなわけで、前置きが長かったですが、

この二つの問題を解決するためのソフトを作ってみました。

 

TabletPCUtility.ahk (名前をつけて保存してください)

TabletPCUtility_201108192001

 

AutoHotKeyで製作したので、あらかじめこのソフトを落としておく必要があります。

TabletPCUtility.ahk を AutoHotkey.exe に D&D すれば起動できます。

毎回 D&D するのは面倒な方は(まぁ普通は面倒)、

AutoHotkey.exeのショートカットを作成後、

リンク先に「”…\AutoHotkey.exe” “TabletPCUtility.ahk”」を追加してやれば簡単に起動できます。

 

Wacomサービスが開始されている場合、板タブの筆圧が有効な状態で、

タブレットPCの筆圧が無効になっています。

これを停止させてやるとタブレットPCの筆圧が有効になります。

もちろん、停止させた場合板タブは(実質)使えない状態になるので、

使いたい場合は再度開始してください。

なお、この設定は一時的なもので、再起動後の挙動は弄っていません。

 

そうそう肝心な事を書き忘れていましたが、

本プログラムを使用して発生したいかなる損害に対してm(ry

そういうわけで、「起動したらPCが爆発した」とか言われても責任持てませんのであしからず。

X220 tabletでRawInputControlTestを使う

RawInputControlTestはEP121向けのキーボード入力支援ツールですが、

これをX220 tabletでも使用できないか試してみました。

が、タッチの座標がおかしな事になっていてそのままでは使用できず。

 

このツールはAutoHotkeyというツールを使っており、スクリプトで製作されています。

該当のスクリプトファイルを覗いて見て、なんとかなりそうだったので修正してみる事にしました。

 

今回問題となっている部分は座標の取得のみなので、修正は比較的容易なはずです。

恐らく、HIDのIDが異なっているか、データの取得内容がEP121と異なっているかでしょう。

スクリプト中に記述されていたHIDデバイスの確認ツールで表示されたHIDの総当りと、

座標取得コードを弄る作業でなんとか正しい座標を取得できるようになりました。

 

調査した結果、HIDデバイス指定は問題なく、取得時のデータサイズが異なっているだけでした。

以下が修正箇所です。

-- 修正前 --

434行目から

raw_x := NumGet(RawInputData, RAWINPUTHEADER_Size + 8 + 2, "UShort")

raw_y := NumGet(RawInputData, RAWINPUTHEADER_Size + 8 + 4, "UShort")

-- 修正後 --

raw_x := NumGet(RawInputData, RAWINPUTHEADER_Size + 8 + 5, "UShort")

raw_y := NumGet(RawInputData, RAWINPUTHEADER_Size + 8 + 7, "UShort")

--

EP121より3バイトずらして取得しています。

この手前3バイトには一体なんの情報が入っているんでしょうかね^^;

まぁ、とりあえず使えるようになったので良しとしておきます。

 

しかし、プログラマらしい記事を書いたのって今回でようやく3回目くらいなんじゃないだろうか;

しかも人様の役に立つ情報は今回が初めてかも。

 

※追記

修正対象コードの行位置が間違っていたため修正しました。

デスクトップPCがお亡くなりになる

デスクトップPCはshuttle製のキューブPC(SX58J3)を所有していますが、

先々週の週末の事、電源を入れて10分程度したら突然電源が切れました。

再度電源を入れてもうんともすんとも言わない。

CPUファン自体が回っていないので、これはマザボが逝ったかなぁと思いました。

しかしながら幸いにも、超ギリギリの保証期間内(発生日が7/30、保証期間は8/7まで)だったので

早速サポートに問い合わせることに。週明けには返信が着ました。

電源周りのチェックやCMOSクリアなど行ってもだめな場合、直接弊社に送ってくださいとのこと。

(本来は販売店経由で送るんですが、購入はT-ZONEで、すでに廃業している)

再確認後、やっぱりどうにもなりそうにないのでその日にサポートセンターに送りました。

 

行きの送料は自己負担で、佐川急便で1530円でした。

なお、どこにも異常が見られない場合は帰りの送料も自己負担だそうです。

 

そして今日修理されたものが届いて、そのPCでこの記事を書いていたりします。

原因は電源ユニットで、交換対応でした。

ついでにBIOSの更新もされていました。更新してなかったか(^^;

電源ユニット単体で買ったことがないので相場が分からなくて、

送料で実質ペイしてるんじゃね?と思い、

気になって調べたところ、恐らく同一であろう物が単体で売っていました。

http://kakaku.com/item/K0000237681/

 

最安価格(税込):¥12,480

うはっwたけぇwww超得した気分www

まぁ壊れないのが一番だけど。

急いで送りつけて良かった。

同一箇所の故障については、三ヶ月間保証されるそうです。

このキューブPCって4万程度だったけど、1/4以上が電源ユニットの価格なんですね。

フィード

キーワード検索

最近の記事

最近のコメント

最近のトラックバック

カテゴリ

アーカイブ

ランキング