国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

通用分屏框架窗口軟件設(shè)計與實現(xiàn)

2015-07-24 15:53陳海軍
電腦知識與技術(shù) 2015年14期
關(guān)鍵詞:分屏鉤子消息

陳海軍

摘要:Windows平臺上面缺乏一款能夠統(tǒng)一整合各類應(yīng)用程序窗口的通用軟件,因此文中根據(jù)Windows操作系統(tǒng)下應(yīng)用程序運行的消息機制,通過注入掛載鉤子函數(shù),截獲并處理相關(guān)消息,提出了分屏框架窗口軟件的開發(fā)設(shè)計思路,并給予了相應(yīng)的實現(xiàn)算法。

關(guān)鍵詞:消息;鉤子;共享數(shù)據(jù)段;分屏;Splash Window

中圖分類號:TP311 文獻標識碼:A 文章編號:1009-3044(2015)14-0064-02

Abstract:On Windows system platform, there is a lack of application that can integrate all kinds of software running windows, this paper analysis application running message theory and hook mechanism, provide design ideas of ‘snap views software, and give the corresponding key algorithms.

Key words:message; hook; share data seg; sap view; splash window

目前,在Windows平臺上面,各個領(lǐng)域、各種功能的應(yīng)用軟件數(shù)不勝數(shù),有很多軟件需要搭配使用,因此,大量工作需要在不同的應(yīng)用窗口中切來切去,影響工作效率,為解決這個問題,微軟從Win8開始,為寬屏設(shè)備用戶提供的“分屏視圖(Snap Views)”功能,可以將兩個需要常在視線內(nèi)的應(yīng)用同時并排放在Win8屏幕上便于查看。不過Win8系統(tǒng)中的“分屏視圖(Snap Views)”功能有諸多限制,比如屏幕分辨率必須在1366×768像素以及以上才能使用,而且只能有兩個應(yīng)用同時顯示等等。本文探討了如何實現(xiàn)一個通用的軟件可以將不同的應(yīng)用程序整合到同一個框架窗口。

1 系統(tǒng)分析

如果要整合各種Windows窗口,必須要深入了解Windows應(yīng)用程序的運行機制。

1.1 Windows應(yīng)用程序運行的機制

Windows應(yīng)用程序是基于消息驅(qū)動的。在Windows中發(fā)生的事件都可以用消息來表示。針對每一個正在執(zhí)行的Windows應(yīng)用程序,Windows系統(tǒng)為其建立一個應(yīng)用程序消息隊列,Windows系統(tǒng)將屬于該程序的各種消息推送到這個隊列中,應(yīng)用程序中的“Message Loop”的消息循環(huán)處理代碼,用來從消息隊列中依次取出消息并根據(jù)其中信息將其分發(fā)到相應(yīng)的“Windows Process”窗口處理函數(shù)中去。如圖1所示。

1.2 Windows應(yīng)用程序窗口對象關(guān)系

應(yīng)用程序窗口對象之間存在四種關(guān)系,即擁有者(owner)、父親(parent)、孩子(child)、兄弟(sibling)。如果一個窗口的parent非空,則parent和它之間就建立了父子關(guān)系。父子關(guān)系決定了:

1)窗口在屏幕上面的顯示位置。父窗口提供了用來定位子窗口的坐標系統(tǒng),一個子窗口只能顯示在它的父窗口的客戶區(qū)中,之外的部分將被裁減。這個裁減法則決定了如果父窗口不可見,則子窗口肯定不可見。如果父窗口移動到了屏幕之外,子窗口也一樣。

2)通常情況下、窗口之間消息的傳遞是和窗口關(guān)系相關(guān)的,通知消息會首先發(fā)送給父窗口,然后再轉(zhuǎn)發(fā)到各個子窗口。

3)當父窗口被隱藏時,它的所有子窗口也被隱藏。

4)父窗口被銷毀的時候,它所擁有的子窗口都會被銷毀。

從以上的分析可知,要整合控制Windows下面各種應(yīng)用程序,必須實現(xiàn)對應(yīng)用程序消息的截獲、分析和處理。要做到這一點,這里主要通過兩種手段,一是指定應(yīng)用程序的父窗口為本程序框架窗口。二是利用Windows鉤子機制截獲應(yīng)用程序的消息進行處理。

2 系統(tǒng)設(shè)計與實現(xiàn)

軟件主要分為兩個部分程序,一個是窗口主界面程序,主要負責(zé)展示和接收用戶輸入的消息。另外一個是動態(tài)鏈接庫,負責(zé)鉤子函數(shù)的注入和消息的截獲處理。

2.1 主窗口程序主要運行流程(如圖2所示)

其中需要注意的幾個地方是:

1)在枚舉查找應(yīng)用程序窗口的時候,一定要找到應(yīng)用程序的頂級窗口,不要錯誤捕獲應(yīng)用程序中的子窗口。

2)有些應(yīng)用程序啟動較慢,所以在啟動的時候,有啟動窗口(Splash Window),系統(tǒng)應(yīng)該能夠自動識別,跳過啟動窗口。

具體相關(guān)代碼如下:

3 結(jié)束語

本文通過對Windows下應(yīng)用程序運行機制和消息機理的分析,探討了實現(xiàn)通用的分屏軟件的方法,該軟件目前運行良好,基本能夠滿足日常工作需求,為通過一個框架窗口整合不同的應(yīng)用程序提供了較好的解決方案。

參考文獻:

[1] Charles Petzold. Windows程序設(shè)計[M]. 北京: 清華大學(xué)出版社, 2010.

[2] Jeffrey Richter. Windows核心編程[M]. 北京: 機械工業(yè)出版社, 2008.

[3] Mark Russinovich. 深入解析Windows操作系統(tǒng)[M]. 北京: 人民郵電出版社, 2012.

[4] 張銀奎. 軟件調(diào)試[M]. 北京: 電子工業(yè)出版社, 2008.

[5] 毛德操. Windows內(nèi)核情景分析[M]. 北京: 電子工業(yè)出版社, 2009.

[6] 潘愛民. Windows內(nèi)核原理與實現(xiàn)[M]. 北京: 電子工業(yè)出版社, 2010.

[7] 侯俊杰. 深入淺出MFC[M]. 武漢: 華中科技大學(xué)出版社, 2001.

[8] Jeff Prosise. MFC Windows程序設(shè)計[M]. 北京: 清華大學(xué)出版社, 2007.

猜你喜歡
分屏鉤子消息
基于FPGA的8K分屏器設(shè)計
同屏顯示更方便 隨意調(diào)整程序窗口的大小
一張圖看5G消息
誰和誰好
基于Java語言開發(fā)手機軟件控制折疊手機研究
強制所有應(yīng)用使用分屏功能
幸福的一家
《脈望館鈔校本古今雜劇》穿關(guān)之“鉤子困帶”考
精鉤子
消息