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

[轉貼] VB入門必看——續集五(終結)

vion 發表於 2009-3-12 16:46:47 | 只看該作者 回帖獎勵 |倒序瀏覽 |
再看第二個FindWindowEx,這個API是在視窗列表中尋找與指定條件相符的第一個子視窗,原型如下:

  

Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long


    看堶悸滌捊ヾA第一個和第二個:ByVal hWnd1 As LongByVal hWnd2 As Long,這堻˙搨n傳入控制碼,再看第三個和第四個:ByVal lpsz1 As String, ByVal lpsz2 As String,這堜珥n傳入的是字串。具體意思如下:


hWnd1 ----------
Long
,在其中查找子的父視窗。如設為零,表示使用桌面視窗(通常說的頂級視窗都被認為是桌面的子視窗,所以也會對它們進行查找)



hWnd2 ----------
Long
,從這個視窗後開始查找。這樣便可利用對FindWindowEx的多次調用找到符合條件的所有子視窗。如設為零,表示從第一個子視窗開始搜索



lpsz1 ----------
String
,欲搜索的類名。零表示忽略,注意一般傳入vbNullString



lpsz2 ----------
String
,欲搜索的類名。零表示忽略,注意一般傳入vbNullString


    用實踐幫我們分析,這媮椄O拿記事本開刀。打開一個記事本,新建一個標準EXE,接著新建一個CommandButtonCaption設置為:設置文本。OK,寫入以下代碼:

  

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


Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long


Private Declare Function EnableWindow Lib "user32" (ByVal hwnd As Long, ByVal fEnable As Long) As Long



Private Sub Command1_Click()


Dim WindowHandle As Long, ChildWindowHandle As Long

   

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

        

If WindowHandle Then '
如果獲取控制碼成功

               

ChildWindowHandle = FindWindowEx(WindowHandle, 0, "Edit", vbNullString)

        

If ChildWindowHandle Then '
如果成功獲取子控制碼


EnableWindow ChildWindowHandle, False '
禁用子窗口


Else


MsgBox "
無法獲取子窗口"


End If


End If


End Sub

  

    好了,幫大家分析。看第一行:Dim WindowHandle As Long, ChildWindowHandle As Long,用於儲存獲取的控制碼的。WindowHandle = FindWindow(vbNullString, "無標題 - 記事本")這個就不用講了,上面已經講過。

  

ChildWindowHandle = FindWindowEx(WindowHandle, 0, "Edit", vbNullString)
,這一段是通過我們已經獲取的記事本控制碼獲取其中的子視窗控制碼。大家可以用Spy++查看到記事本的TextBox類,然後根據類名寫入即可。


  

EnableWindow ChildWindowHandle, False
這又是一個新的API,雖然前面我沒有前過,但是這個API使用起來及其簡單。這個API中有兩個參數,第一個理所當然是傳入視窗控制碼,第二個為Long變數,其實這媕雩茬]為Boolean變數好些,主要是用來處理當前視窗是否可用。True可用,False禁用。


  
    現在F5運行,記得打開記事本哦,然後點擊Command1,看看能不能在記事本的文本框中輸入字串?是否被禁用了?

  
    小提示:EnableWindow之所有講出來,是希望提高大家使用API的興趣,有些被禁用的視窗你可以使用這個API把它啟動,
至於怎麼使用就看你自己了,這媯馱j家佈置一個作業,呵呵,自己去完成吧。



  
    最後一個APIWindowFromPoint,這個API主要是獲取當前座標的視窗控制碼,不是有人想知道當前滑鼠指標位置的視窗控制碼嗎?
用這個是不錯的選擇,原型如下:
  


Private Declare Function WindowFromPoint Lib "user32" Alias "WindowFromPoint" (ByVal xPoint As Long, ByVal yPoint As Long) As Long


    兩個參數,一個是xPoint(x座標值),一個是yPoint(y座標值),現在你可以在這個兩個參數分別傳入其他視窗的座標值就可以獲取其他視窗的控制碼了。
可以看到為Function聲明,返回值就是咱們需要的控制碼。

  
    咱們想實現的功能是獲取當前滑鼠指標位置的控制碼,所以這媟穔M需要用到GetCursorPos了,結合前面所講的,新建一個標準EXE,添加一個Timer控制項,Interval設置為100Enabled=TrueOK,寫如以下代碼:

  

Private Declare Function WindowFromPoint Lib "user32" (ByVal xPoint As Long, ByVal yPoint As Long) As Long

Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long

Private Type POINTAPI


x As Long



y As Long


End Type


Private Sub Timer1_Timer()


Dim lpPoint As POINTAPI


Dim WindowHandle As Long

   

GetCursorPos lpPoint '
獲取當前滑鼠指標座標


WindowHandle = WindowFromPoint(lpPoint.x, lpPoint.y)

   

Me.Caption = "
當前滑鼠指標位置控制碼:" & WindowHandle


End Sub


  
    好了,最後一次給大家分析了,至於GetCursorPos的使用與說明前面已經講過,這堣ㄕA分析。
