2011年10月アーカイブ

Boot CampとTaskbarCreated

| コメント(0) | トラックバック(0)
4.0は知りませんが、3.xまでのBoot Campはタスクバー再生成の際にアイコンが登録されません。

外部ツールがついでに登録できないかと32ビット版3.2と64ビット版3.3で調べたところ、NOTIFYICONDATAのuIDに0x86を設定することで、他は普通に可能でした。

メッセージを飛ばす相手のウィンドウは、クラス名"Afx:00400000:0"(3.2/32)又は"Afx:000000013FF20000:0"(3.3/64)ですが、2つあるので大きさで判別する必要があります。目的のブツは10x10のものです。

クラス名でなくプロセス名がBootcamp.exe(2.xまではKbdMgr.exe)であるのを確認しても良いでしょう。こちらが参考になります。Bootcamp.exeの在処は、決め打ちでなければプロセス名のフルパスから取るのが正しいですから。

なおアイコンのリソースIDは128、コールバックのメッセージはWM_USER+10です。

exeをLoadLibraryしてLoadIcon(LoadImage)して、Shell_NotifyIconしてFreeLibraryすれば完了です。TerminateProcessして再起動するより行儀の良い再登録が行なえます。

Paint.NETとTWAIN

| コメント(0) | トラックバック(0)
先月末、COMサーバーについて書きました。これが64ビットWindowsにおけるTWAINの話だったのですが、形になりました。

TWAINLocalServer.zip

Paint.NETでTWAINを使うものとして、効果プラグインのTwainableというのが既にありますが、64ビット環境では動作しませんでした。またクリップボードに入れるところまでしか行なわないらしいので、もう一手間かかりました。

こちらはファイルタイプのプラグインとして作ってあり、拡張子pdtwainを開くとTWAINから読み込みます。またアウトプロセスCOMサーバー経由なので、64ビット32ビット問わず動作します。スキャナの選択は通知領域から行ないます。

pdtwain.dllとTWAINLocalServerLib.dllをPaint.NETのFileTypesフォルダにコピーしてください。その上で、TWAINLocalServer.exeを適当な場所にコピーし、
TWAINLocalServer.exe -RegServer
として登録してください(管理者権限が必要)。登録解除は
TWAINLocalServer.exe -UnregServer
です(同じく)。

ベースとして、らんゆうじろう氏のCTWAINManagerを使っています。スキャンのウィンドウとスキャナ選択とを自動で切り替えるため、処理が完了してから行なえるようPostMessageをいくつか追加しました。

...というのが、そもそもTWAINが64ビット非対応というところから始まったものでした。公式TWAINは対応を果たしているのですが、Windows同梱の古い仕様のものは未対応なのです。

AnyCPUマネージドアプリであるPaint.NETから呼ばれるTwainableは、64ビット環境ではアンマネージドDLLとして64ビット版を要求するのですが、TWAINのDLL本体はWindowsフォルダの32ビット版しか存在せず、読もうとして落ちていたわけです。

そこでCOMサーバー。しかし肝心のデータの受け渡しをどうしたものかと試行錯誤をし、結局SAFEARRAYにまで手を付けました。ファイルマッピングでも良いのですが、不慣れなマネージド側の処理が楽になるので、マネージド配列として扱えるSAFEARRAYは好都合だったのです。

ちなみにタスクメモリは32/64の垣根を越えることができませんでした。ハンドルではなく直接アドレスを扱うAPIだからでしょうか。タスクメモリを使わなければデュアルインターフェース/オートメーションが使えるので、これはこれで悪い話ではありませんが。

まだエラー対策が不充分なのと、TWAINのウィンドウが背後に隠れる場合があるので、もう少し改良してからホームページ側で公開します。

iOS 5でメール着信音

| コメント(0) | トラックバック(0)
リマインダーの必要性を感じ、週末を待たずにiOS 5に上げました。

全体的に動作が軽くなった気はします。また、私がMW600を購入したiOS4.3.xの頃は封印されていたようですが、一時期対応していたはずのAVRCP(1.3以降)が再び動作したようで、曲名がばっちり表示されました。

