2008年03月01日

「Windows Mobileプログラミング徹底理解」買ってきました

ホーミンさんとOffisnailさんがお書きになられた「Windows Mobileプログラミング徹底理解」を買ってきました.休日はこれを読んで勉強するです.
posted by ori at 02:47| Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする

イヤホンマイクの通話スイッチの隠し?機能

イヤホンマイクの通話スイッチに関してですが,隠し?機能があるみたいですね.

HKEY_LOCAL_MACHINE\System\Drivers\BuiltIn\WaveDev\ShConfigにScShotModeというDWORD値を作成して,値を1にセットすると,その機能が有効になります.(変更を反映するにはソフトリセットが必要)

通常,イヤホンマイクの通話ボタンを押すと本体の通話ボタンと同じ動きをしますが,この機能を有効にするとイヤホンマイクの通話ボタンを押下でスクリーンショットを取るようになります.(WS003SHで確認)

何のためにこんな機能を仕込んであるんだろう...
posted by ori at 02:30| Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2008年02月27日

SendLightMailバグってた

SendLightMail v0.04ですが,多分メモリリークしてます.

ソースを改造している人はshphoneClientlibWrapper.cppの
delete m_pInstance;
delete [] m_pInstance;
に直してください.

リークといっても多分3バイトぐらいですし,私のblogで公開しているバイナリを使用している人もほとんどいないと思いますので,修正モジュールはアップしません.

# shphonelib.dllからメッセージで通知されるイベント(送信完了etc)を真面目に調査して下さる方はいないかしら

posted by ori at 22:38| Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2008年02月26日

kicklightmail テンプレート対応お試し版

kicklightmailにテンプレートを指定するオプションを追加しました.

adesでは正常に動作しないようなので,お蔵入りとしました.(2008.02.26 21:05)
バイナリとソースはこちら.

kicklightmail_v001tmpl.zip
kicklightmail_v001tmpl_src.zip


kicklightmail 07000000000 template.txt
のように指定して実行すると,宛先は07000000000,本文にtemplate.txtの中身がセットされた状態で,ライトメールアプリが起動します.
(template.txtの文字コードはShiftJIS)

また,従来通り,宛先のみの指定による起動も可能です.

続きを読む
posted by ori at 00:38| Comment(6) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2008年02月24日

ChooseContact()が動かない

ChooseContact()という,連絡先ダイアログを表示してメールアドレス等を選択するためのAPIがあるんですが,コイツがうまく動いてくれません.

下記のような感じでMSDNのサンプルを動かしてみたんですが,エラーになってしまいます.LastError値は87(ERROR_INVALID_PARAMETER).

#include <pimstore.h>
// ...
HRESULT hr = E_FAIL;
CHOOSECONTACT cc = {0};
cc.cbSize = sizeof (cc);
cc.dwFlags = CCF_RETURNCONTACTNAME | CCF_HIDENEW;
// 連絡先の選択ダイアログを表示する
hr = ChooseContact(&cc);
// 選択した名前を表示する
MessageBox(NULL, cc.bstrContactName, TEXT("Selected Contact"), MB_OK);
// メモリを解放する
SysFreeString(cc.bstrContactName);


メジャーなAPIなんでケアレスミスだと思うんですが何でだろう...

eVC4な環境なのでそのままではChooseContact()は使えないので,pimstore.dllをLoadLibrary(), GetProcAddress()しました.

それがまずいのかと思ってWM5SDKのpimstore.libを引っこ抜いてリンクしてもNGでした.
posted by ori at 20:08| Comment(2) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする

seesaaイマイチですね

blogというものを始めて半年くらいなので何ともいえないのですが,seesaaのblogサービスはイマイチな気がします.

コメント数が異常な数になったり(コメントを追加したのにコメント数が減るって何なのだわ),受けたトラックバックが数週間反映されなかったり...

はてなとかFC2とかの他のサービスはどんな感じなんでしょう?
posted by ori at 19:40| Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2008年02月13日

