スクリーンセーバー防止 – プログラミング – Home

スクリーンセーバー防止
 
通知
すべてクリア

[解決済] スクリーンセーバー防止


もんもん
 もんもん
(@もんもん)
ゲスト
結合: 23年前
投稿: 9
Topic starter  

win xp visual c++.net 2003

ジョイスティックで操作するゲームを作っているのですが、
途中でスクリーンセーバーが起動してしまいます。
これを防ぐにはどうすればいいのでしょうか?


引用未解決
トピックタグ
akey
 akey
(@akey)
ゲスト
結合: 22年前
投稿: 53
 

ゲームの起動中は、スクリーンセーバーの起動不能にする

::SystemParametersInfo( SPI_SETSCREENSAVEACTIVE, FALSE, ...


返信引用
akey
 akey
(@akey)
ゲスト
結合: 22年前
投稿: 53
 

ちょっと日本語変だったので・・
>ゲームの起動中は、スクリーンセーバーの起動不能にする
ゲームの起動中は、スクリーンセーバーを起動不能にする

あとは、常時 マウスorキー イベントを送り続けるとか・・


返信引用
もんもん
 もんもん
(@もんもん)
ゲスト
結合: 23年前
投稿: 9
Topic starter  

マウスorキー イベントを送り続けるには、
具体的にどの関数を使えばいいのでしょうか?
ヘルプをみてもイベントに関する項目が多すぎてわかりません...


返信引用
PATIO
(@patio)
Famed Member
結合: 3年前
投稿: 2660
 

キーボードイベントを送りたいのであれば、
keybd_eventをHELPで調べてみてください。
使い方についてはHELP参照と言うことで。


返信引用
PATIO
(@patio)
Famed Member
結合: 3年前
投稿: 2660
 

因みにこれを定期的に送っているとエディットボックスへの入力や
マウスのコントロールに影響が出る場合があるので注意は必要だと思いますよ。
例えば、shiftキーのキーダウンイベントを送っている時にマウス操作をすると
shiftキーと押しながら操作したのと同じ事になります。


返信引用
もんもん
 もんもん
(@もんもん)
ゲスト
結合: 23年前
投稿: 9
Topic starter  

未使用の0x88を使って起動防止できました。
ありがとうございました。


返信引用
aetos
(@aetos)
Noble Member
結合: 5年前
投稿: 1480
 

SystemParametersInfo の方がエレガントな気がするなぁ


返信引用
akey
 akey
(@akey)
ゲスト
結合: 22年前
投稿: 53
 

すでに解決済みですが・・

当然、SystemParametersInfoの方がお勧めです

>あとは、常時 マウスorキー イベントを送り続けるとか・・
こっちは、こんな手もあるかな程度で書いたのですが
こちらが選ばれるとは・・


返信引用
PATIO
(@patio)
Famed Member
結合: 3年前
投稿: 2660
 

そうですね。

私もSystemParametersInfoの方がよいと思います。


返信引用
ミル
 ミル
(@ミル)
ゲスト
結合: 24年前
投稿: 3
 

SystemParametersInfoだと異常終了したら
設定残ったまんまじゃないの?
再起動でなおるのかいな?


返信引用
もんもん
 もんもん
(@もんもん)
ゲスト
結合: 23年前
投稿: 9
Topic starter  

SystemParametersInfoだと

起動時
アクティブ/インアクティブ
終了時

に設定しなければいけませんが、
イベントだと一行ですむので楽かと思って(^^;
でもおすすめということなのでSystemParametersInfoを使おうと思います。


返信引用
dairygoods
 dairygoods
(@dairygoods)
ゲスト
結合: 23年前
投稿: 1421
 

自アプリケーションがアクティブな間だけ防止すればよいのなら、
WM_SYSCOMMANDのSC_SCREENSAVEを無視する方法もあります。

また、SystemParametersInfoで無効化した場合、
ユーザーが「画面のプロパティ」を開いて元に戻すことが可能ですから、
確実にしたいなら、たとえば、ウィンドウがアクティブになるたびに
有効化されていないか調べて、再設定するなどの処理が必要でしょう。

#個人的には、特定のアプリケーションがシステムワイドな設定を
#変更すべきではないと思います。


返信引用
aetos
(@aetos)
Noble Member
結合: 5年前
投稿: 1480
 

> また、SystemParametersInfoで無効化した場合、
> ユーザーが「画面のプロパティ」を開いて元に戻すことが可能ですから、
> 確実にしたいなら、たとえば、ウィンドウがアクティブになるたびに
> 有効化されていないか調べて、再設定するなどの処理が必要でしょう。

> #個人的には、特定のアプリケーションがシステムワイドな設定を
> #変更すべきではないと思います。

されど、フルスクリーンでゲームしている時にスクリーンセーバーが起動したりすると
大変ウザいのも確かなわけで。
だったら、そのゲームの設定ダイアログにでも「実行中はスクリーンセーバーを抑止す
る」とかいうオプションを設ければよろしいのではないかと。
それを承知してチェックしているのなら、システムワイドな設定を勝手に変更したこと
にはならないでしょうし、チェックしておきながら画面のプロパティで戻しちゃって
も、それはユーザの勝手でしょうから。


返信引用
dairygoods
 dairygoods
(@dairygoods)
ゲスト
結合: 23年前
投稿: 1421
 

> それを承知してチェックしているのなら、システムワイドな設定を勝手に変更したこと
> にはならないでしょうし、チェックしておきながら画面のプロパティで戻しちゃって
> も、それはユーザの勝手でしょうから。

そうですね。ユーザーが認識しているのなら、設定を変えるのがよいと思います。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました