999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于SPY++的軟件功能擴(kuò)展的研究

2013-04-26 02:43:06楊超
計(jì)算機(jī)光盤軟件與應(yīng)用 2013年1期
關(guān)鍵詞:進(jìn)程

楊超

摘要:利用微軟Visual Studio 6.0的工具軟件SPY++找出要操作的運(yùn)行軟件窗口的圖形樹,最終找出要操作的控件ID,再使用VC++ 6.0建立了一個(gè)軟件向該控件發(fā)送消息和模擬要操作控件的事件,最終實(shí)現(xiàn)現(xiàn)有軟件功能擴(kuò)充。

關(guān)鍵詞:進(jìn)程;線程;句柄;SPY++

中圖分類號:TP312 文獻(xiàn)標(biāo)識碼:A 文章編號:1007-9599 (2013) 01-0189-02

進(jìn)程間通信的主要目的是實(shí)現(xiàn)同一計(jì)算機(jī)系統(tǒng)內(nèi)部的相互協(xié)作的進(jìn)程之間的數(shù)據(jù)共享與信息交換,由于這些進(jìn)程處于同一軟件和硬件環(huán)境下,利用操作系統(tǒng)提供的編程接口,用戶可以方便地在程序中實(shí)現(xiàn)這種通信。

進(jìn)程是裝入內(nèi)存并準(zhǔn)備執(zhí)行的程序,每個(gè)進(jìn)程都有自己的虛擬地址空間,由代碼、數(shù)據(jù)以及它可利用的系統(tǒng)資源組成。多進(jìn)程/多線程是Windows操作系統(tǒng)的一個(gè)基本特征。Microsoft Win32應(yīng)用編程接口(API)提供了大量支持應(yīng)用程序間數(shù)據(jù)共享和交換的機(jī)制,這些機(jī)制行使的活動(dòng)稱為進(jìn)程間通信( IPC),通信的目的是在不同進(jìn)程間進(jìn)行數(shù)據(jù)共享和數(shù)據(jù)交換。

如何進(jìn)行進(jìn)程間通信為現(xiàn)有軟件的功能進(jìn)行擴(kuò)充,已成為應(yīng)用開發(fā)中的一個(gè)常見問題,下面本文將通過Windows進(jìn)程通信的API來對一個(gè)視頻格式軟件——視頻轉(zhuǎn)換大師的多個(gè)視頻文件轉(zhuǎn)換的批處理功能進(jìn)行了擴(kuò)充。

1 相關(guān)的技術(shù)

1.1 Spy++功能

Spy++是一個(gè)基于Win32的實(shí)用工具,它提供系統(tǒng)的進(jìn)程、線程、窗口和窗口消息的圖形視圖。使用 Spy++ 可以執(zhí)行下列操作: 顯示系統(tǒng)對象(包括進(jìn)程、線程和窗口)之間關(guān)系的圖形樹;搜索指定的窗口、線程、進(jìn)程或消息;查看選定的窗口、線程、進(jìn)程或消息的屬性;直接從視圖中選擇窗口、線程、進(jìn)程或消息;通過鼠標(biāo)定位,使用查找程序工具選擇窗口;使用復(fù)雜的消息日志選擇參數(shù)設(shè)置消息選項(xiàng)。 提示使用 Spy++ 時(shí),在許多實(shí)例中都可以單擊鼠標(biāo)右鍵顯示常用命令的彈出式菜單。

1.2 有關(guān)Windows API的使用

1.2.1 SendMessage

函數(shù)將指定的消息發(fā)送到指定窗口,由窗口調(diào)用程序,直至窗口程序處理完消息再返回。

LRESULT SendMessage(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM IParam);

參數(shù):

hWnd:其窗口程序?qū)⒔邮障⒌拇翱诘木浔?。如果此參?shù)為HWND_BROADCAST,則消息將被發(fā)送到系統(tǒng)中所有頂層窗口。

Msg:指定被發(fā)送的消息。

wParam:指定附加的消息特定信息。

IParam:指定附加的消息特定信息。

返回值:返回值指定消息處理的結(jié)果,依賴于所發(fā)送的消息。

1.2.2 findwindow

HWND FindWindow( LPCSTR lpClassName, LPCSTR lpWindowName );

參數(shù):

