如何用VB实现此效果呢?
让整个屏幕变成灰色,但是却可以操作计算机,可以正常使用,但是屏幕是灰色的,也就是说是黑白色的,让彩色显示器像黑白电视机一样显示颜色。

解决方案 »

  1.   

    其实系统那个就是一个假象
    不信你开个flash在桌面然后点出关机对话框,等它变灰后取消
    你会发现flash是变了的但是屏幕却一直保持在一个动作所以用一楼的方法就可以了
      

  2.   

    Private Type RECT  
     Left As Long  
     Top As Long  
     Right As Long  
     Bottom As Long  
    End Type  Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long  
    Private Declare Function ReleaseDC Lib "user32" (ByVal hwnd As Long, ByVal hdc As Long) As Long  
    Private Declare Function CreatePatternBrush Lib "gdi32" (ByVal hBitmap As Long) As Long  
    Private Declare Function PatBlt Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal dwRop As Long) As Long  
    Private Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long  
    Private Declare Function CreateBitmap Lib "gdi32" (ByVal nWidth As Long, ByVal nHeight As Long, ByVal nPlanes As Long, ByVal nBitCount As Long, lpBits As Any) As Long  
    Private Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject As Long) As Long  
    Private Declare Function InvalidateRect Lib "user32" (ByVal hwnd As Long, ByVal lpRect As Long, ByVal bErase As Long) As Long  Private bybits(1 To 16) As Byte  
    Private hBitmap As Long, hBrush As Long  
    Private hDesktopWnd As Long  
    ’将图变暗,如同待关机一般  
    Private Sub Command1_Click()  
    Dim rop As Long, res As Long  
    Dim hdc5 As Long, width5 As Long, height5 As Long  
    ’如果只要让Picture1有效果将底下三行unMark取代 hdc5, width5, height5三个值  
    ’hdc5 = Picture1.hdc  
    ’width5 = Picture1.ScaleWidth  
    ’height5 = Picture1.ScaleHeight  ’底下三行设定整个萤幕都暗下来  
    hdc5 = GetDC(0)  
    width5 = Screen.Width \ Screen.TwipsPerPixelX  
    height5 = Screen.Height \ Screen.TwipsPerPixelY  rop = &HA000C9 ’与原图做and运算  
    Call SelectObject(hdc5, hBrush)  
    res = PatBlt(hdc5, 0, 0, width5, height5, rop)  
    Call DeleteObject(hBrush)  
    ’如果只暗picture1则底下这一行要起来  
    res = ReleaseDC(0, hdc5)  
    End Sub  
    ’回复原本的画面  
    Private Sub Command2_Click()  
    Dim aa As Long  
    ’如果只暗picture1则底下这一行要unMark起来  
    ’Picture1.Refresh  ’如果只暗picture1则底下这一行要起来  
    aa = InvalidateRect(0, 0, 1)  
    End Sub  Private Sub Form_Load()  
     Dim ary  
     Dim i As Long  
     ary = Array(&H55, &H0, &HAA, &H0, _  
     &H55, &H0, &HAA, &H0, _  
     &H55, &H0, &HAA, &H0, _  
     &H55, &H0, &HAA, &H0)  
     For i = 1 To 16  
     bybits(i) = ary(i - 1)  
     Next i  
    hBitmap = CreateBitmap(8, 8, 1, 1, bybits(1))  
    hBrush = CreatePatternBrush(hBitmap)  
    Picture1.ForeColor = RGB(0, 0, 0)  
    Picture1.BackColor = RGB(255, 255, 255)  
    Picture1.ScaleMode = 3  
    End Sub  
    转 无浪学vb吧
      

  3.   

    功能2(使屏幕变暗):
    ''''''''''''''''''''''''''''''''''''''''''''''''''''
    Private Declare Function PatBlt Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal dwRop As Long) As Long
    Private Declare Function CreateBitmap Lib "gdi32" (ByVal nWidth As Long, ByVal nHeight As Long, ByVal nPlanes As Long, ByVal nBitCount As Long, lpBits As Any) As Long
    Private Declare Function InvalidateRect Lib "user32" (ByVal hwnd As Long, ByVal lpRect As Long, ByVal bErase As Long) As Long
    Private Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject As Long) As Long
    Private Declare Function ReleaseDC Lib "user32" (ByVal hwnd As Long, ByVal hdc As Long) As Long
    Private Declare Function CreatePatternBrush Lib "gdi32" (ByVal aBitmap As Long) As Long
    Private Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long
    Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As LongPrivate Sub Dull()  '使屏幕变暗
        Dim aDC As Long, aBitmap As Long, aBrush As Long, aDesktopWnd As Long
        Dim lWidth5 As Long, lHeight As Long, bBit(1 To 16) As Byte
        
        aDC = GetDC(0)
        lWidth5 = Screen.Width \ Screen.TwipsPerPixelX
        lHeight = Screen.Height \ Screen.TwipsPerPixelY
        
        bBit(1) = &H55
        bBit(2) = &H0
        bBit(3) = &HAA
        bBit(4) = &H0
        bBit(5) = &H55
        bBit(6) = &H0
        bBit(7) = &HAA
        bBit(8) = &H22
        bBit(9) = &H55
        bBit(10) = &H0
        bBit(11) = &HAA
        bBit(12) = &H0
        bBit(13) = &H55
        bBit(14) = &H0
        bBit(15) = &HAA
        bBit(16) = &H0
        
        aBitmap = CreateBitmap(8, 8, 1, 1, bBit(1))
        aBrush = CreatePatternBrush(aBitmap)
        
        Call SelectObject(aDC, aBrush)
        Call PatBlt(aDC, 0, 0, lWidth5, lHeight, &HA000C9)
        Call DeleteObject(aBrush)
    End SubPrivate Sub Comeback()     '恢复屏幕变暗
        Call InvalidateRect(0, 0, 1)
    End Sub
    ''''''''''''''''''''''''''''''''''''''''''''''''''''http://community.csdn.net/Expert/topic/5060/5060699.xml?temp=.4107782