2025 02,02 17:06 |
|
2007 01,21 21:04 |
|
コメント |
サスペンド状態から自動で復旧しての定期更新機能って出来るようになりませんか?
【2007/01/2201:04】||ssk#5496ba7319[ EDIT? ]
|
返事が遅くなりすみません。
検討して見ます。 私の知らないAPIなので調査が必要です。 Netの接続とか起き上がって直ぐ使えないでしょうからIPアドレスが確定するまで待つか、やみくもに自動ダイヤルアップするしかないのかな?。。。 ケイティ@出張中のホテル |
検討ありがとうございます。
中々仕事中株価の確認が難しいのでこの機能は是非とも欲しいです。期待して待っています。 【2007/01/2820:11】||ssk#5496ba7319[ EDIT? ]
|
>私の知らないAPIなので調査が必要です。
CeRunAppAtTimeとSetSystemPowerStateで目覚まし時計のように電源断(Suspend)状態から起き上がってくる事が確認できました。 ところで確認ですが、欲しいのは 目覚まし時計のように時間を設定して、StockPriceは終了していても設定時間になると起き上がって更新するという機能でしょうか? それとも、今ある機能の自動更新を設定しておいて、外部電源をつながない状態で放置しておくと電源断(Suspend)しますから、その状態で次の更新時間が来るとStockPriceが起き上がり更新するという機能でしょうか? W-ZERO3のような携帯の場合は電源断しないでしょうから、前者なのかな? お願いですから両方欲しいとか言わないで下さいね。。。 |
お世話になります。
確認の件ですが上記の時間指定のほうが自由度が高くなりますのでこちらを検討お願いします。ただ時間指定を複数設定できない場合(5個ぐらい希望)は下記のような自動更新の連動の方が良いかと思います。 ちなみに所有機器はZero3ですが、電源断(Suspend)でも着信はしますので普段は 電源断(Suspend)しています。要望ばかりで迷惑をお掛けしてすみません。お気持ちだけですが開発料としてアマゾンのリンクからしばらく買わさせていただくことにします。よろしくお願いします。 【2007/02/1115:23】||ssk#5496ba7319[ EDIT? ]
|
>確認の件ですが上記の時間指定のほうが自由度が高くなりますのでこちらを検討お願いします。
了解しました。 >(5個ぐらい希望) 最初は1個でリリースさせてください。 2個まで増やす予定でしたが、5個ですか。。。かなり工夫が必要なのでこちらは時間を下さい。 >アマゾンのリンクから いえいえお気持ちだけで結構です。 便利に使わせて頂いています、とかこんなアイデアはどうですか、といったレスポンスを励みにやっています。 横に貼り付けている時計とかアフェリエイトは見てくれだけです。 単に目新しい一通りの事はやっておきたいという見栄だけで貼り付けています。 今回のリクエストが無ければ新しいAPIについての知識も増えないままでした。私にとってもう十分な報酬を頂いていますので、それ以上の事はご辞退させて頂きます。 1個での自動起動更新はもう1日、2日でV1.7.0として出せると思っていますが、起き上がった時にすでにStockPriceが居た時のハンドリングに時間がかかるとリリースが遅れそうです。 ケイティ@出張先のホテル |
初めまして。
CeRunAppAtTimeをググっていて到着しました。とても興味があるのですが、ソースを拝見させていただくわけにいかないでしょうか? よろしくご検討くださいませ。 |
現状のStockPrice V1.7.1のソースなのでCeRunAppAtTimeのSampleとしては不向きだと思いますが。。。
/*********************************************************************** * * FUNCTION: * SetWakeUpProc * * PURPOSE: * Set WakeUp from suspend. * * Globals: * g_szExecFileName: Full path name of StockPrice. * * g_bSetRunApp[0:7]: AutoPowerOn entry * b0: Sun b1: Mon: b2: Tue b3: Wed b4: Thu b5:Fri b6: Fri b7: AUTOPWRON * * g_uPwrOnTime[0:7]: AutoPowerOn time in minutes. * 0 -> 23*60 + 59 (0:00 - 23:59) * ***********************************************************************/ void SetWakeUpProc(HWND hwnd) { SYSTEMTIME stm; FILETIME ftm; DWORD dwDayOfWeek, dwIndex, dwMinutes, dwDays; BOOL bResult; //TCHAR szBuf[128]; for (dwIndex = 0; dwIndex < MAXAUTOPWRON; dwIndex++) bResult |= g_bSetRunApp[dwIndex]; if (bResult & AUTOPWRON) { // If AutoPowerOn entry exists. memset(&stm, 0, sizeof(stm)); GetLocalTime(&stm); // What time is it now? dwIndex = 0; // First AutoPowerOn entry. if (g_bSetRunApp[dwIndex] & (1 << stm.wDayOfWeek)) { // If AutoPowerOn entry exists Today. dwMinutes = LOWORD(g_uPwrOnTime[0]); // Time of First AutoPowerOn entry. if ((DWORD)(stm.wHour * 60 + stm.wMinute) < dwMinutes) { // Specified time is not yet coming (Future) stm.wHour = (WORD)dwMinutes/60; stm.wMinute = (WORD)dwMinutes%60; //wsprintf(szBuf, L"Auto Power-On : [%4d/%02d/%02d %02d:%02d", stm.wYear, stm.wMonth, stm.wDay, stm.wHour, stm.wMinute); //MessageBox(g_hWndMain, szBuf, g_szTitle, MB_OK); if (!(bResult = CeRunAppAtTime(g_szExecFileName, &stm))) { MessageBox(hwnd, L"CeRunAppAtTime Error", g_szTitle, MB_OK); } return; } } // Check Next day and later. dwDayOfWeek = (++stm.wDayOfWeek)%7; dwMinutes = LOWORD(g_uPwrOnTime[0]); // Time of First AutoPowerOn entry. for (dwDays = 1; dwDays <= 7; ) { if (g_bSetRunApp[dwIndex] & (1 << dwDayOfWeek)) { stm.wDay += (WORD)dwDays; stm.wHour = (WORD)dwMinutes/60; stm.wMinute = (WORD)dwMinutes%60; memset(&ftm, 0, sizeof(ftm)); SystemTimeToFileTime(&stm, &ftm); FileTimeToSystemTime(&ftm, &stm); //wsprintf(szBuf, L"Auto Power-On : [%4d/%02d/%02d %02d:%02d", stm.wYear, stm.wMonth, stm.wDay, stm.wHour, stm.wMinute); //MessageBox(g_hWndMain, szBuf, g_szTitle, MB_OK); if (!(bResult = CeRunAppAtTime(g_szExecFileName, &stm))) { MessageBox(hwnd, L"CeRunAppAtTime Error", g_szTitle, MB_OK); } } dwDays++; dwDayOfWeek = (++dwDayOfWeek)%7; } } else { // Delete AutoPowerOn. if (!(bResult = CeRunAppAtTime(g_szExecFileName, NULL))) { MessageBox(hwnd, L"CeRunAppAtTime Cancel Error", g_szTitle, MB_OK); } } } |
おお! ケイティさんありがとうございます。
めちゃくちゃ参考になります。 これを実装しているアプリって数少ないので、とてもうれしいです。 これを元に研究したいと思います。 |
本日2ヶ所バグをみつけております。
StockPrice独自の内部データ構造に関わるものなので、CeRunAppAtTimeの引数の渡し方には問題ありません。 1)bResultを初期化せずORを取っています。ごみが入っていると予測不能な事が起こります。 2)設定時、自動起動時のみ本ルーティンが呼ばれます。そして毎回次の1個の自動起動のみ設定して抜ける仕様です。 当日内の起動時間以降に設定すべきエントリがあると仕様通りに動きます。 翌日以降にあった場合、1個設定後returnするべきなのですが入っておらずループを継続してしまいます。 複数設定した場合何が起こるのか確認していません。 Cancelは設定日時の引数にNULLを指定することにAPIできめられていますので、1回のCancelで起動プログラム名に関わる設定がCancelされるはずなので、複数の設定はしない方が良いと思っています。 プログラムされていて面白いことが分かったら是非教えてください。 |
わざわざありがとうございます。
参考になります。ローカルに保存しました。 エントリのスプールの扱いには気をつけた方がいいみたいですね。 |
コメント投稿 |
|
trackback |
トラックバックURL |
忍者ブログ [PR] |