2

C# を使用していくつかのアクションを実行するために、PC をスリープから復帰させる必要があります。

CreateWaitableTimer関数を使用しましたが、すべてうまくいきます。所定の時間に PC は起動しますが、モニターは省電力モード (オフ) のままです。

ウェイクアップ後にモニターをオンにする方法を知りたいですか?

PS「モニターをオン/オフ/スタンバイにする方法に関する完全なガイド」を試しました-SendMessage(Codeproject)とSetThreadExecutionState(ES_DISPLAY_REQUIRED)を使用して-それは私にとってはうまくいきません。

何か案は?

4

2 に答える 2

1

私にとっては、pinvoke を使用して呼び出すと問題なく動作しますSendMessage
csharp のコード例:

using System;
using System.Runtime.InteropServices;

namespace MyDummyNamespace
{
   class MyProgram
   {
      private static int Main(string[] args)
      {
         // your program code here
         // ...

         NativeMethods.MonitorOff();
         System.Threading.Thread.Sleep(5000);
         NativeMethods.MonitorOn();

         return 0;
      }

      private static class NativeMethods
      {
         internal static void MonitorOn()
         {
            SendMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, (IntPtr)MONITOR_ON);
         }

         internal static void MonitorOff()
         {
            SendMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, (IntPtr)MONITOR_OFF);
         }

         [DllImport("user32.dll", CharSet = CharSet.Auto)]
         private static extern IntPtr SendMessage(IntPtr hWnd, UInt32 Msg, IntPtr wParam, IntPtr lParam);

         private static int MONITOR_ON = -1;
         private static int MONITOR_OFF = 2;
         private static int MONITOR_STANBY = 1;

         private static IntPtr HWND_BROADCAST = new IntPtr(0xffff);
         private static UInt32 WM_SYSCOMMAND = 0x0112;
         private static IntPtr SC_MONITORPOWER = new IntPtr(0xF170);
      }
   }
}

上記のソリューションは、この回答に触発されました: https://stackoverflow.com/a/332733/1468842

于 2017-02-22T13:55:53.913 に答える
0

マウスを動かしてみてください。キーボードをタップして Windows 7 システムを起動すると、マウスを動かすまで画面が黒いままになります。

Cursor.Position = new Point(x, y);
于 2010-04-05T09:47:21.047 に答える