lpClassName:指向一個(gè)以NULL結(jié)尾的、用來指定類名的字符串或一個(gè)可以確定類名字符串的原子。這個(gè)原子(一個(gè)16bit的值),必須被放置在lpClassName的低位字節(jié)中,lpClassName的高位字節(jié)置零。如果該參數(shù)為NULL時(shí),將會(huì)尋找任何與lpWindowName參數(shù)匹配的窗口。

lpWindowName:指向一個(gè)以NULL結(jié)尾的、用來指定窗口名(即窗口標(biāo)題)的字符串;如果此參數(shù)為NULL,則匹配所有窗口名。

返回值:

如函數(shù)執(zhí)行成功,則返回相應(yīng)的窗口句柄;執(zhí)行失敗,則返回 NULL 。

1.2.3 CreateThread

函數(shù)原型如下:

HANDLE CreateThread(

LPSECURITY_ATTRIBUTES lpThreadAttributes, // 線程安全屬性

DWORD dwStackSize, // 堆棧大小

LPTHREAD_START_ROUTINE lpStartAddress, // 線程函數(shù)

LPVOID lpParameter, // 線程參數(shù)

DWORD dwCreationFlags, // 線程創(chuàng)建屬性

LPDWORD lpThreadId // 線程ID

);

參數(shù):

lpThreadAttributes:指向SECURITY_ATTRIBUTES型態(tài)的結(jié)構(gòu)的指針。在Windows NT中,NULL使用默認(rèn)安全性,不可以被子線程繼承。

dwStackSize:設(shè)置初始棧的大小,以字節(jié)為單位,如果為0,那么默認(rèn)將使用與調(diào)用該函數(shù)的線程相同的棧空間大小。

lpStartAddress:指向線程函數(shù)的指針,即函數(shù)名稱。

lpParameter:向線程函數(shù)傳遞的參數(shù),是一個(gè)指向結(jié)構(gòu)的指針,不需傳遞參數(shù)時(shí),為NULL。

dwCreationFlags:線程標(biāo)志。

lpThreadId:保存新線程的id。

返回值:

函數(shù)成功,返回線程句柄;函數(shù)失敗,返回NULL。

2 軟件實(shí)現(xiàn)

2.1 查看指定窗口句柄

運(yùn)行視頻轉(zhuǎn)換大師軟件,將程序運(yùn)行到要進(jìn)行的操作界面,然后運(yùn)行VC++ 6.0中spy++工具軟件,打開spy++窗口中的樹,找到要操作的窗口結(jié)點(diǎn),點(diǎn)擊旁邊的加號打開窗口樹,選擇相應(yīng)控件句柄進(jìn)行高亮顯示,對要操作控件右鍵點(diǎn)擊屬性,打開屬性窗口。

本次操作將獲取得到文件打開對話框的文件名輸入框的控件ID和打開按鈕的控件ID,現(xiàn)有視頻轉(zhuǎn)換軟件窗口內(nèi)的列表框的ID、文件名輸入框ID和批處理按鈕的ID。

2.2 通過API實(shí)現(xiàn)進(jìn)程間通信

通過上面步驟獲取的控件ID號,在程序中使用GetDlgItem方法將控件ID轉(zhuǎn)換為當(dāng)前運(yùn)行軟件窗口的控件句柄,有了這個(gè)句柄就可以通過Message操縱控件,模擬控件的事件,調(diào)用相應(yīng)的事件過程。

2.2.1 加載一個(gè)可多選的文件對話框

此過程包含兩個(gè)方面的操作,建立一個(gè)文件打開對話框?qū)ο?,并以模態(tài)方式打開。打開后,新建一個(gè)伺服線程去通過判斷打開對話框的打開按鈕是否存在來取得文件選擇框的內(nèi)容。實(shí)現(xiàn)調(diào)用打開對話框的核心內(nèi)容如下:

3 結(jié)束語

跨進(jìn)程通信的方式還有許多, 這些方式中有的需要同一臺(tái)電腦,比如文件映射、共享內(nèi)存、郵件槽、剪貼板、動(dòng)態(tài)數(shù)據(jù)交換、對象連接與嵌入、動(dòng)態(tài)連接庫、WM_COPYDATA,有的則是要在不同電腦的遠(yuǎn)程通信有管道、遠(yuǎn)程過程調(diào)用、NetBios函數(shù)、Sockets,本文所實(shí)現(xiàn)的操作方式屬于前一種方式。

