VS2013學會使用spy

2021-07-09 21:57:24 字數 2968 閱讀 5543

mfc有些想實現的功能,可是想不起來控制代碼是什麼,每次查詢不是很方便,這時spy++是乙個不錯的選擇。

先看一下spy++的介紹:

使用 spy++

spy++ (spyxx.exe) 是乙個基於 win32 的實用工具,它提供系統的程序、執行緒、視窗和視窗訊息的圖形檢視。使用 spy++ 可以執行下列操作: 

顯示系統物件(包括程序、執行緒和視窗)之間關係的圖形樹。 

搜尋指定的視窗、執行緒、程序或訊息。 

檢視選定的視窗、執行緒、程序或訊息的屬性。 

直接從檢視中選擇視窗、執行緒、程序或訊息。 

通過滑鼠定位,使用查詢程式

工具選擇視窗。 

使用複雜的訊息日誌選擇引數設定訊息選項。 

提示   使用 spy++ 時,在許多例項中都可以單擊滑鼠右鍵顯示常用命令的彈出式選單。命令是否可用取決於指標的位置。例如,如果在指向視窗檢視中的某項時單擊並且選定的視窗可見,則彈出式「突出顯示」選單項將導致選定視窗的邊框閃爍,從而可以輕鬆地在螢幕上找到該視窗。

啟動 spy++

從「工具」選單中選擇「spy++」。 

注意   只能執行乙個 spy++ 副本。試圖執行 spy++ 的其他副本會將當前執行的 spy++ 置於頂層。

spy++ 是一種唯讀程式。使用 spy++ 不會更改程式操作,但可能降低程式的執行速度。

使用 spy++

spy++ 具有乙個工具欄和若干個超級鏈結,有助於您更快地工作。它還提供「重新整理」命令以更新活動檢視,提供「視窗查詢程式工具」以使監視更為容易,提供「字型」對話方塊以自定義檢視視窗。另外,spy++ 還儲存和還原使用者首選項。

有兩種實用工具與 spy++ 類似:pview(顯示有關程序和執行緒的詳細資訊)以及 ddespy.exe(動態資料交換 (dde) 訊息的監視程式)。

spy++」工具欄

該工具欄出現在選單欄下面。它提供開啟新檢視、啟動或停止訊息流顯示、更改訊息流選項、清除訊息流視窗和查詢視窗的快捷命令。可以使用「檢視」選單上的「工具欄」命令顯示或隱藏工具欄。

按鈕 效果 

建立乙個視窗以顯示系統中的所有視窗和控制項的樹檢視。請參見「視窗」檢視。 

建立乙個視窗以顯示系統中所有程序的樹檢視。請參見「程序」檢視。 

建立乙個視窗以顯示系統中所有執行緒的樹檢視。請參見「執行緒」檢視。 

建立乙個視窗以顯示視窗訊息。此按鈕呼叫「訊息選項」對話方塊,使您除選擇其他選項以外,還選擇將顯示其訊息的視窗。請參見「訊息」檢視。 

啟動訊息記錄並顯示訊息流。僅當「訊息」視窗處於活動狀態(具有焦點)時,此按鈕才可用。請參見啟動和停止訊息日誌顯示。 

停止訊息記錄和訊息流的顯示。僅當「訊息」視窗處於活動狀態(具有焦點)時,此按鈕才可用。請參見啟動和停止訊息日誌顯示。 

顯示「訊息選項」對話方塊。使用此對話方塊選擇視窗和訊息型別以供檢視。僅當「訊息」視窗處於活動狀態(具有焦點)時,此按鈕才可用。請參見選擇「訊息選項」。 

清除活動「訊息」視窗的內容。僅當「訊息」視窗處於活動狀態(具有焦點)時,此按鈕才可用。 

開啟「查詢視窗」對話方塊,這將使您選擇乙個視窗以檢視訊息或查詢屬性。請參見視窗查詢程式工具。 

搜尋當前檢視以查詢匹配的視窗、程序、執行緒或訊息。 

