找回密码
 加入
搜索
查看: 2710|回复: 8

如何去掉任务栏的图标

[复制链接]
发表于 2009-10-13 20:08:57 | 显示全部楼层 |阅读模式
本帖最后由 zjg2003 于 2009-10-15 09:43 编辑

注意: 指的是任务栏的图标,而不是系统托盘图标,谢谢!
 
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("测试", 200, 120, 300, 0, $WS_POPUP, $WS_EX_LAYERED)
GUISetBkColor(0xABCDEF)  
_API_SetLayeredWindowAttributes($Form1, 0xABCDEF) ;设置透明,故不想有任务栏图标
$Label1 = GUICtrlCreateLabel("VVVVVxxx", 24, 16)
$Label2 = GUICtrlCreateLabel("VVVVVxxx", 24, 16)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
 Sleep(500)
WEnd
Func _API_SetLayeredWindowAttributes($hwnd, $i_transcolor, $Transparency = 255, $isColorRef = False)
 Local Const $AC_SRC_ALPHA = 1
 Local Const $ULW_ALPHA = 2
 Local Const $LWA_ALPHA = 0x2
 Local Const $LWA_COLORKEY = 0x1
 If Not $isColorRef Then
  $i_transcolor = Hex(String($i_transcolor), 6)
  $i_transcolor = Execute('0x00' & StringMid($i_transcolor, 5, 2) & StringMid($i_transcolor, 3, 2) & StringMid($i_transcolor, 1, 2))
 EndIf
 Local $Ret = DllCall("user32.dll", "int", "SetLayeredWindowAttributes", "hwnd", $hwnd, "long", $i_transcolor, "byte", $Transparency, "long", $LWA_COLORKEY + $LWA_ALPHA)
 Select
  Case @error
   Return SetError(@error, 0, 0)
  Case $Ret[0] = 0
   Return SetError(4, 0, 0)
  Case Else
   Return 1
 EndSelect
EndFunc   ;==>_API_SetLayeredWindowAttributes
发表于 2009-10-13 20:16:18 | 显示全部楼层
建多一个GUICreate,然后赋予隐藏属性。
发表于 2009-10-13 20:19:42 | 显示全部楼层
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("测试", 200, 120, 300, 0, $WS_POPUP, $WS_EX_LAYERED, WinGetHandle(AutoItWinGetTitle()))
GUISetBkColor(0xABCDEF)  
_API_SetLayeredWindowAttributes($Form1, 0xABCDEF) ;设置透明,故不想有任务栏图标
$Label1 = GUICtrlCreateLabel("VVVVVxxx", 24, 16)
$Label2 = GUICtrlCreateLabel("VVVVVxxx", 24, 16)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
Sleep(500)
WEnd
Func _API_SetLayeredWindowAttributes($hwnd, $i_transcolor, $Transparency = 255, $isColorRef = False)
Local Const $AC_SRC_ALPHA = 1
Local Const $ULW_ALPHA = 2
Local Const $LWA_ALPHA = 0x2
Local Const $LWA_COLORKEY = 0x1
If Not $isColorRef Then
  $i_transcolor = Hex(String($i_transcolor), 6)
  $i_transcolor = Execute('0x00' & StringMid($i_transcolor, 5, 2) & StringMid($i_transcolor, 3, 2) & StringMid($i_transcolor, 1, 2))
EndIf
Local $Ret = DllCall("user32.dll", "int", "SetLayeredWindowAttributes", "hwnd", $hwnd, "long", $i_transcolor, "byte", $Transparency, "long", $LWA_COLORKEY + $LWA_ALPHA)
Select
  Case @error
   Return SetError(@error, 0, 0)
  Case $Ret[0] = 0
   Return SetError(4, 0, 0)
  Case Else
   Return 1
EndSelect
EndFunc   ;==>_API_SetLayeredWindowAttributes
发表于 2009-10-14 01:16:35 | 显示全部楼层
本帖最后由 kodin 于 2009-10-14 01:55 编辑

刚看了afan大大发的源码,呵呵!学习了一下WinGetHandle用法。
顺手写个我的。


#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form = GUICreate("")
$Form1 = GUICreate("测试", 200, 120, 300, 0,  $WS_POPUP+$WS_EX_LAYERED,-1,$Form)
GUISetBkColor(0xABCDEF)  
_API_SetLayeredWindowAttributes($Form1, 0xABCDEF) ;设置透明,故不想有任务栏图标
$Label1 = GUICtrlCreateLabel("VVVVVxxx", 24, 16)
$Label2 = GUICtrlCreateLabel("VVVVVxxx", 24, 16)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
Sleep(500)
WEnd
Func _API_SetLayeredWindowAttributes($hwnd, $i_transcolor, $Transparency = 255, $isColorRef = False)
Local Const $AC_SRC_ALPHA = 1
Local Const $ULW_ALPHA = 2
Local Const $LWA_ALPHA = 0x2
Local Const $LWA_COLORKEY = 0x1
If Not $isColorRef Then
  $i_transcolor = Hex(String($i_transcolor), 6)
  $i_transcolor = Execute('0x00' & StringMid($i_transcolor, 5, 2) & StringMid($i_transcolor, 3, 2) & StringMid($i_transcolor, 1, 2))
EndIf
Local $Ret = DllCall("user32.dll", "int", "SetLayeredWindowAttributes", "hwnd", $hwnd, "long", $i_transcolor, "byte", $Transparency, "long", $LWA_COLORKEY + $LWA_ALPHA)
Select
  Case @error
   Return SetError(@error, 0, 0)
  Case $Ret[0] = 0
   Return SetError(4, 0, 0)
  Case Else
   Return 1
EndSelect
 楼主| 发表于 2009-10-14 23:38:35 | 显示全部楼层
本帖最后由 zjg2003 于 2009-10-14 23:51 编辑

先谢谢楼上二位兄台. 另 kodin 兄弟的代码最后少了一个EndFunc

想请教一下:
$Form1 = GUICreate("测试", 200, 120, 300, 0, $WS_POPUP, $WS_EX_LAYERED, WinGetHandle(AutoItWinGetTitle()))
这句是否可以这样理解:为$Form1指定一个隐藏的父窗体,故而没有任务栏图标?
发表于 2009-10-15 08:44:04 | 显示全部楼层
先谢谢楼上二位兄台. 另 kodin 兄弟的代码最后少了一个EndFunc

想请教一下:
$Form1 = GUICreate("测试", 200, 120, 300, 0, $WS_POPUP, $WS_EX_LAYERED, WinGetHandle(AutoItWinGetTitle()))
这句是否可以这样 ...
zjg2003 发表于 2009-10-14 23:38


Yes..........
 楼主| 发表于 2009-10-15 09:43:16 | 显示全部楼层
再次感谢各位坛友
发表于 2009-10-15 20:28:09 | 显示全部楼层
呵呵,学习一下。。
发表于 2011-12-4 13:06:14 | 显示全部楼层
顶一下.................
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-10-1 05:30 , Processed in 0.081293 second(s), 19 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表