- PR -

スタンバイから復帰させるには

1
投稿者投稿内容
Tacchang
ベテラン
会議室デビュー日: 2004/09/05
投稿数: 55
お住まい・勤務地: 川崎市
投稿日時: 2006-05-06 00:13
みなさん、こんにちは。

PCをスタンバイから復帰させるコードはどのようになるのでしょうか。TVキャプチャボードの番組予約機能のようなことをしたいと思っています。
.NETでの方法が判りません。

よろしくお願いします。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-05-06 00:22
引用:

Tacchangさんの書き込み (2006-05-06 00:13) より:

PCをスタンバイから復帰させるコードはどのようになるのでしょうか。TVキャプチャボードの番組予約機能のようなことをしたいと思っています。
.NETでの方法が判りません。


自身がスタンバイの状態なのに、自身が復帰するんですか?
番組予約機能? 外部からの通信によって復帰するということでしょうか?

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
Tacchang
ベテラン
会議室デビュー日: 2004/09/05
投稿数: 55
お住まい・勤務地: 川崎市
投稿日時: 2006-05-06 08:38
引用:

自身がスタンバイの状態なのに、自身が復帰するんですか?


はい.
ひとつ例を挙げますと,カノープスのMTVXという製品はPCをスタンバイ状態にしておいても,iEPGで予約した時間になると自動で復帰して録画してくれます.外部からの通信(LAN Wake-upではない)ではありません.
冬寂
ぬし
会議室デビュー日: 2002/09/17
投稿数: 449
投稿日時: 2006-05-06 09:17
ンー・・・MTVXとやらは全然知らないんだけど、それは単にハードウェア的にタイマがついているってだけじゃないですか?

時間が来たら勝手に・・・ってのが全ての機械で通用するのなら、勝手にテレビがつくのも怪談じゃなくなっちゃうでしょ?
Hongliang
ぬし
会議室デビュー日: 2004/12/25
投稿数: 576
投稿日時: 2006-05-06 09:47

.NET の標準クラスライブラリには存在していませんので、他の手段が必要です。

簡単なのはタスクスケジューラ……ですが、コードから利用するのは逆に面倒かも知れません。
私が書いた COM ラッパ を使えば多少は楽になるかも知れませんが。
こいつの場合、Task.TaskFlags に SystemRequired を追加して、何もしないダミーの実行ファイルを起動させるようにすれば良いでしょう。

Win32API の SetWaitableTimer 関数には、所定の時間になったときに復帰させるかどうかを指定できるパラメータが含まれており、これを利用することができます。
CreateWaitableTimer 関数でタイマを作成して、SetWaitableTimer 関数で有効になる時間を設定します。その後タイマを待機するための WaitForSingleObject 関数や(これは .NET の WaitHandle クラスを派生させれば WaitOne メソッドを使えますが)、復帰する際、ロックから回復するための SetThreadExecutionState 関数を使うことも必要かも知れません。
Tacchang
ベテラン
会議室デビュー日: 2004/09/05
投稿数: 55
お住まい・勤務地: 川崎市
投稿日時: 2006-05-07 10:38
みなさん、情報ありがとうございます。

Hongliangさんのおっしゃるように.NETで無理そうなのでタスクスケジューラを使うことで対応することにします。余裕があればぜひHongliangさんのCOMコンポーネントを使わせて頂こうと思います。

#HongliangさんのウェブページにあるCOMコンポーネントの説明って丁寧ですね。
1

スキルアップ/キャリアアップ(JOB@IT)