• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

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

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

      陳海軍

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

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

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

      1 系統(tǒng)分析

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

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

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

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

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

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

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

      3)當(dāng)父窗口被隱藏時(shí),它的所有子窗口也被隱藏。

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

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

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

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

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

      其中需要注意的幾個(gè)地方是:

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

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

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

      3 結(jié)束語

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

      參考文獻(xiàn):

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

      [2] Jeffrey Richter. Windows核心編程[M]. 北京: 機(jī)械工業(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)核原理與實(shí)現(xiàn)[M]. 北京: 電子工業(yè)出版社, 2010.

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

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

      猜你喜歡
      分屏鉤子消息
      基于FPGA的8K分屏器設(shè)計(jì)
      同屏顯示更方便 隨意調(diào)整程序窗口的大小
      電腦愛好者(2021年1期)2021-01-13 05:18:20
      一張圖看5G消息
      誰和誰好
      快樂語文(2018年15期)2018-11-29 10:23:17
      基于Java語言開發(fā)手機(jī)軟件控制折疊手機(jī)研究
      強(qiáng)制所有應(yīng)用使用分屏功能
      電腦愛好者(2017年6期)2017-05-04 22:28:46
      幸福的一家
      《脈望館鈔校本古今雜劇》穿關(guān)之“鉤子困帶”考
      中華戲曲(2017年2期)2017-02-16 06:53:24
      精鉤子
      金山(2016年5期)2016-05-30 14:18:17
      消息
      麦盖提县| 隆安县| 莆田市| 宁都县| 白水县| 长沙县| 汤阴县| 宁蒗| 库伦旗| 九寨沟县| 三台县| 本溪| 平遥县| 瓦房店市| 两当县| 根河市| 乐都县| 新平| 邵武市| 宜都市| 汕尾市| 桦甸市| 肥西县| 江山市| 休宁县| 广东省| 宁国市| 邵武市| 潜山县| 泸州市| 桓仁| 安达市| 崇礼县| 陈巴尔虎旗| 兴文县| 黔江区| 文山县| 容城县| 开阳县| 靖西县| 涡阳县|