Board logo

标题: 让CMD背景透明(未成功) [打印本页]

作者: czl1378     时间: 2009-5-30 08:57    标题: 让CMD背景透明(未成功)

今天下了个可以调用dll的扩展命令:_call.exe
下下来后改成了func.exe,然后从网上搜了段可以使指定颜色透明的代码(VB)的。

  Quote:
Public Declare Function SetLayeredWindowAttributes Lib _
        "user32" (ByVal hnd As Long, ByVal clval As Long, _
        ByVal alph As Byte, ByVal flago As Long) As Long
        
Public Declare Function GetWindowLong Lib "user32" Alias _
        "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long

Public Declare Function SetWindowLong Lib "user32" Alias _
      "SetWindowLongA" (ByVal hnd As Long, ByVal nIndex As Long, _
      ByVal dwNewLong As Long) As Long

Public Const LWA_ALPHA = &H2&
Public Const LWA_COLORKEY = &H1&
Public Const GWL_EXSTYLE = (-20)
Public Const WS_EX_LAYERED = &H80000
Public Const WS_EX_TRANSPARENT = &H20&

部分透明窗体(窗体的一部分颜色透明):
Dim lOldStyle As Long
lOldStyle = GetWindowLong(Me.hwnd, GWL_EXSTYLE)
SetWindowLong Me.hwnd, GWL_EXSTYLE, lOldStyle Or WS_EX_LAYERED
SetLayeredWindowAttributes Me.hwnd, &HFFFFFF, 255, LWA_COLORKEY

照着改成批处理的代码:

  Quote:
@echo off
set GWL_EXSTYLE=-20
ext\func user32.dll GetForegroundWindow
::返回当前窗口句柄
set "hnd=%errorlevel%"
ext\func user32.dll GetWindowLongA -d %hnd% -d %GWL_EXSTYLE%
set "lOldStyle=%errorlevel%"
ext\func user32.dll SetWindowLongA -d %hnd% -d %GWL_EXSTYLE% -d %lOldStyle%
ext\func user32.dll SetLayeredWindowAttributes -d %hnd% -d 0 -d 255 -d 1
pause>nul

不知道为啥不行咧(好像那个or运算实现不了?是这个原因么?)

请高手指教。。。。