Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Const WM_SYSCOMMAND = &H112
Private Const SC_MONITORPOWER = &HF170
Dim ls As LongPrivate Sub Command1_Click()
ls = SendMessage(Me.hwnd, WM_SYSCOMMAND, SC_MONITORPOWER, 0)
End Sub

解决方案 »

  1.   

    dbcontrols(泰山__帮助你使我感到快乐.)的实现不了!
      

  2.   

    lishush(☆↑苯鸟先飞↑☆) 你有病?
      

  3.   

    to dbcontrols(泰山__帮助你使我感到快乐.) 
    你的代码好像是没什么用,运行没反应!运行条件:Win2k+VB6+sp4
      

  4.   

    SendMessage(Handle, WM_SYSCOMMAND, SC_MONITORPOWER, 2 )
      

  5.   

    SC_MONITORPOWER   Sets the state of the display. This command supports devices that have power-saving features, such as a battery-powered personal computer.
    lParam can have the following values:1 means the display is going to low power.2 means the display is being shut off.
     
      

  6.   

    dbcontrols(泰山__帮助你使我感到快乐.):你的代码可能在98可以,但在2000下不行。不信你试试!!
      

  7.   

    帮你关个彻底!
    Public Const TOKEN_ADJUST_PRIVILEGES = &H20
    Public Const TOKEN_QUERY = &H8
    Public Const SE_PRIVILEGE_ENABLED = &H2
    Public Const ANYSIZE_ARRAY = 1Public Type LUID
      lowpart As Long
      highpart As Long
    End TypePublic Type LUID_AND_ATTRIBUTES
      pLuid As LUID
      Attributes As Long
    End TypePublic Type TOKEN_PRIVILEGES
      PrivilegeCount As Long
      Privileges(ANYSIZE_ARRAY) As LUID_AND_ATTRIBUTES
    End TypePublic Declare Function GetCurrentProcess Lib "kernel32" () As Long
    Public Declare Function LookupPrivilegeValue Lib "advapi32.dll" Alias "LookupPrivilegeValueA" (ByVal lpSystemName As String, ByVal lpName As String, lpLuid As LUID) As Long
    Public Declare Function AdjustTokenPrivileges Lib "advapi32.dll" (ByVal TokenHandle As Long, ByVal DisableAllPrivileges As Long, NewState As TOKEN_PRIVILEGES, ByVal BufferLength As Long, PreviousState As TOKEN_PRIVILEGES, ReturnLength As Long) As Long
    Public Declare Function OpenProcessToken Lib "advapi32.dll" (ByVal ProcessHandle As Long, ByVal DesiredAccess As Long, TokenHandle As Long) As Long
     
     
     '安全关机需调用的API函数
    Global Const EWX_POWEROFF = 8
    Global Const EWX_SHUTDOWN = 1 '终止所有进程并关闭计算机
    Global Const EWX_FORCE = 4    '强迫进程终止
    Global Const EWX_LOGOFF = 3   '关掉在进程安全描述表中运行的所有进程,重起计算机
    Global Const EWX_REBOOT = 2   '终止所有运行的进程并关闭计算机
    Global Const EWX_LOGIN = 0  '以其它用户名重新登录系统
    Public Declare Function ExitWindowsEx Lib "user32" (ByVal fuOptions As Long, ByVal dwReserved As Long) As Integer '关闭系统函数
     
     Public Sub AdjustToken()
     Dim hdlProcessHandle As Long
     Dim hdlTokenHandle As Long
     Dim tmpLuid As LUID
     Dim tkp As TOKEN_PRIVILEGES
     Dim tkpNewButIgnored As TOKEN_PRIVILEGES
     Dim lBufferNeeded As Long
      
     hdlProcessHandle = GetCurrentProcess()
     OpenProcessToken hdlProcessHandle, (TOKEN_ADJUST_PRIVILEGES Or TOKEN_QUERY), hdlTokenHandle
     LookupPrivilegeValue "", "SeShutdownPrivilege", tmpLuid
     tkp.PrivilegeCount = 1
     tkp.Privileges(0).pLuid = tmpLuid
     tkp.Privileges(0).Attributes = SE_PRIVILEGE_ENABLED AdjustTokenPrivileges hdlTokenHandle, False, tkp, Len(tkpNewButIgnored), tkpNewButIgnored, lBufferNeeded
    End SubPrivate Sub cmdShutDownMe_Click()   
       AdjustToken
      ExitWindowsEx EWX_FORCE Or EWX_SHUTDOWN Or EWX_POWEROFF, 0
    End Sub
      

  8.   


    我以前用Turbo C 3做了个用VESA标准的节能程序,但是不知道windows能不能用.
      

  9.   

    我是说不知道WinNT 能不能用, 98肯定可以的,但是不知道节能效果怎样.
      

  10.   

    做一个黑色的form,显示出来,显示器自然没有光线输出,等于关闭。