黃易群俠傳M脫機外掛應用程式黃易神行
3043
5

[轉貼] VB入門必看——續集四

vion 發表於 2009-3-12 16:44:32 | 只看該作者 回帖獎勵 |倒序瀏覽 |
現在咱們開始分析,第一個參數傳入控制碼,第二個我上面講過,實現什麼功能傳入什麼參數,
這堳平怓O實現的視窗永久置前的功能,所以傳入HWND_TOPMOST常數,現在看看其實座標,如果你不想改變視窗的具體位置的話,
這堨i不設為0,再看看後面的wFlags,我傳入了兩個常數,這兩個常數的相關說明請大家看看上面就知道,
主要是不改變視窗位置和不改變視窗大小的前提下把視窗置前,其他常數如果大家有興趣可以自己試試。

  
    最後一個,看看Se●綜合木馬網站●ont=新細明體],這塈畯n解釋一番,這個API所實現的功能呢就是改變視窗外觀,也就是咱們所說的異形視窗等,
通過這個API咱們可以把視窗改變成任何形狀,在API流覽器找到這個API,如下:

  

Private Declare Function SetWindowRgn Lib "user32" Alias "SetWindowRgn" (ByVal hWnd As Long, ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long


    好了,第一個參數,控制碼。第二個參數,Long變數,這婸搨n傳入什麼咱們下面會講到。第三個,Boolean變數,
可以說明這婸搨n傳入布林值,Redraw為重畫的意思,所以如果我們用這個API改變視窗形狀,這婸搨n為True,表示重畫視窗。

  
    現在新建一個標準EXE,然後把FormScaleMode設置成3-Pixel,我們知道Windows是以圖元為單位的,
所以使用這個API進行設置的時候是以圖元為單位進行處理視窗外觀。然後把BorderStyle設置為0-None,這樣看得更明顯。好了,寫入以下代碼:

  

Private Declare Function SetWindowRgn Lib "user32" (ByVal hWnd As Long, ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long


Private Declare Function CreateRoundRectRgn Lib "gdi32" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long, ByVal X3 As Long, ByVal Y3 As Long) As Long


Private Sub Form_Load()


Dim hRgn As Long

   

hRgn = CreateRoundRectRgn(0, 0, Me.ScaleWidth, Me.ScaleHeight, 10, 10)


SetWindowRgn Me.hWnd, hRgn, True


End Sub


    我不得不說一下這塈琱S用了一個API,主要是因為使用SetWindowRgn API是需要和其他API一起進行工作的,首先讓我們先看看CreateRoundRectRgn這個API
分析如下:

  
    整體的意思是:創建圓角矩形。這奡ㄔ雂j家一個技巧,一般API中包函Rgn字元的都是代表可以改變物件外觀的。
可以看看我們使用的兩個API,一個是SetWindowRgn(Rgn),一個是CreateRoundRectRgn(Rgn),希望你能明白其中的共同點。

  參數:x1,y1,x2,y2,x3,y3這些都是座標值,具體說明見以下:
  

X1,Y1 ----------
Long
,矩形左上角的XY座標


X2,Y2 ----------
Long
,矩形右下角的XY座標


X3 -------------
Long
,圓角橢圓的寬。其範圍從0(沒有圓角)到矩形寬(全圓)


Y3 -------------
Long
,圓角橢圓的高。其範圍從0(沒有圓角)到矩形高(全圓)


    所以上面的代碼具體是先通過CreateRoundRectRgn創建一個圓角矩形物件,然後通過Se●綜合木馬網站●ont=新細明體]來改變視窗的外觀。
  
    小提示:使用CreateRoundRectRgn可以創建圓角矩形,也可以使用CreateEllipticRgn創建橢圓形,CreatePolyPolygonRgn創建多邊形,CreateRectRgn矩形等,細心觀察它們最後三個字元 Rgn 呵呵,明白了吧。

3,獲取其他視窗的控制碼
  
    這個我本來打算不講的,不過網友們既然提出來了,我也只好詳細說說。一般獲取其他視窗的控制碼使用以下API

  

FindWindow
FindWindowExWindowFromPoint

  

    這兩個API就足矣,先看看第一個API的原型:

  

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long


    堶惜@共有兩個參數,先看第一個:ByVal lpClassName As String,字串變數,所以這婸搨n傳入字串,
第二個ByVal lpWindowName As String,同樣一個字串變數,這堣]需要傳入字串。再看這個APIFunction,有返回值的,那返回值就是我們需要的控制碼了。
好了,現在瞭解了兩個參數的具體傳遞類型,那我們現在就要知道這兩個參數中到底應該傳入哪些值?如下:

  

ByVal lpClassName As String
lpClassName:類名。指視窗類名,如果忽略則傳入vbNullString

  


ByVal lpWindowName As String,lpWindowName
:窗口名稱。指視窗文本,如果忽略則傳入vbNullString


  
    現在明白了兩個參數需要傳入哪些值就好辦了,一個視窗的類名咱們有可能不知道,但是一個視窗的名稱就好辦了。
