掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
起動済みのスクリーンセーバーを停止させるには (ID:49632)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
Mr.XRAYさん ありがとうございます。 Windows7環境でスクリーンセーバーを起動させ、その裏でDelphiアプリで GetForegroundWindow を実行したところ 「D3DSaverWndClass」というクラス名が返ってきました。 強制終了はやりたくないのでフォーカスを移してキーを送信すると スクリーンセーバーが解除されました。 その状態でWindows10環境にプログラムを持っていって起動すると なんとGetForegroundWindowがDelphi側のウインドウハンドルを返してきました。 試験したときのコードは下記の通りです。 var hFG: HWND; Name: string; Len : Integer; begin hFG := GetForegroundWindow; // 最前面のウインドウハンドルを取得 SetLength(Name, 256); // 文字列型に256バイト分の領域を確保 Len := GetClassName(hFG, PChar(Name), 256); // クラス名とクラス名の長さを取得 SetLength(Name,Len); // 長さの値で成形 if Name <> 'D3DSaverWndClass' then exit; // スクリーンセーバーで無い場合処理しない SetForegroundWindow(hFG); // スクリーンセーバーにフォーカスを移動 keybd_event(VK_DOWN, 0, 0, 0); // カーソルの下キーを押す keybd_event(VK_DOWN, 0, KEYEVENTF_KEYUP, 0); // カーソルの下キーを離す
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.