搜尋當前檢視以查詢下乙個匹配的視窗、程序、執行緒或訊息。僅當有效搜尋結果不止乙個時,此按鈕(及相關的選單項)才可用。例如,在視窗樹中使用視窗控制代碼作為搜尋條件時,將產生唯一的結果,因為該視窗樹中只有乙個具有此控制代碼的視窗。在本例項中,「查詢下乙個」不可用。 

搜尋當前檢視以查詢上乙個匹配的視窗、程序、執行緒或訊息。僅當有效搜尋結果不止乙個時,此按鈕(及相關的選單項)才可用。例如,在視窗樹中使用視窗控制代碼作為搜尋條件時,將產生唯一的結果,因為該視窗樹中只有乙個具有此控制代碼的視窗。在本例項中,「查詢上乙個」不可用。

視窗查詢程式工具

使用「視窗查詢程式工具」可以查詢選定視窗的屬性。「查詢程式工具」可以找到禁用的子視窗,並且如果禁用的子視窗相互重疊,還可以辨別要突出顯示的視窗。

查詢要監視的視窗

排列視窗以便使 spy++ 和主題視窗可見。 

從「監視」選單中選擇「查詢視窗」開啟「查詢視窗」對話方塊。 

將「查詢程式工具」拖到所需的視窗。拖動該工具時,對話方塊中將顯示視窗的詳細資訊。 

- 或 - 

如果知道所需視窗的控制代碼(例如,從偵錯程式中),請在「控制代碼」框中鍵入該控制代碼。

在「顯示」下選擇「屬性」或「訊息」以選擇要顯示的資訊的型別。 

單擊「確定」。 

用「查詢視窗」顯示屬性

提示   為減少螢幕混亂,請選擇「查詢視窗」對話方塊中的「隱藏 spy」選項。此選項將移除主 spy++ 視窗,並使「查詢視窗」對話方塊顯示在其他應用程式的上面。當單擊「確定」或「取消」時,或者當清除「隱藏 spy++」選項時,spy++ 主視窗將還原。

展開和摺疊 spy++ 樹

可以使用兩種方法展開和摺疊「視窗」、「程序」以及「執行緒」檢視:在視窗中單擊圖示,或者使用「目錄樹」選單。樹中的 + 和 – 圖示與它們在 visual c++ 專案視窗中的作用相同。

「目錄樹」選單包含下列四種命令:

選單命令 說明 

展開一層 將當前選定的項展開到下乙個級別。 

展開分支 完全展開當前選定的項。 

全部展開 完全展開視窗中所有的項。 

摺疊 完全摺疊當前選定的項。

提示   如果展開乙個程序,將會看到該程序擁有的全部執行緒。如果展開乙個執行緒,將會看到它所擁有的全部視窗的列表。

展開或摺疊 spy++ 樹

突出顯示「視窗」、「程序」或「執行緒」檢視中的乙個項。 

從「目錄樹」選單中選擇一條展開或摺疊命令。

下面如何獲取list的控制代碼的呢?

先開啟乙個任務管理器,然後開啟vs的spy++中查詢視窗,並且拖動到任務管理器中,就會得到屬性檢查器:

這樣得到了類名:syslistview32

這個類名在我呼叫m_list.create(_t("syslistview32"), null, ws_visible | ws_child, crect(30, 80, 300, 150), this, 8921);中使用了。

mongo c driver使用VS2013編譯

git clonegit clone mongo c driver win64 bin.7z 這裡先需要使用cmake工具來生成vs2013的專案檔案。如果沒有安裝cmake,請先安裝。進入mongo c driver src libbson目錄,開啟命令列視窗,執行以下命令 mkdir msvc1...

使用VS2013除錯FluorineFx程式

vs2013,建立 fluorinefx web 專案方法 先新建 專案 web 選擇.net 3.5 asp.net 窗體程式來新建乙個專案。複製 log templates web inf 資料夾過來,新增 gateway.aspx 檔案,新增引用 antlr.runtime.dll fluor...

使用VS2013編譯Detours庫

可能我們開發程式的時候,會用到inline hook api的技術。inline hook 的原理是在系統訪問乙個函式的時候先替換原函式入口處的內容跳轉到自己設計的hook函式中,然後在自己函式中進行hook工作。但在並行系統中,很可能有個執行緒就在這個時候呼叫了被自己改掉的系統函式,出現我們無法預...