アプリ版:「スタンプのみでお礼する」機能のリリースについて

VC++.netで動画が再生されている時は、スクリーンセーバーが走らないプログラムを考えています
OSの設定で、3分でスクリーンセーバーが起動するように設定したのですが、動画が4分くらいあると
動画が終了していないのにスクリーンセーバーが起動してしまいます。
自分でスクリーンセーバーを起動するプログラムを製作したほうが良いのでしょうか?
プログラム初心者なのでどう手をつけて良いのかかりません
何か良い方法は、ないのでしょうか?
よろしくお願いします。
開発環境は、VC++のExpressEditionです。

A 回答 (3件)

 こんにちは。

補足頂きました。
 form.hの中の、Form1クラスより外、namespace ???より中です。

namespace winclr{
using namespace System;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Windows::Forms;
using namespace System::Data;
using namespace System::Drawing;
//追加
using namespace System::Runtime::InteropServices;
//追加
const unsigned int SPI_SETSCREENSAVEACTIVE = 17;
//追加
[DllImport("user32.dll", EntryPoint = "SystemParametersInfo")] int SystemParametersInfo(unsigned int uiAction, unsigned int uiParam, void* pvParam, unsigned int fWinIni);

/// <summary>
/// Form1 の概要
///
/// 警告: このクラスの名前を変更する場合、このクラスが依存するすべての .resx ファイルに関連付けられた
/// マネージ リソース コンパイラ ツールに対して 'Resource File Name' プロパティを
/// 変更する必要があります。この変更を行わないと、
/// デザイナと、このフォームに関連付けられたローカライズ済みリソースとが、
/// 正しく相互に利用できなくなります。
/// </summary>
public ref class Form1 : public System::Windows::Forms::Form
{
public:
Form1(void)
{
InitializeComponent();
//
//TODO: ここにコンストラクタ コードを追加します
//
//ウィンドウが開いた時に無効
SystemParametersInfo(SPI_SETSCREENSAVEACTIVE, 0, 0, 0);
}

protected:
/// <summary>
/// 使用中のリソースをすべてクリーンアップします。
/// </summary>
~Form1()
{
if(components)
{
delete components;
}
//ウィンドウが無くなった時に有効
SystemParametersInfo(SPI_SETSCREENSAVEACTIVE, 1, 0, 0);
}

private:
/// <summary>
/// 必要なデザイナ変数です。
/// </summary>
System::ComponentModel::Container ^components;

#pragma region Windows Form Designer generated code
/// <summary>
/// デザイナ サポートに必要なメソッドです。このメソッドの内容を
/// コード エディタで変更しないでください。
/// </summary>
void InitializeComponent(void)
{
this->components = gcnew System::ComponentModel::Container();
this->Size = System::Drawing::Size(300,300);
this->Text = L"Form1";
this->Padding = System::Windows::Forms::Padding(0);
this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
}
#pragma endregion
};
}
    • good
    • 0
この回答へのお礼

回答ありがとうございます
また長文ありがとうございます
メイン.cppでwindows.hを宣言していてuser32.dllも記述していたため
イベントの項目に
SystemParametersInfo(SPI_SETSCREENSAVEACTIVE, 1, 0, 0);
を記述しただけでできてしまいました
ほんとうにお騒がせして申し訳ありませんでした
丁寧にご指導していただいてどうもありがとうございました。

お礼日時:2010/06/03 22:41

 こんにちは。


 
 http://msdn.microsoft.com/ja-jp/library/aa984739 …

using namespace System::Runtime::InteropServices;

const unsigned int SPI_SETSCREENSAVEACTIVE = 17;

[DllImport("user32.dll", EntryPoint = "SystemParametersInfo")]
int SystemParametersInfo(unsigned int uiAction, unsigned int uiParam, void* pvParam, unsigned int fWinIni);

 http://msdn.microsoft.com/ja-jp/library/cc429946 …

 無効:
 SystemParametersInfo(SPI_SETSCREENSAVEACTIVE, 0, 0, 0);

 有効:
 SystemParametersInfo(SPI_SETSCREENSAVEACTIVE, 1, 0, 0);

 でスクリーンセーバーを停止出来ませんか。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
さっそく試してみたいのですが
初心者なので、どの部分に書いて良いかわかりません
メイン.cppに
using namespace System::Runtime::InteropServices;

const unsigned int SPI_SETSCREENSAVEACTIVE = 17;

[DllImport("user32.dll", EntryPoint = "SystemParametersInfo")]
int SystemParametersInfo(unsigned int uiAction, unsigned int uiParam, void* pvParam, unsigned int fWinIni);

を記述するの?
Form.hのイベントで
SystemParametersInfo(SPI_SETSCREENSAVEACTIVE, 0, 0, 0);
を記述すれば??
#using <mscorlib.dll>
は記述しなければならないのでしょうか?
初心者で申し訳ありませんが
御指導お願いします

お礼日時:2010/06/03 14:45

いくらか質問に不明点があるため、的確ではないかもしれませんが、要は自作アプリ起動中はスクリーンセーバーを起動したくないということですよね?



どの程度のプログラミング初心者なのかわかりませんが、WM_SYSCOMMANDメッセージが来たとき、wParamの値がSC_SCREENSAVEなら問答無用で1を返すようにすれば起動しません。


一定時間毎にマウスカーソルをプログラム的に動かして抑制することも可能ですが、確実性は低いですね。(それでもマウスカーソルを動かして抑制する方式を採用しているソフトもあるようです)

参考URL:http://support.microsoft.com/kb/403844/ja
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
プログラム暦2ヶ月の初心者です
axWindowsMediaPlayerが再生されている時にスクリーンセーバーが起動しないようにするので
PlayStateChangeのイベントで、
 if (e->newState == 3)//再生中
の後にどう記述すればよいのでしょうか
初心者で申し訳ありませんが
ご指導のほど、よろしくおねがいします。

お礼日時:2010/06/02 13:08

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!