IrisBrowser

ibis browserの誤字じゃないです.
W-ZERO3ツールMEMOさんのこのエントリからの情報なのですが,IrisBrowserという新しいブラウザが出てきているようです.

早速,私の003SHにインストールしてみましたが,結果はツールMEMOさんの所にも書いてある通り起動しませんでした.Windows Mobile version 6 (Pro, Smartphone)向けらしいので,当たり前といえば当たり前なんですが...

ここで完結しては面白くありません.せっかくだから,無理やり動かしてみます.

とりあえず,起動しない原因は以下の2点にあるようです.

(1) PhoneMakeCall()を使用するためにphone.dllをリンクしているが,w-zero3にはこのDLLがない.
(2) exe, dllのsubsystemが5.02になっているため,WM6以上でないと起動できない.ad[es]ならWM6であるため,この問題は発生しない.

(1)に関しては,dummyのphone.dllをでっちあげてexeを同じディレクトリに置けば良い筈.
(2)は母艦にexeとdllを持ってきて,editbin /subsystem:windowsce,5.01 xxxxxを実行して,subsystemを5.01に変更すればOK.(PEのchecksumが0になっちゃうけどキニシナイ)

上記の2つを行って,IrisBrowserが起動できることは確認しました.

使用したdummyのphone.dllを置いておきます.
ad[es]なら,これをIrisBrowserと同じディレクトリにコピーするだけで,起動できるようになるはずです.

phone_dummy.zip
phone_dummy_src.zip
posted by ori at 00:07| Comment(2) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2008年02月04日

「画像とビデオ」で1つ上のディレクトリに移動

標準の「画像とビデオ」ですが,esやad[es]ではクリアキーで1つ上のディレクトリに移動できるようです.

また,「画像とビデオ」 自分用プチ快適化 を参考にすると,004SHではバックスペースキーで同じ動きをするようです.

しかしながら,私の003SHではバックスペースをいくら押しても1つ上のディレクトリに移動してくれません.私の環境がおかしいのか,AKUの違いによるものなのか切り分けるのも面倒だったので,アプリを作って解決しました.

pimgdirup.zip
pimgdirup_src.zip

「画像とビデオ」が最前面にある時にpimgdirup.exeを実行すると,1つ上にディレクトリに移動します.
pimgdirup.exeは,W-ZERO3 Utility PlusやSortInchKeyなどのキー割り当てソフトを使って,左ソフトキーに割り当てて使用することを想定しています.
posted by ori at 23:51| Comment(4) | TrackBack(1) | 日記 | このブログの読者になる | 更新情報をチェックする

2008年01月01日

あけましておめでとうございます

今年こそWS003/004SHの後継機種が発売されますように
posted by ori at 20:53| Comment(2) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2007年12月22日

受話音量の変更

端末が修理から帰ってきたいうことで,リハビリがてらコードを書いてみました.
W-ZERO3の受話音量を変更するだけのアプリです.

SetPhoneVolume.zip
SetPhoneVolume_src.zip

うん.そうだね.役にたたないね.
その上,shphonelib.dllを叩いているだけなので,技術的にも面白くないね.
posted by ori at 21:14| Comment(7) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする

w-zero3復活

修理に出していたW-ZERO3が戻ってきました.

修理に出した際の説明では,フォーマットでまっさらな状態になる可能性があるとのことだったのですが,実際はフォーマットされずに済んだようです.

というか,Todayを萌え系にしていたので,ウィルコムプラザのおねいさんが私のZERO3を操作している時,とっても羞恥プレイな気分でしたわ.
posted by ori at 17:53| Comment(0) | TrackBack(1) | 日記 | このブログの読者になる | 更新情報をチェックする

2007年12月20日

w-zero3壊れたみたい(続き)

故障したW-ZERO3の件ですが,ウィルコムプラザから修理代の見積もりの連絡がありました.
手数料込みで約9k円とのことです.
ちょっと高いのですが,愛着もある機体ですので,修理をお願いしました.

