C#のコンピューターの目覚まし時計

私たちの多くは、お気に入りのコンピューターに朝目を覚まさせ、お気に入りの曲を「少なくとも」歌わせたいと思っていたので、プログラミングを学び始めたらすぐにそのようなアプリケーションを書くことにしました。

どうだった? アプリケーションを起動します-目覚まし時計、目を覚ます時間と、同時に実行するプログラム(テリー、音楽など)を設定し、プログラムがOSに何らかの信号を与える時間の後にPCをスリープモードにします所有者を起こしてください!」そして必要なアプリケーションを起動します。

これを行うために、私はインターネットのフロアをシャベルで掘り下げ、コンピューターの休止状態モードに関する多くの記事を読んでいます。 さまざまなフォーラムで質問し、彼らが私に伝えることができたのは、「目覚まし時計が電話にあります、なぜあなたはこのthisが必要ですか」またはそのようなものでした。そこのWOLはなんとかしてネットワークを介して行われますが、一方のコンピューターは別のコンピューターに信号を送信するために常時オンにしておく必要があります。 しかし、どうやら都合よくうまくいかないように思えました。 しかし、私は絶望せずにWinAPIに向かったので、今はその瞬間が真実です...「大丈夫、見つかりました!」。

仕事には、3つのWinAPI関数とMSDNヘルプのみが必要でした。
それでは始めましょう!
1.コンソールアプリケーションを作成します。
2.名前空間を接続してAPIを操作します。
3.必要な関数を書きます。
4. 1つのメソッドを作成します。

WinAPIを使用するには、 System.Runtime.InteropServicesに接続し、API関数を記述します

[DllImport("kernel32.dll")] public static extern IntPtr CreateWaitableTimer(IntPtr lpTimerAttributes, bool bManualReset, string lpTimerName); [DllImport("kernel32.dll")] public static extern bool SetWaitableTimer(IntPtr hTimer, [In] ref long pDueTime, int lPeriod, IntPtr pfnCompletionRoutine, IntPtr lpArgToCompletionRoutine, bool fResume); [DllImport("kernel32", SetLastError = true, ExactSpelling = true)] public static extern Int32 WaitForSingleObject(IntPtr handle, uint milliseconds); 


次に、起動するまでの時間をカウントダウンするメソッドを作成します。

 static IntPtr handle; static void SetWaitForWakeUpTime() { long duetime = -900000000; Console.WriteLine(",   !    !); handle = CreateWaitableTimer(IntPtr.Zero, true, "MyWaitabletimer"); SetWaitableTimer(handle, ref duetime, 0, IntPtr.Zero, IntPtr.Zero, true); uint INFINITE = 0xFFFFFFFF; int ret = WaitForSingleObject(handle, INFINITE); System.Diagnostics.Process.Start("C:\Program Files\AIMP3\AIMP3.exe"); } 


コード内のすべてが明確であり、長い変数が時間(つまり、100ナノ秒の間隔の数)を格納していることを願っています。その後、これらすべてを処理し、しばらくしてプレーヤーを起動するタイマーを作成しました。

すべてがとてもシンプルですが、どのようにあなたがそれをすることができるかを見つけるためにどれだけの努力をしました。

その結果、午前中に目覚めることができる便利なアプリケーションが手に入りました(さらに、すべてが美しいインターフェースであることがわかりました)。

それは確かにそれほど人間工学的ではありませんが、すべてがあなたの手にあります。WinFormsに転送し、さらに便利な機能をいくつか追加すれば、本格的なアプリケーションが得られます。

あなたが私の投稿を読むことに興味を持っていることを願っています、あなたの注意をありがとう!

PSアプリケーションは動作しないがコンパイルにエラーがなかった場合は、電源設定で「ウェイクアップタイマーを許可する」オプションが有効になっているかどうかを確認してください。

Source: https://habr.com/ru/post/J150028/


All Articles