通過上述操作和程序編寫最后達(dá)到視頻轉(zhuǎn)換大師軟件批處理功能的擴(kuò)充,在實(shí)際操作中進(jìn)行過最多一次傳送過兩百多個(gè)文件,共計(jì)轉(zhuǎn)換過四千多個(gè)視頻文件操作,并最終將這些文件成功轉(zhuǎn)換。但是在調(diào)試中發(fā)現(xiàn)了一個(gè)小問題,即模擬批處理操作按鈕點(diǎn)擊事件時(shí),需模擬兩次,否則就會(huì)有文件遺失,不能發(fā)送到指定窗口,兩次模擬后可正確無誤發(fā)送通信。

參考文獻(xiàn):

[1]Windows核心編程(第5版).北京:清華大學(xué)出版社,2008,9:46,128,626.

[2]Spy++的使用方法及下載 [EB/OL].

猜你喜歡
進(jìn)程
債券市場對外開放的進(jìn)程與展望
中國外匯(2019年20期)2019-11-25 09:54:58
改革開放進(jìn)程中的國際收支統(tǒng)計(jì)
中國外匯(2019年8期)2019-07-13 06:01:06
快速殺掉頑固進(jìn)程
社會(huì)進(jìn)程中的新聞學(xué)探尋
我國高等教育改革進(jìn)程與反思
Linux僵死進(jìn)程的產(chǎn)生與避免
講效率 結(jié)束進(jìn)程要批量
電腦迷(2012年24期)2012-04-29 00:44:03
男女平等進(jìn)程中出現(xiàn)的新矛盾和新問題
俄羅斯現(xiàn)代化進(jìn)程的阻礙
論文萊的民族獨(dú)立進(jìn)程
主站蜘蛛池模板: 成人av专区精品无码国产| 亚洲开心婷婷中文字幕| 91精品情国产情侣高潮对白蜜| 欧美激情视频一区| 亚洲国产成人麻豆精品| 国产精品黑色丝袜的老师| 亚洲人成网站色7777| 蜜芽国产尤物av尤物在线看| 国产91特黄特色A级毛片| 国产xxxxx免费视频| 99无码中文字幕视频| 色窝窝免费一区二区三区 | 91丝袜美腿高跟国产极品老师| 欧美日韩成人在线观看| 亚洲最新在线| 亚洲午夜福利精品无码不卡| 狠狠做深爱婷婷综合一区| 国产成人亚洲精品色欲AV| 日韩毛片免费观看| 综合色区亚洲熟妇在线| 国产欧美日韩另类精彩视频| aaa国产一级毛片| 久精品色妇丰满人妻| 久久一本精品久久久ー99| 欧美日韩导航| 欧美黄网在线| 黄色片中文字幕| 国产美女自慰在线观看| 免费国产不卡午夜福在线观看| 精品一区二区三区自慰喷水| 精品少妇人妻一区二区| 国产在线观看高清不卡| 欧美一级视频免费| 亚洲综合精品第一页| 亚洲男人天堂网址| 在线视频亚洲欧美| 99久久精品视香蕉蕉| 国产91九色在线播放| 最新亚洲人成网站在线观看| 亚洲精品在线影院| 国产视频你懂得| 国产精品亚欧美一区二区| 亚洲男人天堂久久| 成人免费午夜视频| 国产导航在线| 亚洲欧美日韩色图| 亚洲欧美综合另类图片小说区| 小说 亚洲 无码 精品| 亚洲男人的天堂久久香蕉 | 狠狠色成人综合首页| 国内嫩模私拍精品视频| 色成人综合| 91青青草视频| 国产主播一区二区三区| 日韩二区三区| 亚洲国产精品日韩欧美一区| 青青操国产| 日本不卡在线| www亚洲精品| 亚洲成a人片| 国产日韩丝袜一二三区| 国产精品视频导航| 亚洲欧美日韩动漫| 国产成人艳妇AA视频在线| 久青草国产高清在线视频| 亚洲视频免| 国产免费人成视频网| 国产精品九九视频| 一本大道无码日韩精品影视| 91精品啪在线观看国产60岁| 欧美亚洲另类在线观看| 狠狠五月天中文字幕| 久久中文字幕av不卡一区二区| 亚洲伊人电影| 91精品国产一区| 在线毛片网站| 九色综合伊人久久富二代| 国产精品三区四区| 国产精品女在线观看| 天堂岛国av无码免费无禁网站| 再看日本中文字幕在线观看| 亚洲精品片911|