中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-11 22:47
47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行
DOS批处理 & 脚本技术(批处理室) » 让CMD背景透明(未成功)
可打印版本  672 / 0
第1楼 czl1378 发表于 2009-05-30 08:57
初级用户 发帖 114 积分 161
让CMD背景透明(未成功)
今天下了个可以调用dll的扩展命令:_call.exe
下下来后改成了func.exe,然后从网上搜了段可以使指定颜色透明的代码(VB)的。

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



照着改成批处理的代码:

@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运算实现不了?是这个原因么?)

请高手指教。。。。
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023