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

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

vion 發表於 2009-3-11 21:35:35 | 只看該作者 回帖獎勵 |倒序瀏覽 |

   GetWindowThreadProcessId,這次玩玩視窗進程,我估計有些人只要看見與進程有關的東東也會變得興奮,呵呵!好了,先看看這個API是什麼樣的?如下:

  

Private Declare Function GetWindowThreadProcessId Lib "user32" Alias "GetWindowThreadProcessId" (ByVal hwnd As Long, lpdwProcessId As Long) As Long


  
    看表面意思:Get(獲取)Window(窗口)Thread(線程)Process(程式)Id(ID),組合:獲取當前線程的視窗進程ID。至於進程ID要著有什麼用,自己以後深入32編程就知道了。

    看看參數,ByVal hwnd As Long,哈哈,熟悉吧,一個hWnd控制碼。lpdwProcessId As Long這個就是咱們需要的進程ID,老規矩,新建標準EXE,添加一個CommandButton,屬性:Caption=獲取視窗進程ID。代碼如下:

  

Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwProcessId As Long) As Long


Private Sub Command1_Click()


Dim PID As Long

   

GetWindowThreadProcessId Me.hwnd, PID

   

MsgBox "
視窗進程的ID是:" & PID


End Sub

  

    我已經習慣了給大家分析了。首先看看第一個參數,ByVal hwnd As Long,又是控制碼來的(問:廢話!答:教會了你也別這樣啊)lpdwProcessId As Long,這個就要注意了,看看這個參數的傳遞方式,是以ByRef進行傳遞的(問:呵呵,不懂什麼意思?答:不懂?轉回去看過程函數這章),也就是說ByRef是以位址進行傳遞的,過程中可以改變傳遞的參數值。明白了嗎?還不明白的話回去乖乖看書吧!現在明白了傳遞方式,也就是說我們聲明的PID是用來獲取視窗進程ID的,厲害啊。


F5
,運行之,點擊Command1PID出來了吧?沒出來我馬上從十樓跳下去。


  
    溫馨小提示^_^hWnd可以傳入其他視窗控制碼,同樣可以獲取其他視窗進程ID

  
    接下來我們再來看看Set(設置)Set什麼呢?當然還是Window(視窗)容易些,先列出幾個常用的API

  

SetWindowLong
Se●綜合木馬網站●ont=新細明體]、Se●綜合木馬網站●ont=新細明體]、SetWindowText

  
接上面的。

    首先咱們先看SetWindowText,咱們在上面講過GetWindowText這個APIGetWindowText是用來獲取視窗文本的,而這個正好相反。現在可以看看表面意思Set(設置)Window(視窗)Text(文本),好了這樣理解就夠了,我們已經知道這個API是設置視窗文本的,接著咱們就到API流覽器中找找這個API,如下:

  

Private Declare Function SetWindowText Lib "user32" Alias "SetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String) As Long


    接著咱們看堶惟珨搨n傳遞的參數,一共有兩,第一個ByVal hwnd As Long我就不用說了,傳入控制碼唄,第二個ByVal lpString As String,其中聲明的lpString是字串變數,可想而知,這婸搨n傳入字串,好了,開始實踐。新建一個標準EXE,然後添加一個TextBox控制項,然後再添加一個CommandButton,寫入以下代碼:

  

Private Declare Function SetWindowText Lib "user32" Alias "SetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String) As Long



Private Sub Command1_Click()


SetWindowText Text1.hwnd, "
這是咱們設置的文本"


End Sub


  
    呵呵,這個看似比前面的更簡單,不過我還是要囉嗦一下,首先把Text1的控制碼傳入第一個參數,這樣API知道咱們需要操作哪個視窗,第二個是一個字串變數,所以這奡N是我們需要傳入的文本。好了,F5運行,點擊Command1OK
  

    再看Se●綜合木馬網站●ont=新細明體],可以說這個API可以看成設置視窗位置,但是最終的實現效果取決於咱們傳遞的參數,好了,在API流覽器中找到這個API,如下:

  

Private Declare Function SetWindowPos Lib "user32" Alias "SetWindowPos" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long


    呵!好傢伙,這個API看起來有些複雜啊?不過別擔心,有我在嘛,我會幫你好好分析的,這媮棌苳j家別光我一個人分析,必須把自己融入進來,咱們一起分析這樣不更有趣?好了,廢話少說,先看第一個參數:
  


ByVal hwnd As Long
這塈痟N不講了,傳入視窗控制碼

  


ByVal hWndInsertAfter As Long
好了,看看這個!hwndInstrAfter,可以看到媊悒]函有hwnd字元,這時你可能會說我前面不是已經說過嘛,只要看見包函有hwnd字元的都應該傳入控制碼嘛?呵呵,沒錯,你很聰明,記得我說的話呢!在這婺堣@下你,別驕傲啊!現在咱們好好分析一下這個地方應該傳入哪些參數!打開MSDN,不好意思是英文,這塈痟N把翻譯過來的說明放上來,如下:


  

hWndInsertAfter -
Long
,窗口控制碼。在視窗列表中,視窗hwnd會置於這個視窗控制碼的後面。也可能選用下述值之一:


  

HWND_BOTTOM
將視窗置於視窗列表底部


  

HWND_TOP

將窗口置於Z序列的頂部;Z序列代表在分級結構中,視窗針對一個給定級別的視窗顯示的順序


  