というわけで,ad[es],004SHに買い換える線は無しです.

ad[es]はhackしがいがあって面白そうなんですが,サイズが中途半端な気がして,いまいち食指が動かないっす.
posted by ori at 22:53| Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2007年12月12日

w-zero3壊れたみたい

突然,w-zero3(003SH)の電源が入らなくなってしまいました.
リセット,バッテリー接点の掃除などやってみたけど,直らず.

修理に出そうと思いますが,10kを超えるようなら他の端末を買うかも.

候補としては,こんな感じ.
・ad[es]
・004SH
・EM-ONEα
・X01T
・X02HT

主な用途がゲーム,動画,Webなので液晶は大きいほうが良いんですよね.
無印003/004の後継機種が発売されればベストなんですが.
posted by ori at 23:25| Comment(3) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2007年11月04日

Tasks拡張うまくいかないね

WM5標準の"仕事"アプリっていまいち使い勝手が悪いですね.
かといって,フリーな代替アプリを探しても見つからず...

じゃあ,標準アプリを拡張してやるべ,とコードを書き始めたけれど,そちらも挫折.

(1) アクションキー長押しのコンテクストメニューの拡張
→ リストビューで選択しているものとは違うOIDが取れちゃう
→ ウボァ('A`)

(2) 進捗状況(終了 or 作業中)を変更するために,編集画面まで行かないと変更できない
→ 右ソフトキーのメニューから簡単に変更できるように
→ 変更はできたけど,5秒ぐらい立たないとリストビューへ反映されない

といった所で止まっています.とりあえず,(2)だけ実装したバイナリとソースを置いておきます.

TasksExt_v001.zip
TasksExt_v001_src.zip

5秒ぐらい立たないとリストビューへ反映されないのはそのままです.
(IPOutlookAppのLogin()にウィンドウハンドルを渡してもダメそう)

posted by ori at 00:23| Comment(3) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2007年10月18日

W-SIMへのファイルの書き込み

W-SIMへのファイルの書き込みはshphonelib.dllのFT_SendFile()でいけると思います.(未確認ですが)
int
FT_SendFile(
  LPWSTR pDestFile,
  LPWSTR pSrcFile,
  unsigned long ulFileSize,
  LPWSTR pLocalTimeStr
)

引数の意味は多分以下の通り.
pDestFile : 書き込み先(W-SIM内)のファイル名
pSrcFile : 書き込み元(W-ZERO3のファイルシステム上)のファイルパス
ulFileSize: 書き込むファイルのサイズ
pLocalTimeStr: 書き込み日時の文字列(書式はYYYYMMDDhhmmss)

例としてはこんな感じ.
FT_SendFile(L"Netsetting.dat", L"\\Temp\\Netsetting.dat", 52, L"20071018013730");

ただ,shphonelib.dllには書き込んだファイルを削除する機能は実装されていないみたいなんで,実験するのが難しいんですよね〜
posted by ori at 01:47| Comment(2) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2007年10月14日

W-SIMからのファイルの取得(うまくいったかも)

W-SIMに保存されているファイルの取得に成功しましたので,テストアプリを公開しておきます.

バイナリとソースはこちら.

WSIMFileGet_v001.zip
WSIMFileGet_v001_src.zip

WSIMFileGet_v002.zip
WSIMFileGet_v002_src.zip

WSIMFileGet Netsetting.dat を実行すると,オンラインサインアップ情報が取得できます.
WSIMFileGet Mytelebook.dat で,電話帳データが取得できると思います.(未確認)

W-SIMに保存されているファイルの一覧が知りたい方は,適当にソースをいじってみてください.

電話帳データの調査もしたいんですけど,WS003SHしか所有していないんで無理なんですよね...

(追記) 2007/10/15 0:32
W-SIM内のファイルリストを表示する機能を追加しました.

(追記2) 2007/10/15 23:00
readme.txtの記載に誤記があったため,v002のアーカイブを差し替えました.
posted by ori at 20:02| Comment(4) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2007年10月12日

W-SIMからのファイルの取得(うまくいかず)

オンラインサインアップを行うと,各種設定値はNetsetting.datというファイルとして,W-SIMへ書き込まれます.

W-SIMへのファイルの読み書きはshphonelib.dllの以下のメンバ関数を使用しているみたいです.

int __cdecl CshphoneClientlib::FT_ProcessBegin(void)
void __cdecl CshphoneClientlib::FT_ProcessEnd(void)
int __cdecl CshphoneClientlib::FT_GetFileList(struct WSIMFileList_TAG *)
int __cdecl CshphoneClientlib::FT_RecvFile(wchar_t const *,wchar_t const *,unsigned long)
int __cdecl CshphoneClientlib::FT_SendFile(wchar_t const *,wchar_t const *,unsigned long,wchar_t const *)

FT_GetFileList()でファイルのリストを取得するところまでは成功したんですが,FT_RecvFile()を呼び出すとアプリが落ちちゃいます.
誰かうまくいっている人はいないかな...


(追記) 2007/10/12 23:44

とりあえず,現在までの解析用テストコードを置いておきます.
FileGet.zip
誰か後を引き継いでくれないかしら.
posted by ori at 01:43| Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2007年10月08日

Today画面からの発着信履歴表示(続き2)

一点書き忘れてました.
es, ad[es]持ちのプログラマな方が見ていたら教えてください.

Today画面で左右のキーを押して発信履歴,着信履歴を表示する際に,電話アプリに何かメッセージが飛んでいっていますか?(WM_USER+???)

メッセージが飛んでいってるのならば,wParamとlParamもついでに教えていただけると有り難いです.
posted by ori at 19:38| Comment(2) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする

Today画面からの発着信履歴表示(続き)

DesktopExplorerWindowをサブクラス化する方法が実現可能かどうか,検証コードを書いてみました.

Today画面で左右のキーを押すことで発信履歴・着信履歴を表示できるようにするアプリです.
es, ad[es]では標準で可能なため,無印003向けとなります.

バイナリとソースはこちら.
tdCallLogHk.zip
tdCallLogHk_src.zip

あくまでも検証用なため,実用にするのは控えたほうが身の為ですよ.

続きを読む
posted by ori at 16:30| Comment(3) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする

Today画面からの発着信履歴表示

esやAd[es]ではToday画面で左右のキーを押すと,発信履歴,着信履歴が表示されるそうです.
これが,技術的にどのようにして実現されているのか,微妙に気になります.

Today画面で左右のキーを押したら,現在選択されているTodayPluginに左右のキーが押されたことが通知され,そのPlugin内でイベントが処理されるのが普通です.

どのTodayPluginが選択されていたとしても,問答無用でキーイベントを横取りし,自前の処理を行う(この場合 履歴の表示)ためには,かなり特殊なことを行う必要があると思われます.

予想としては2つあります.


■ 予想 1.キーボードドライバ側で特殊な処理を入っている

キーボードドライバ(d2keybd.dll, shkeybd.dll)側に以下のような処理が入っている.

 ・左右のキーが押されたとき,Today画面表示中ならば,電話アプリへ履歴の表示を要求.
 ・左右のキーが押されたとき,Today画面表示中でなければ,通常のキーコードを発行.


■ 予想 2. Today画面(DesktopExplorerWindow)のサブクラス化

リモートスパイ++で見ると分かると思いますが,各々のTodayPluginの一行ごとにウィンドウが存在します.
そのウィンドウの親の親の...と遡って,トップレベルウィンドウがDesktopExplorerWindowです.

DesktopExplorerWindowをサブクラス化し,左右のキーが押された・離されたメッセージを独自に処理してしまえば,各子ウィンドウであるTodayPluginへ処理が移らず,希望した内容が実現できます.


多分,予想2.が正解なような気がしますが...

posted by ori at 15:40| Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする