Windows按鍵突破專家的原理

來源:互聯網
上載者:User

相信在window按鍵突破專家沒有出來的時候,很多人還不知道軟體還可以這樣編的吧,本人也是一樣,當知道有window按鍵突破專家這個軟體時,仔細去想一下它的實現原理,才突然恍然大悟,原來原理居然是這麼的簡單,為什麼以前我就沒有想到呢。

好了,不說那麼多廢話,直接進入主題,我先是說說按鍵突破的原理。實現按鍵突破的其實就是EnableWindow這個函數。

BOOL EnableWindow(
HWND hWnd,
BOOL bEnable
);

hWnd 指定將要啟用或者禁用的視窗的控制代碼;

bEnable 若為TRUE則啟用視窗,為FALSE則禁用視窗;

只要把EnableWindow的第二個參數設定為TRUE,第一個參數填控制項的控制代碼就將原來被禁止的控制項重新變為可用。

現在的主要的問題是怎麼得到控制項的控制代碼,用vc++的朋友,應該都用過spy++這個強大的工具吧,它可以得到任意控制項的控制代碼,和視窗的類名,看完這篇文章後,讀者們也可以自己做一個屬於自己的spy++啦。

先介紹一下RealChildWindowFromPoint這個函數。該函數的功能是用來擷取在指定點上的子視窗的控制代碼 :

HWND RealChildWindowFromPoint(
HWND hwndParent, // 父視窗的控制代碼
POINT ptParentClientCoords // 以客戶座標指定的點
)

傳回值 :

返回其子視窗控制代碼

RealChildWindowFromPoint函數只能夠尋找到由 ptParentClientCoords 所得到的子視窗,但是無法得到最深層的視窗,也就是說如果有兩個視窗重疊,就無法見到下面的視窗,這樣的情況是經常出現的。

“第一個子視窗”的視窗和“最深層的視窗”的複選框視窗就重疊了,如果用 RealChildWindowFromPoint 就只能得到“第一個子視窗”的視窗,而無法的到“最深層的視窗”的複選框,所以只簡單的調用這個函數是無法實現Spy++的功能的。

大家來看看這個函數,這個函數會將滑鼠所在的位置的視窗控制代碼賦予*phWnd。讀者下次想得實現spy++的功能就調用這個函數就可以了。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.