看看WindowHandle = WindowFromPoint(lpPoint.x, lpPoint.y)這句,它是通過GetCursorPos獲取的滑鼠座標值獲取當前滑鼠座標位置的控制碼。
最後一句我就不用說了,在程式視窗顯示獲取的控制碼。


  
  
    好了,API入門已經告一段落,其實我還想寫下去,不過似乎看的人多,回應的人少,很是打擊我寫下去的心情。不過還是希望大家能從上面學到一些知識。具體的API應用我就不多說,大家可以自己慢慢體會。如果你把以上我講的全部都搞懂的話,那麼證明你已經基本瞭解API的使用方法了,那下面就靠你自己了。至此,我希望我帶了一個好頭幫助你瞭解API



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

使用道具 舉報


dduoduo 當前離線
UID
1151669
熱心
207 值
嘉獎
0 次
違規
0 次
在線時間
97 小時
經驗
200 點
積分
200
精華
0
最後登錄
2013-3-18
閱讀權限
25
註冊時間
2009-3-11
論壇幣
55 幣
聯合幣
0 枚
幸運鑽
0 顆
招待卷
0 點
查看詳細資料
Rank: 3
dduoduo 2009-3-23 22:47:47
感謝版大熱心教學.版大的內容非常不錯YCT46B
回覆

使用道具 舉報

allenintw 該用戶已被刪除
allenintw 2009-3-31 13:46:46
提示: 作者被禁止或刪除 內容自動屏蔽
回覆

使用道具 舉報

wesker 當前離線
UID
255923
熱心
28 值
嘉獎
0 次
違規
0 次
在線時間
10 小時
經驗
28 點
積分
28
精華
0
最後登錄
2009-6-10
閱讀權限
20
註冊時間
2007-3-1
論壇幣
41 幣
聯合幣
0 枚
幸運鑽
0 顆
招待卷
0 點
查看詳細資料
Rank: 2Rank: 2
wesker 2009-6-9 16:36:54
真是太好了, 我學了不少, 不過我想現在才是開始吧((汗
回覆

使用道具 舉報

Trunone 當前離線
UID
915268
熱心
17 值
嘉獎
0 次
違規
0 次
在線時間
27 小時
經驗
13 點
積分
335
精華
0
最後登錄
2018-8-6
閱讀權限
25
註冊時間
2008-7-2
論壇幣
272 幣
聯合幣
6 枚
幸運鑽
0 顆
招待卷
0 點
查看詳細資料
Rank: 3
5
Trunone 2009-6-20 14:37:16
不會啊 希望你能再多寫一些 我覺得獲益良多啊!
回覆

使用道具 舉報

5467891232 當前離線
UID
649597
熱心
116 值
嘉獎
0 次
違規
0 次
在線時間
62 小時
經驗
89 點
積分
267
精華
0
最後登錄
2015-9-8
閱讀權限
25
註冊時間
2007-11-19
論壇幣
396 幣
聯合幣
6 枚
幸運鑽
0 顆
招待卷
0 點
查看詳細資料
Rank: 3
6
5467891232 2009-7-28 02:23:34
大大 續集4沉下去了
哪裡可以看到啊
回覆

使用道具 舉報

大地文仔 當前離線
UID
384099
熱心
53 值
嘉獎
0 次
違規
0 次
在線時間
12 小時
經驗
40 點
積分
467
精華
0
最後登錄
2017-12-24
閱讀權限
25
註冊時間
2007-5-28
論壇幣
351 幣
聯合幣
9 枚
幸運鑽
4 顆
招待卷
0 點
查看詳細資料
Rank: 3
7
大地文仔 2009-7-30 08:46:13
第一集到第五  我看了不過有點不懂大大 我可以吧你的文下載下來嗎?拜託我不會盜文的<<要列印來慢慢看@@不然好複雜  對了大大我看過別人用類似遊戲修改大師來查血量的記憶碼  

以後記憶碼都要這樣查嗎<<<有點不對題只是想問問  大大你一到五我只回五<<怕被人說是灌水@@對不起了
回覆

使用道具 舉報

0918201134 當前離線
UID
1280738
熱心
26 值
嘉獎
0 次
違規
0 次
在線時間
3 小時
經驗
26 點
積分
26
精華
0
最後登錄
2009-9-26
閱讀權限
20
註冊時間
2009-7-30
論壇幣
67 幣
聯合幣
0 枚
幸運鑽
0 顆
招待卷
0 點
查看詳細資料
Rank: 2Rank: 2
8
0918201134 2009-7-30 17:00:41
VB教學阿~
有點興趣~
來看看~~YCT66B
回覆

使用道具 舉報

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

使用道具 舉報

yaochester 當前離線
UID
1364547
熱心
43 值
嘉獎
0 次
違規
0 次
在線時間
8 小時
經驗
47 點
積分
47
精華
0
最後登錄
2009-12-14
閱讀權限
20
註冊時間
2009-12-3
論壇幣
96 幣
聯合幣
0 枚
幸運鑽
0 顆
招待卷
0 點
查看詳細資料
Rank: 2Rank: 2
10
yaochester 2009-12-7 14:39:13
寫的好啊 , 真想一下子就學會 , 要多多練習才行. 謝謝大大的分享.感恩啊
回覆

使用道具 舉報

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

12下一頁

手機版 | Archiver | 外掛聯合國

GMT+8, 2024-9-28 01:20 , Processed in 0.075875 second(s), 16 queries , Memcache On.

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

回頂部
第二步?
第三步?