HWND_TOPMOST
將窗口置於列表頂部,並位於任何最頂部窗口的前面


  

HWND_NOTOPMOST
將窗口置於列表頂部,並位於任何最頂部窗口的後面


  
    可以看到這個地方有四個參數供我們選擇,一般我們會使用第三個API常數和第四個API常數,這幾個API常數都可以在API流覽器中找到,至於具體實現什麼功能我相信大家都知道吧,後面有寫呢!

  
    再看看後面的幾個 x,y,cx,cy 分別為Long變數,我上面講過,Se●綜合木馬網站●ont=新細明體]可以看成設置視窗位置嘛,所以這堬z所當然是傳入相關的座標值,如果忽略則為0,自己可以試下。

  

ByVal wFlags As Long,
這個參數,我又說過,看看字元Flags,呵呵,熟悉吧,所以這堳平抳搨n傳入相關的標識常數,利用咱們以前學過的常數分析法進行分析,Set(S)Window(W)Pos(P)=SWP_ ,可以看到相關的常數了吧?這塈琝漎袺鰡`數的說明發上來大家看下,如下:


  

SWP_DRAWFRAME
圍繞視窗畫一個框

  

SWP_HIDEWINDOW
隱藏視窗

  

SWP_NOACTIVATE
不啟動窗口

  

SWP_NOMOVE
保持當前位置(xy設定將被忽略)

  

SWP_NOREDRAW
視窗不自動重畫

  

SWP_NOSIZE
保持當前大小(cxcy會被忽略)

  

SWP_NOZORDER
保持窗口在列表的當前位置(hWndInsertAfter將被忽略)

  

SWP_SHOWWINDOW
顯示視窗

  

SWP_FRAMECHANGED
強迫一條WM_NCCALCSIZE消息進入視窗,即使視窗的大小沒有改變


    所以我說過,一個這樣的API他具體實現的功能取決於你所傳遞的參數。假設這堳平抳搨n實現一個視窗永遠置前的功能,首先新建一個標準EXE,輸入以下代碼:

  

Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long

 Private Const HWND_TOPMOST = -1
 Private Const SWP_NOMOVE = &H2
 Private Const SWP_NOSIZE = &H1
 Private Sub Form_Load()
     SetWindowPos Me.hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE
 End Sub

   
晚了,明天繼續~!
收藏收藏 分享分享 讚 幹 分享分享 FB分享
回覆

使用道具 舉報


luoumhe 當前離線
UID
1079150
熱心
236 值
嘉獎
0 次
違規
0 次
在線時間
241 小時
經驗
182 點
積分
182
精華
0
最後登錄
2012-3-31
閱讀權限
20
註冊時間
2008-11-26
論壇幣
533 幣
聯合幣
2 枚
幸運鑽
0 顆
招待卷
19386 點
Yahoo! 查看詳細資料
Rank: 2Rank: 2
luoumhe 2009-3-15 15:00:51
版大....看你的教學ㄧ直到第3篇了 發現
常常會出現 [e●綜合木馬網站●ont=新細明體] 這一段
他到底是什麼意識 好像蓋住了什麼重要的字眼YCT37B
回覆

使用道具 舉報

魔男狂者 當前離線
UID
1156698
熱心
45 值
嘉獎
0 次
違規
0 次
在線時間
8 小時
經驗
45 點
積分
45
精華
0
最後登錄
2009-4-1
閱讀權限
20
註冊時間
2009-3-19
論壇幣
5 幣
聯合幣
0 枚
幸運鑽
0 顆
招待卷
0 點
查看詳細資料
Rank: 2Rank: 2
魔男狂者 2009-3-19 12:28:39
多謝大大的無私分享,小弟也在學VB,有空一起交流一下.
回覆

使用道具 舉報

隨火 當前離線
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:16:47
哦原來是這樣阿謝謝你無私的分享熱情的教學
回覆

使用道具 舉報

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:48:08
這位大大真是太辛苦你了 , 感恩再感恩 .
回覆

使用道具 舉報

kaiben1234 當前離線
UID
1333463
熱心
49 值
嘉獎
0 次
違規
0 次
在線時間
28 小時
經驗
46 點
積分
46
精華
0
最後登錄
2013-10-16
閱讀權限
20
註冊時間
2009-10-18
論壇幣
120 幣
聯合幣
1 枚
幸運鑽
0 顆
招待卷
0 點
查看詳細資料
Rank: 2Rank: 2
6
kaiben1234 2009-12-7 18:15:03
我要賜教....(睇)睇睇~_~!!!!!!!!!!!!!!!!!!!!!!!!!!
回覆

使用道具 舉報

blackm28 該用戶已被刪除
7
blackm28 2010-1-13 14:01:16
提示: 作者被禁止或刪除 內容自動屏蔽
回覆

使用道具 舉報

sammyiannie 當前離線
UID
632864
熱心
18 值
嘉獎
0 次
違規
0 次
在線時間
7 小時
經驗
14 點
積分
64
精華
0
最後登錄
2018-8-6
閱讀權限
20
註冊時間
2007-11-8
論壇幣
19 幣
聯合幣
6 枚
幸運鑽
0 顆
招待卷
0 點
查看詳細資料
Rank: 2Rank: 2
8
sammyiannie 2010-8-26 11:41:52
又學到2招了繼續爬文去XD
謝謝分享優
回覆

使用道具 舉報

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


手機版 | Archiver | 外掛聯合國

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

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

回頂部
第二步?
第三步?