2010-04-05 5 views
2

C#을 사용하여 일부 작업을 수행하기 위해 잠자기에서 PC를 깨워 야합니다.대기 모드에서 깨어 난 후 모니터를 켜는 방법은 무엇입니까?

나는 CreateWaitableTimer 함수를 사용했습니다. 모든 것이 잘됩니다. 주어진 시간에 PC는 깨어 나지 만 모니터는 절전 모드로 유지됩니다 (꺼짐).

깨어 난 후 모니터를 켜는 방법을 알고 싶습니다.

추신 : 나는 SendMessage (Codeproject) 및 SetThreadExecutionState (ES_DISPLAY_REQUIRED)를 사용하여 "모니터 켜기/끄기/대기 모드를 완료하는 방법에 대한 전체 안내서"를 시도했지만 나에게 적합하지 않습니다.

아이디어가 있으십니까?

+1

이 질문은 제로 의미합니다. 모니터는 사람이 보는 것이고, 손전등이 아닙니다. –

답변

0

마우스를 움직여 봅니다. 키보드에서 탭을 사용하여 Windows 7 시스템을 깨울 때 마우스를 움직이면 화면이 검은 색으로 유지됩니다.

Cursor.Position = new Point(x, y); 
+0

아니요, 작동하지 않습니다. 하지만 키보드 키를 눌러 모니터를 켜면 커서가 (x, y) 위치로 설정되어 코드가 실행되었습니다. –

0

제게는 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

관련 문제