お待ちかね、メール(等)の着信音は拡張子m4rのAACでした。ですので最大30秒制限はあるのかもしれませんが、さすがにメール着信音は数秒で済むでしょう。

これで混雑中で着信しても自分のメールだとわかるようになります。

Ctrl + 1

| コメント(0) | トラックバック(0)
MacBookのBootCamp環境でCtrl+1が利かないなと思っていたのですが、Ctrl無しの全角/半角キーが発行されているのですね。

CtrlがONの状態で、
1 (MAKE)→Ctrl (BRAEK) + 全角/半角 (MAKE)
1 (BREAK)→全角/半角 (BREAK) + Ctrl (MAKE)
が発行されるようです。

ちなみに両方ONの状態でCtrlを先に離すと、
全角/半角 (BREAK) + 1 (MAKE)
のようですね。

USBデバイスに入っているLowerFilterのKeyMagic.sysが行なっていると思われます。。

私にはHIDキーボードUpperFilterの知識が少しあるだけなので、対抗するには全角/半角を検出してCtrl+1を仕込んでやるしかありません。
上記2ストロークが同時に取れれば1に戻すだけで済みますが、果たしてXP/Vista/7で共通の挙動になるかどうか。

ちなみにKeyMagic.sysはUSBのVID/PID判別をしているようなので、仮想環境で自在にテストというわけにもいきません。さてどうしたものか...。

R.I.P. Steve Jobs

| コメント(0) | トラックバック(0)
現職で仕事としてMacBookを使い始めるまで、その後個人でiPodやiPhoneを使い始めるまで、Apple文化を傍目にしか見ていなかったので、今でいうClassic Macの時代の話は直接の経験がほとんどありません。

ですのでMac OS X以降しかわかりませんが、UIへの執念は常に意識させられてきました。オシャレさという外側のAppleにはあまり関心がありませんでしたが、内側のAppleが目指している道は、人間のためのUIの、最先端を示す一つの形であり続けています。

AppleのUIが見た目だけでなく時間軸も織り込んだものだと教えられたのは、2008年のWWDCに参加した時でした。まだCocoaの知識も皆無でしたが、この頃からApple文化というものを意識するようになりました。

そのAppleの創業者の一人、今では魔法使いウォズを差し置いて最大のカリスマとして君臨してきたスティーブ・ジョブズ氏が亡くなりました。

いくつかのニュースサイトが少し前から業績を振り返る記事を書いていましたが、縁起でもないと思いつつも、近いのかなと心の片隅で感じていました。

メディア露出に積極的なあのジョブズ氏が、引退の時に会見の一つも開か(け)なかったというのが、全てを表していたでしょうか。壇上でティム・クック氏と握手でもして、世代交代のセレモニーでも開くのが想像に難くなかったのですが。

CEOを引退してひと月半、享年56。早すぎますが、常人に万倍する業績を挙げたと確信します。願わくばAppleが今後もあんなAppleであり続けますように。

今さらのもの

| コメント(0) | トラックバック(0)
GadgetScrew.pngWindows Vistaのサイドバーガジェットが左にずれていくのを防止するツールを公開しました。
GadgetScrew Ver.0.7

Vistaのサポートが来年春に切れるというのに、あまりにも今さらですが。BusinessとEnterpriseはまだ使うでしょうから、有用でないこともないでしょう。

ガジェットの追加・削除にも追随できるようにしてあります。

名前の元ネタは「モンティ・パイソン」でジョールが法廷に立つシーンです。

TS Demux for D-VHS

| コメント(0) | トラックバック(0)
dvhsdemux.png何となく動作するものができました。ホームページの方で公開しています。
DVHSDemuxer Ver.0.2

Code Projectを参考に、リストビューへの進捗表示を組み込んであります。

するとカスタムドローを使うので、ついでにパス表示にPathCompactPath APIを使うことができました。

なおtsdemuxerベースなのでGPLになっています。
1

アーカイブ

ウェブページ

Powered by Movable Type 5.2.13

ホームページ