亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于SPY++的軟件功能擴展的研究

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

        楊超

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

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

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

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

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

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

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

        1.1 Spy++功能

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

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

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

        返回值:

        如函數(shù)執(zhí)行成功,則返回相應的窗口句柄;執(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使用默認安全性,不可以被子線程繼承。

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

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

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

        dwCreationFlags:線程標志。

        lpThreadId:保存新線程的id。

        返回值:

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

        2 軟件實現(xiàn)

        2.1 查看指定窗口句柄

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

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

        2.2 通過API實現(xiàn)進程間通信

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

        2.2.1 加載一個可多選的文件對話框

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

        3 結(jié)束語

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

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

        參考文獻:

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

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

        猜你喜歡
        句柄線程進程
        債券市場對外開放的進程與展望
        中國外匯(2019年20期)2019-11-25 09:54:58
        編譯技術(shù)綜述
        高校圖書館持久標識符應用研究
        編譯程序語法分析句柄問題分析與探討
        淺談linux多線程協(xié)作
        MFC應用程序多線程混合顯示界面方法研究
        社會進程中的新聞學探尋
        民主與科學(2014年3期)2014-02-28 11:23:03
        我國高等教育改革進程與反思
        Linux僵死進程的產(chǎn)生與避免
        Linux線程實現(xiàn)技術(shù)研究
        日本女优禁断视频中文字幕| 国产av无码专区亚洲awww| 俺来也俺去啦最新在线| 欧洲亚洲第一区久久久| 国产av综合影院| 亚洲中文久久精品无码ww16| 国产成人亚洲综合小说区| 综合中文字幕亚洲一区二区三区 | 激情一区二区三区视频| 国产一区二区三区亚洲| 人人澡人人妻人人爽人人蜜桃麻豆| 欧美性色黄大片手机版| 欧美白人最猛性xxxxx| 无码AⅤ最新av无码专区| 老熟妇嗷嗷叫91九色| 午夜少妇高潮在线观看| 免费无码a片一区二三区| 99久久久无码国产精品免费砚床| 国产360激情盗摄一区在线观看| 一区二区三区国产天堂| 色哟哟亚洲色精一区二区| 国产l精品国产亚洲区久久| 荡女精品导航| 精品日产一区2区三区| 亚州无吗一区二区三区| 国产色欲av一区二区三区| 亚洲av中文无码乱人伦在线r▽| 国产视频最新| 天堂影院久久精品国产午夜18禁| 中文乱码字字幕在线国语| 亚洲va国产va天堂va久久| 无码人妻一区二区三区免费| 亚洲av综合日韩精品久久久| 国产精品一区久久综合| 成人一区二区免费中文字幕视频| 亚洲精品国产精品国自产| 亚洲欧美日韩精品久久亚洲区| 日韩激情网| 亚洲av综合av国一区二区三区| 亚洲av不卡无码国产| 中文字幕精品一二三四五六七八|