如:咱們打開記事本程式,可以看到視窗標題顯示為“無標題-記事本”。
好了這就是咱們需要的,現在咱們就要通過這個視窗標題來獲取記事本的控制碼。新建一個標準EXE,然後輸入以下代碼:



  

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long


Private Sub Form_Load()


Dim WindowHandle As Long

   

WindowHandle = FindWindow(vbNullString, "
無標題 - 記事本")

        

MsgBox WindowHandle


End Sub

  

    好了,F5運行,顯示MsgBox訊息方塊,如果不為0,那麼咱們就獲取成功了,如果為0,那麼表示獲取失敗,
這個時候你有必要檢查一下你所要獲取的視窗文本是否符合你所要獲取的那個視窗文本(呵,這句話還真長!)。具體代碼意思我就不講了,大家可以自己分析下。

  
    小提示:這個時候咱們已經得到控制碼了,具體得到這個控制碼幹什麼?那就看你了。給個例子,如下:

  

SetWindowText WindowHandle, "
哈哈"


  
    看看把這個代碼放在上面代碼中試下,呵呵!注意,SetWindowText你要先聲明這個API。別忘了。

收藏收藏 分享分享 讚 幹 分享分享 FB分享
回覆

使用道具 舉報


卍小乂樟卍 當前離線
UID
1063218
熱心
402 值
嘉獎
0 次
違規
0 次
在線時間
503 小時
經驗
387 點
積分
387
精華
0
最後登錄
2013-7-14
閱讀權限
25
註冊時間
2008-11-4
論壇幣
5 幣
聯合幣
0 枚
幸運鑽
0 顆
招待卷
800 點
查看詳細資料
Rank: 3
卍小乂樟卍 2009-7-4 15:49:49
謝謝大大的無私分享YCT45B
回覆

使用道具 舉報

jaydiy 當前離線
UID
1140322
熱心
50 值
嘉獎
0 次
違規
0 次
在線時間
17 小時
經驗
54 點
積分
54
精華
0
最後登錄
2009-12-16
閱讀權限
20
註冊時間
2009-2-22
論壇幣
533 幣
聯合幣
0 枚
幸運鑽
0 顆
招待卷
0 點
查看詳細資料
Rank: 2Rank: 2
jaydiy 2009-8-2 18:31:33
謝謝大大的教學~來去照大大的文章打一次跑看看
                     
希望可以成功~YCT65B
回覆

使用道具 舉報

隨火 當前離線
UID
1294953
熱心
214 值
嘉獎
0 次
違規
0 次
在線時間
6 小時
經驗
14 點
積分
14
精華
0
最後登錄
2011-4-5
閱讀權限
10
註冊時間
2009-8-20
論壇幣
78 幣
聯合幣
0 枚
幸運鑽
0 顆
招待卷
0 點
查看詳細資料
Rank: 1
隨火 2009-9-1 10:17:53
哦原來是這樣阿謝謝你無私的分享熱情的教學
回覆

使用道具 舉報

yaochester 當前離線
UID
1364547
熱心
43 值
嘉獎
0 次
違規
0 次
在線時間
8 小時
經驗
47 點
積分
47
精華
0
最後登錄
2009-12-14
閱讀權限
20
註冊時間
2009-12-3
論壇幣
96 幣
聯合幣
0 枚
幸運鑽
0 顆
招待卷
0 點
查看詳細資料
Rank: 2Rank: 2
5
yaochester 2009-12-7 14:51:04
謝謝大大的用心分享 , 請繼續分享好的技術文章.
回覆

使用道具 舉報

sammyiannie 當前離線
UID
632864
熱心
18 值
嘉獎
0 次
違規
0 次
在線時間
7 小時
經驗
14 點
積分
64
精華
0
最後登錄
2018-8-6
閱讀權限
20
註冊時間
2007-11-8
論壇幣
19 幣
聯合幣
6 枚
幸運鑽
0 顆
招待卷
0 點
查看詳細資料
Rank: 2Rank: 2
6
sammyiannie 2010-8-26 11:52:00
挖賽我終於學到這裡了得到控制權真酷,可以做壞事了
嘿嘿嘿
回覆

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 註冊


手機版 | Archiver | 外掛聯合國

GMT+8, 2025-1-19 03:22 , Processed in 0.052976 second(s), 17 queries , Memcache On.

版權說明:
  本站不會製作、經銷、代理外掛程式。僅免費提供外掛程式下載前之掃毒及掃木馬等安全檢測驗證,協助會員遠離盜號危險程式。本站所有資料均來自網際網路收集整理,說明文字暨下載連結轉載自原程 式開發站。站上出現之公司名稱、遊戲名稱、程式等,商標及著作權,均歸各公司及程式原創所有,本站程式所有權歸外掛聯合國所有。本程式所有權歸外掛聯合國所有.......

回頂部
第二步?
第三步?