2006-05-14-01-FEPSwitch version 0.95 beta - project-enigma

2006-05-14-01-FEPSwitch version 0.95 beta

>> Site top >> weblog >> 月別アーカイブ >> 2006年05月のlog >> 2006-05-14-01-FEPSwitch version 0.95 beta

最終更新日付:2014/01/07 18:24:26


FEPSwitch version 0.95 beta

2006 年 05 月 14 日

まぁ、結果的にはこういうものになりましたよ、という話である。

結局、前回のエントリで書いたことには誤りがあった。あるアプリが起動中に別のアプリを起動したとして、そこから元のアプリを明示的に起動する必要はなかったのだ。単純に自分自身を終了させれば、元のアプリが再度起動される。この、「再度起動される」というのが実はクセモノなのだが。

で、ひとまずこの FEPSwitch は、単純に FEP の状態を調べて切り替えを行い、自分自身を終了させる...という小さな小さなアプリケーションとして実装されている。これでやりたかったことはどうにかこうにかできている。しかし、単独アプリであるがゆえの問題点が4つか5つくらい存在する。もしお使いになるのであれば、パッケージに同梱の ReadMe.htm をよく読んでからにしていただきたい。

 

コメント

nowarl - 05/14/2006 09:25:13 PM

丁度、こういう感じに日英切り替えできるものが欲しかったので、早速導入してみました。これだけのことですが、快適になりましたw

EIJ - 05/14/2006 09:49:02 PM

ドキュメントのチェックはしてないのですが、アプリとして実装したということは、以前のエントリで考慮されていた

”一部のアプリでFEP Switch起動前の状態に戻らない”

という問題が発生するのではないかと思います

#一応Palmwareの実装ガイドラインによると元に戻るように実装することが推奨されていますが
#実際にはそうなっていないものもいくつかあります

アプリとして実装する代わりにシステム拡張として実装すれば、起動中のアプリを終了しなくても自分の好きな処理を行わせることができるので、こちらの方が使い勝手が良くなると思われます

POBPatchが非常に似たことをしていますので、もし必要ならソースコード一式を送りますのでご連絡ください

陰郎 - 05/14/2006 10:17:09 PM

> nowarl さん

 ありがとうございます。でも、もうちょっと快適にしたいところです...

> EIJ さん

はい、一部のアプリでFEP Switch起動前の状態に戻らないということは十分発生しうると思います。また、すでにわかっているだけでも、モーダルフォーム上での実行では元に戻りません。

「システム拡張」というのは、要するに HACK ということでしょうか...? 未知の世界です...でも、お言葉に甘えてもよろしいでしょうか? メールさせていただきます...

EIJ - 05/16/2006 12:31:49 AM

ソース送っておきました

定義としてはHackというのはPalmOS4.0以前でHackmasterおよびその互換ソフトウェアようのプラグインのこと指すことが多いです。PalmOS5.0以降、OSの仕組みが大きく変わりHackmasterは動かなくなったのですがOSの機能として一部のAPIをフックできる仕組みが入りました。私個人はこの機能を使ったアプリのことをシステム拡張と呼んでいます

この用語が一般的かどうかは不明です(^^;

#まあ日本人のPalmware開発者もめっきり減ってしまったので
#一般的もなにもあったものではないかもしれませんが、、、

陰郎 - 05/16/2006 12:38:16 AM

> EIJ さん

ソース、確かに受信いたしました。ただいまSDKスタイルのソースを見て目を回しているところです。(汗

まだぱっと見程度なのですが、Notification の登録はコールバック関数ではない形式ですね...で、sysNotifyVirtualCharHandlingEvent ですよね、やっぱり。このあたりで悩み中なのですが、ちょっとよく読んでみます...

EIJ - 05/16/2006 01:29:04 PM

このコードは昔書いたCategoryPopHackというのを適当に改造しただけなので、ちょっと読みにくくてすみません

#会社の昼休みにちょろっと作ったやつなので、、

まず、InstallHackOS5でシステムに自身を登録しています

この登録の時にご指摘のようにコールバックじゃない方をつかってます

コールバックの方を使うとOSのバグが原因で問題が発生することがあるので、それを回避するためです

登録後には全てのイベントがシステムが処理を行う前にPilotMainに渡されるようになります

このときラウンチコードはsysAppLaunchCmdNotifyになり、イベントの内容はcmdPBPに入っています

cmpPBPをSysNotifyParamType*にキャストすると中身を参照できて、あとはイベントに応じて処理を書けばアプリの挙動をかなりの範囲でコントロールできます

陰郎 - 05/16/2006 08:26:23 PM

> コールバックの方を使うとOSのバグが原因で問題が発生することがある

これって、OS 5.0 だけなんでしょうかね...どこかでそう読んだ記憶があるのですが、ひとまず手元の TT5 と TX ではコールバック関数で動いてくれてます。OS のバージョンを確認するか、オプションにするかでどちらでも動くようにしようと画策中です。

ちなみに、sysNotifyVirtualCharHandlingEvent ではうまくいきませんでした。KeyDownEvent が vchrLaunch になってしまい、DIA のどのボタンがタップされたのか分からないんです。だから sysNotifyEventDequedEvent を使用しています...もうちょいです。頑張ります。

EIJ - 05/16/2006 08:54:33 PM

PalmOS5.0のみかどうかははっきり覚えてません(^^;

POBPatchを作ってたときにTreo650その問題が発生したような気がするんですけどTreo650ってOSのバージョンいくつでしたっけ?

#最近Palmをいじる暇がないのでバッテリー切れのまま放置されてます、、、、

keyCodeかmodifierにデータが入ってたりしません? OSは区別できてるはずなのでどこかに識別子が入ってるはずだと思いますが

sysNotifyEventDequedEventでフックできるならそれでもいいのですが、これを使うと全てのイベントをフックしてしまいます。パフォーマンスと安定性の観点から可能なら避けた方が良いと思います

陰郎 - 05/16/2006 09:31:50 PM

Treo は Palm OS 5.4.5 です。

あ、でもアップデートをかけてるな...でも 5.4 であることは間違いなかったと思います。

KeyDownEvent が vchrLaunch に化けてしまうのは、DIA のアイコンをタップしたときだけなんです。それ以外の場合は、ちゃんとボタンを識別できるコードが入ってるんですよね...keyCode にも modifier にもデータは入ってませんでした...(涙

なので、ひとまずは sysNotifyEventDequedEvent で行こうと思っています。少し重くなりますが、方法が判明次第 sysNotifyVirtualCharHandlingEvent に戻します。

ちなみに、コールバック関数を使用するか PilotMain を使うかは、ひとまずオプションで使い分けられるようにします。デフォルトで PilotMain を使うようにし、オプションには Advanced と明記する...と。ヤバいかな?

このページにコメントする

 

このページのタグ

Page tag : Palm

 

 


Copyright(C) 2005-2017 project-enigma.
Generated by CL-PREFAB.