いつもお世話になります。
社内のスケジュール共有ソフトを組んだんですが、スリープ設定をされて方のパソコンが復帰した際に直後にDBにアクセスして、DBのOpenエラーが出てしまいます。
ソフトはタスクトレイの中に常時起動しているタイプで、Timerで更新をかけています。
使っているのは、Firebird + DBExpressです。
WindowsMessageでスリープのメッセージとか拾えるのかなと検索したんですが、いい答えは拾えませんでした。
なにかいい方法はないでしょうか。
WM_POWERBROADCAST message (Windows)
http://msdn.microsoft.com/en-us/library/windows/desktop/aa373247.aspx
でどうですか?
ありがとうございます。
遅レスすいません。
//スリープメッセージの取得
procedure TfrmMain.GetWindowsPower(var Msg: TMessage);
begin
inherited;
case Msg.WParam of
PBT_APMQUERYSUSPEND:begin
timWakeup.Enabled := False;
timReRead.Enabled := False;
timNext.Enabled := False;
timWakeupLag.Enabled := False;
end;
PBT_APMRESUMEAUTOMATIC:begin
timWakeupLag.Enabled := True;
end;
end;
end;
とりあえず、タイマーで1分タイムラグを作ったら、データーベースのオープンエラーを回避できました。
ツイート | ![]() |