中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: 让CMD背景透明(未成功) 上一主题 | 下一主题
czl1378
初级用户





积分 161
发帖 114
注册 2009-2-20
状态 离线
『楼 主』:  让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运算实现不了?是这个原因么?)

请高手指教。。。。

2009-5-30 08:57
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: