2008-11-06 23 views

Respuesta

9

Aquí hay un buen sitio que muestra cómo trabajar con todos los aspectos del protector de pantalla. Vea los comentarios al final del código para iniciar el protector de pantalla.

http://www.codeproject.com/KB/cs/ScreenSaverControl.aspx

[DllImport("user32.dll", EntryPoint = "GetDesktopWindow")] 
    private static extern IntPtr GetDesktopWindow(); 

    [DllImport("user32.dll")] 
    private static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, int wParam, int lParam); 

    //... 

    private const int SC_SCREENSAVE = 0xF140; 
    private const int WM_SYSCOMMAND = 0x0112; 

    //... 

    public static void SetScreenSaverRunning() 
    { 
    SendMessage 

(GetDesktopWindow(), WM_SYSCOMMAND, SC_SCREENSAVE, 0); 
} 
+0

La firma PInvoke es incorrecto. Tanto wParam como lParam deben escribirse en IntPtr – JaredPar

+0

Drats. Estaba escribiendo esto y el código anterior funciona. – cfeduke

+0

El código funciona con entradas en SendMessage para w yl params, pero como está escrito, las funciones no funcionarán con IntPtrs. – cfeduke