各位大侠帮帮小弟,怎样利用DELPhi调用API函数控制显示器的开关和定时开关显示器
?????急急急!!!!小弟定当重谢!!!

解决方案 »

  1.   

    SendMessage(Handle, WM_SYSCOMMAND, SC_MONITORPOWER, 0);//关闭显示器.
    SendMessage(Handle, WM_SYSCOMMAND, SC_MONITORPOWER, -1);//打开显示器
    至于定时不用我说了吧!!!!
      

  2.   

    To extcsdn(Studing VB now) :
    window2000server 测试不行吧,我用的是D6
      

  3.   

    // turn it off: 
    SendMessage(Application.Handle, WM_SYSCOMMAND, SC_MONITORPOWER, 0);  
    // turn it on again: 
    SendMessage(Application.Handle, WM_SYSCOMMAND, SC_MONITORPOWER, -1);  试下上面的,应该可以的
      

  4.   

    SendMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, 1);//省电
    SendMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, 2);//关闭SendMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, -1);//打开
      

  5.   

    错了用handle即可,不用HWND_BROADCAST
      

  6.   

    看来是我该出手的时候了:
    关闭显示器
    //WIN98
    SendMessage(Application.Handle, WM_SYSCOMMAND, SC_MONITORPOWER, 0);
    //WINNT
    SendMessage(Application.Handle, WM_SYSCOMMAND, SC_MONITORPOWER, 1);唤醒
    SendMessage(Application.Handle, WM_SYSCOMMAND, SC_MONITORPOWER, -1);
      

  7.   

    NT结构的系统用
    SendMessage(Application.Handle, WM_SYSCOMMAND, SC_MONITORPOWER, 1);
      

  8.   

    我贴的在2000下没有问题。SC_MONITORPOWER
    Sets the state of the display. This command supports devices that have power-saving features, such as a battery-powered personal computer. 
    The lParam parameter can have the following values:1 - the display is going to low power2 - the display is being shut offMinimum DLL Version None 
    Header Declared in Winuser.h, include Windows.h 
    Minimum operating systems Windows 95, Windows NT 3.1 看msdn意思是win95,nt31以上都是可以的,你自己验证一下
      

  9.   

    大哥,可不可以写个delphi的啊!!
      

  10.   

    SendMessage(Application.Handle, WM_SYSCOMMAND, SC_MONITORPOWER, 2);关闭
    d6+winXP下通过!
      

  11.   

    void  Dormancy()
    {
        if ( GetVersion() < 0x80000000 )
        {
            TOKEN_PRIVILEGES tp;
            HANDLE hToken;
            LUID luid;        LPTSTR MachineName = NULL; // pointer to machine name
            if(! OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, &hToken )) return;
            if(! LookupPrivilegeValue(MachineName, SE_SHUTDOWN_NAME, &luid)) return;        tp.PrivilegeCount           = 1;
            tp.Privileges[0].Luid       = luid;
            tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;        AdjustTokenPrivileges(hToken, FALSE, &tp, sizeof(TOKEN_PRIVILEGES), NULL, NULL );
        }
        SetSystemPowerState(false, false); // 休眠的关键
        // SetSuspendState
    }
      

  12.   

    SC_MONITORPOWER 消息是系统发给各个接收 WM_SYSCOMMAND 消息窗口能接收道而已
    不是你自己发消息就实现该功能的
      

  13.   

    你的例子是省电模式还是真的关断电源?如果是省电模式我就不调试了,因为前面的已可以实现省电模式,你的代码我还要改写成DELPHI版呢。