




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
VC自帶的工具SPY++使用_山外有山VC自帶的工具SPY++使用2009年04月24日星期五17:27VC自帶的工具SPY++一直不會(huì)用,在網(wǎng)上找了一個(gè)篇文章,感覺比較好,拿來共享呵呵用spy++查看消息,通過發(fā)送消息控制程序Windows程序都是基于消息機(jī)制的,每個(gè)程序中都會(huì)有各種各樣的消息,如果想通過消息來控制程序的運(yùn)行,我們只用關(guān)心程序中的命令消息(WM_COMMAND)就行了,其他關(guān)于程序界面等等的消息,可以不管。要查看程序運(yùn)行的消息,使用VisualStudio中自帶的工具spy++。打開spy++,選擇spy|Windows,然后就會(huì)顯示出當(dāng)前的所有窗口,一些主窗口中的字窗口也會(huì)顯示出來,比如說工具欄窗口,編輯窗口等等。在其中找到目標(biāo)窗口。以下是我運(yùn)行spy++時(shí)顯示的部分spy++窗口,其中有FineReader窗口001702A6-tooltips_class32000C01FE-"M"MSCTFIMEUl001C02A0-"DefaultIME"IME002401DO-tooltips_class32003B009A-"MicrosoftSpy++-[Windows2]"Afx:100000:0:10011:0:260051500300244-"M"MSCTFIMEUl002E032E-FineReaderTipWindowClass004F02B4-tooltips_class3200410254-"Untitledbatch-ABBYYFineReader7.0ProfessionalEdition"FineReader7MainWindowClass003E0370-"DDEServerWindow"OleDdeWndClass005002DC-ComboLBox000D02B6-ComboLBox00270320-ComboLBox00AB0366-ComboLBox00A000A4-tooltips_class32(注:以上是使用printscreen抓圖,然后使用FineReader識(shí)別的結(jié)果)選擇FineReader窗口,點(diǎn)擊右鍵,彈出菜單中選擇“Messages”,即可開始監(jiān)聽該窗口的消息。你要是實(shí)際操作一下就會(huì)發(fā)現(xiàn),消息非常多,根本無法從中找到自己想看的消息。為了選出我們想看的消息,我們需要對(duì)消息進(jìn)行過濾。選擇Messages|Options,彈出菜單中選擇MessagesTab頁(yè),可以看見很多消息過濾選項(xiàng)。我想監(jiān)聽WM_COMMAND消息,所以我ClearAll之后,只選擇General消息。以上設(shè)置好之后,開始監(jiān)聽消息,然后到FineReader窗口中點(diǎn)擊Read快捷按鈕(安該按鈕之后,F(xiàn)ineReader開始識(shí)別當(dāng)前選擇的圖片),然后回到spy++,監(jiān)聽到的消息仍然不少,但是可以找到我們要查看的消息。如果你只按了一個(gè)按鈕或者一個(gè)菜單,在監(jiān)聽到的消息中間,你應(yīng)該可以找到兩個(gè)WM_COMMAND消息,一個(gè)發(fā)送出去的消息,一個(gè)返回的消息,相信信息見下文。以下是我在spy++中監(jiān)聽到的消息,其中有一個(gè)WM_COMMAND消息<00039>00410254R...................WM_NOTIFY<00040>00410254S...................WM_COMMANDv/NotifyCode:0(sentfromamenu]wlD:4O2O3<00041>00410254S...................WM_GETTEXTcchTextMax:512lpszText:0012E200<00042>00410254R...................WM_GETTEXTcchCopied:72lpszText:0012E200f'U'l(注:以上是使用printscreen抓圖,然后使用FineReader識(shí)別的結(jié)果)雙擊這個(gè)WM_COMMAND消息,可以看見關(guān)于這個(gè)消息的詳細(xì)信息,如下WindowHandle001F00AA//FineReader窗口句柄NestingLevel2Message0111(Sent)//WM_COMMAND消息ID,這個(gè)消息是發(fā)送出的消息WM_COMMANDwParam00009D0B//WM_COMMAND消息的兩個(gè)參數(shù)lParam00000000在spy++中監(jiān)聽到的另外一個(gè)WM_COMMAND消息<00089>00410254S...................WM_GETTEXTcchTextMax:512lpszText:0012E1E0<00090>00410254R...................WM_GETTEXTcchCopied:71lpszText:0012E1E0(V")<00092>00410254S...................WM_NOTIFYidCtrl:177pnmh:0012F988(注:以上是使用printscreen抓圖,然后使用FineReader識(shí)別的結(jié)果)雙擊這個(gè)WM_COMMAND消息,可以看見關(guān)于這個(gè)消息的詳細(xì)信息,如下WindowHandle001F00AA//FineReader窗口句柄NestingLevel2Message0111(Return)//WM_COMMAND消息ID,這個(gè)消息是的消息WM_COMMANDwParam00009D0B//WM_COMMAND消息的兩個(gè)參數(shù)lParam00000000既然可以查看到程序中消息的ID及消息的參數(shù),那么我們可以自己編寫程序,向被控制的程序發(fā)送對(duì)應(yīng)的消息,從而控制程序的運(yùn)行。第一步,在自己的程序中打開目標(biāo)程序,使用一下API,具體請(qǐng)查看MSDN。HINSTANCEShellExecute(HWNDhwnd,LPCTSTRlpOperation,LPCTSTRlpFile,LPCTSTRlpParameters,LPCTSTRlpDirectory,INTnShowCmd);在我的程序中,目標(biāo)程序?yàn)镕ineReader,打開程序的代碼如下:HINSTANCEhRet=0;hRet=ShellExecute(m_hWnd,NULL,"D:\\ProgramFiles\\ABBYYFineReader7.0ProfessionalEdition\\FineReader.exe",NULL,NULL,SW_HIDE);if((int)hRet<=32){MessageBox("打開FineReader失敗!");}第二步,找到目標(biāo)窗口,獲得目標(biāo)窗口的句柄CWnd*pWnd=NULL;//可能程序啟動(dòng)較慢,需要嘗試多次才能找到目標(biāo)窗口while(pWnd==NULL){Sleep(1000);pWnd=FindWindow(NULL,"Batch-ABBYYFineReader7.0ProfessionalEdition");}第三步,向目標(biāo)窗口發(fā)送消息??梢允笷ineReader開始運(yùn)行時(shí),自動(dòng)打開最后一次運(yùn)行的一個(gè)Batch,所以我們只用發(fā)送消息,讓FineReader開始識(shí)別就可以了。通過spy++可以查看到FineReader識(shí)別的WM_COMMAND信息如下Message0111(Sent)WM_COMMANDwParam00009D0BlParam00000000按以下方式向FineReader發(fā)送這個(gè)消息,使用SendMessage,等待消息返回后,再進(jìn)行下一步操作::SendMessage(pWnd->GetSafeHwnd(),0x0111,0x9D0B,0);FineReader識(shí)別完成之后,可以選擇把結(jié)果保存為文件,或者發(fā)送到剪貼板,我選擇的是讓其把識(shí)別結(jié)果發(fā)送到剪貼板。同樣使用spy++監(jiān)聽消息及其參數(shù),然后發(fā)送對(duì)應(yīng)的消息,如下:Message0111(Sent)WM_COMMANDwParam00009DA1lParam00000000::SendMessage(pWnd->GetSafeHwnd(),0x0111,0x9DA1,0);進(jìn)行這些操作之后,F(xiàn)ineReader識(shí)別之后,就可以直接從剪貼板得到識(shí)別結(jié)果了,相關(guān)代碼如下if(!IsClipboardFormatAvailable(CF_TEXT))return;if(!OpenClipboard())return;HGLOBALhglb=GetClipboardData(CF_TEXT);if(hglb!=NULL){LPTSTRlptstr=(char*)GlobalLock(hglb);if(lptstr!=NULL){MessageBox(lptstr,"識(shí)別結(jié)果");GlobalUnlock(hglb);}}EmptyClipboar
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 八年級(jí)物理第4章第4節(jié):光的折射
- 太陽(yáng)能發(fā)電站智能維護(hù)技術(shù)考核試卷
- 有機(jī)肥料在農(nóng)業(yè)可持續(xù)發(fā)展中的作用考核試卷
- 意外傷害保險(xiǎn)與應(yīng)急救援體系的融合考核試卷
- 學(xué)術(shù)人才引進(jìn)與培養(yǎng)考核試卷
- 醫(yī)療設(shè)備在精準(zhǔn)醫(yī)療領(lǐng)域的創(chuàng)新應(yīng)用與挑戰(zhàn)解決策略考核試卷
- 醫(yī)療器械在跨學(xué)科協(xié)作中的價(jià)值考核試卷
- 文具行業(yè)品牌年輕化考核試卷
- 動(dòng)物藥品零售企業(yè)財(cái)務(wù)管理考核試卷
- 收購(gòu)農(nóng)村車庫(kù)合同范本
- 汽車坡道腳手架施工方案
- 2021中國(guó)靜脈血栓栓塞癥防治抗凝藥物的選用與藥學(xué)監(jiān)護(hù)指南(2021)解讀
- 部編版六年級(jí)下冊(cè)道德與法治全冊(cè)教案教學(xué)設(shè)計(jì)
- 民兵知識(shí)小常識(shí)
- 圖形的平移與旋轉(zhuǎn)壓軸題(7個(gè)類型55題)-【???jí)狠S題】2023-2024學(xué)年八年級(jí)數(shù)學(xué)下冊(cè)壓軸題攻略(解析版)
- TDALN 033-2024 學(xué)生飲用奶安全規(guī)范入校管理標(biāo)準(zhǔn)
- 2024至2030年全球及中國(guó)標(biāo)準(zhǔn)履帶挖掘機(jī)行業(yè)研究及十四五規(guī)劃分析報(bào)告
- 各地分布式光伏項(xiàng)目電價(jià)對(duì)比
- 2024年綠化工職業(yè)技能理論知識(shí)考試題庫(kù)(含答案)
- 醫(yī)學(xué)檢驗(yàn)技術(shù)專業(yè)《血液學(xué)檢驗(yàn)》課程標(biāo)準(zhǔn)
- 2024年江蘇食品藥品職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫(kù)有完整答案
評(píng)論
0/150
提交評(píng)論