利用一款不常見的API函式實現視窗的淡入淡出

2021-04-20 19:19:01 字數 2656 閱讀 6393

利用一款不常見的api函式setlayeredwindowattributes可實現視窗的淡入淡出。而且還不影響視窗上的控制項,特別是動畫控制項,效果極佳。另外,在自己做的不規則圖形視窗上實現淡入淡出,效果圖非常漂亮。

該程式一般用在視窗顯示或解除安裝之前。

程式如下:

option explicit

private

declare

function setwindowlong lib

"user32"

alias

"setwindowlonga" (byval hwnd as

long, byval nindex as

long, byval dwnewlong as

long) as

long

private

declare

function getwindowlong lib

"user32"

alias

"getwindowlonga" (byval hwnd as

long, byval nindex as

long) as

long

private

declare

function showwindow lib

"user32" (byval hwnd as

long, byval ncmdshow as

long) as

long

private

declare

function setlayeredwindowattributes lib

"user32" (byval hwnd as

long, byval crkey as

long, byval balpha as

byte, byval dwflags as

long) as

long

private

declare

sub sleep lib

"kernel32.dll" (byval dwmilliseconds as

long)

private

const lwa_alpha = &h2 ' 表示把窗體設定成半透明樣式

private

const lwa_colorkey = &h1 '表示不顯示窗體中的透明色

private

const ws_ex_layered as

long = &h80000

private

const gwl_exstyle = (-20)

private

const sw_show = 5

private

const sw_hide = 0

'設定視窗淡入淡出

public

function transparencyform(frmhwnd as

long, l as

long, m as

long, lstep as

long,delaytime as long ) as

long

'frmhwnd:視窗控制代碼;l:初始值,m:終值,l/m在0-255變化;lstep:迴圈步長,控制顯示速度

'根據步長lstep確定是淡入還是淡出;delaytime:延時引數,單位是毫秒

dim rtn as

long, newrtn as

long

ifnot (l >= 0 and l <= 255) or

not (m >= 0 and m <= 255) then

exit

function

rtn = getwindowlong(frmhwnd, gwl_exstyle) '取得視窗原來樣式

newrtn = rtn or ws_ex_layered '給窗體加上新樣式ws_ex_layered

setwindowlong frmhwnd, gwl_exstyle, newrtn '把新的樣式賦給窗體

if lstep > 0 then

showwindow frmhwnd, sw_show '確認視窗的visible=true

endif

for newrtn = l to m step lstep

transparencyform = setlayeredwindowattributes(frmhwnd, 0, newrtn, lwa_alpha)

sleep (delaytime) '延時,單位是毫秒。此處根據需要取捨。

doevents

next

setwindowlong frmhwnd, gwl_exstyle, rtn '恢復視窗原先的樣式

if lstep < 0 then

showwindow frmhwnd, sw_hide '確認視窗的visible=false

endif

endfunction

呼叫方法:

視窗form1顯示前,呼叫:call transparencyform(form1.hwnd, 0, 255, 2,10)'淡出

視窗form1解除安裝前,呼叫:call transparencyform(form1.hwnd, 255, 0, -2,10)'淡入

一款構建ROP漏洞利用的工具

今天給大家介紹的是一款名叫ropgenerator的rop漏洞利用開發工具,它能夠自動尋找gadget,並構建rop漏洞利用鏈,該工具當前版本支援x86和x64原始碼。工具介紹 ropgenerator使用了ropgadget工具來從二進位制 中提取出可利用的gadget,並利用barf proje...

一款好用的備忘錄製作實現

自己用的安卓手機,平時老是忘記某些事情,於是在網上找了幾款備忘錄軟體,可是沒有自己滿意的。於是乎,開始自己做個吧。先展示下成品 小石備忘錄 好了,開始正文。首先我要定位自己的功能 1.編輯過程中自動實時儲存 2.單個條目設定鬧鐘提醒 3.單個條目改變背景顏色 4.實時搜尋功能 5.加密區 公開區功能...

一款遙控器拆解之後可利用的元器件

遙控手柄拆解,剩餘的可利用的元器件 拆下後蓋上的固定螺絲,包括在電池倉盒中的螺絲釘,可以將遙控手柄後蓋開啟,暴露出其內部的電路板 元件。等。開啟後蓋之後的內部情況 內部的電路板包括有四塊,它們分別是 主要控制電路板及其配件 復合搖柄元件應該是遙控器中最為複雜的部件了。它包括有兩個角度感測電位器 4....