程式設計師跟著大師源碼學習系列之3:巧用VC查看PotPlayer菜單

2020-12-23 clq的程式設計師學前班

今天讓我們來一個輕鬆一點的話題:大家看到一個有趣的程序時有沒有想過它是用什麼工具開發出來的?如果是開源的倒也罷了,如果不開源呢?有沒有什麼辦法查看。答案當然是有的,除了一些加密的程序大多數程序其實都不會刻意去隱藏自己的信息。只要通過一些常用的方法就能知道。這些方法是很多的,今天我們通過給著名的播放器軟體 PotPlayer 加上兩個按鈕的過程來看一個程序的某些功能的設計思想。

其實不用分析,我就知道 PotPlayer 是用 vc++ 寫的,因為多年前我就看過它作者的訪談,知道他原來是 kmplayer 的作者。後來因為與原公司有問題,轉到另外一個公司繼續開發播放器,但是開發工具由 delphi 換成了 vc。原因他沒說,不過接觸過視頻處理的同學一定知道,那多半是因為 ffmpeg 的緣故 -- 為什麼是 ffmpeg?初學者會問 -- 那是因為這世上的播放器很少有不是基於 ffmpeg 的。當然了這其實不是什麼丟人的事,有了 ffmpeg 也不是那麼容易的。 PotPlayer/kmplayer 對播放的優化都是遠遠超過原始 ffmpeg 的,簡單來說應該說是 ffmpeg 教會了大家怎麼做,具體怎麼優化就靠大家自己了。這是個很容易證實的問題,一般正規有責任心的軟體都會在"關於"對話框中寫上自己的依賴庫,比如下圖:

關於窗口中說明了使用了ffmpeg

當然了這在我們那個年代還是有很多人不自覺的,當初就有很轟動的業內人士譴責各個播放器不註明的依賴庫的情況,涉及的播放器除了 kmplayer 還有很多國內的播放器,比如 ... 作為一個不願得罪人的老好人,你覺得我會寫出來嗎 :)

總之現在大家都註明了那就好啦 ... ...

好了,我們再證實一下 PotPlayer 是 vc 寫的吧!看好了,這可是很有用的操作

首先打開 vc ,我直接用的手頭上的 vc2010 其他版本應該類似(至少 vc6 應該可以,其實我以前一般是用 vc6 打開的)。然後如下圖,選擇菜單"文件"->"打開"->"文件...":

打開某個文件的菜單位置

在彈出的對話框中選擇 "x:\Program Files (x86)\DAUM\PotPlayer\PotPlayerMini.exe" ,選中後先不要打開 ... 手太快已經打開的同學請重複以上步驟。這時,在"打開"對話框中選擇"打開方式",如下圖:

不要直接點擊"打開"按鈕

然後再在彈出的對話框中選擇"資源編輯器",如下圖:

以資源的方式打開

好了。以上就是使用 vc 查看一個程序資源的方法。大家可以在裡面查看到程序的圖標、程序的菜單、程序用的提示信息等等,當然了如果這個程序不是 vc 開發的話,那多半看不到程序的菜單。其實不但能查看,有特定的 vc 版本和特定的 windows 版本下,您還能修改它的菜單上的顯示文字 ... 很神奇吧,當初我偶然發現這個功能時就把我很討厭的 vc6 的默認字體給改了 ... 當然了,做過漢化的老手們應該都另外有工具。這個就是所謂的資源修改了,也是漢化軟體的一個重要方法。

不過遺憾的是 PotPlayer 的菜單並不在這裡,而是在 dll 中,這也是現在開發一個比較常用的方法:程序的主要功能其實不在主 exe 中,而是某個 dll 內。對於這個 PotPlayer ,對應的 dll 就是 PotPlayer.dll 。用前面打開 exe 的方法可以很容易的再打開這個 dll 文件的資源信息。如果大家看這篇文章前學過一點 vc 的話,一定可以很輕鬆地在裡面查看到 PotPlayer 的各個菜單。如下圖:

vc中可直接修改程序菜單

在圖中,我們可以看到右邊的屬性編輯器部分實際上還可以直接修改 PotPlayer 的菜單內容!一般來說,有這種長串菜單資源的程序通常都是 vc 開發的

具體我們就不展開了。不展開的一個原因是象 PotPlayer 這麼新的程序是不會在資源中實現多語言支持或者是皮膚的。而我們要加按鈕就要找到它的實現方法。現在的實現方法普遍是 xml 格式或者是鍵值對的文本文件再加上具體的圖片,而且一般就放在程序的目錄下。現在是 windows10 時代,因為權限的原因,很多程序也放在用戶目錄中。幸運的是 PotPlayer 的就在程序目錄下,這樣就不用去找囉嗦的 win10 用戶目錄了。給 PotPlayer 換過膚的同學都知道皮膚文件就是 dsf 文件,我要說的是這些配置就在 dsf 文件中,而 dsf 不過是 zip 文件的改名而已,這裡就不解釋了,以後再細說用什麼辦法可以知道。以 WindowFrame.dsf 為例子,複製出來改名為 zip 再解壓就可以看到 PotPlayer 的全部配置文件了。要細說皮膚的製作那就太囉嗦了。我們就先簡單說一下 PotPlayer 是怎樣實現多語言的就好了。

vc開發的程序,傳統的多語言是用多語言的 dll 來實現的,不過這種方法從它出來時我就不以為然,很多程式設計師們的想法顯然也和我差不多,所以現在多是 xml 的(從上圖中可以看到 PotPlayer 的菜單是韓文的,而且只有韓文,說明它的多語言實現並不是通過切換不同語言的資源dll實現的 ),而 PotPlayer 的語言包就在 Language 目錄中的 ini 鍵值對配置文件中,而播放器的主要操作按鈕則是在皮膚文件中的 BottomAudio.txt 文件中(指 WindowFrame.dsf ,不同皮膚是不同的)。這種將配置文件壓縮成 zip 再改名的做法,現在非常的普遍,大家以後看到類似的情況都可以試試,一定會有驚喜(友情提示下,java 的 jar、蘋果的 ipa 文件也是這樣的情況)。好了,這個文件就是 xml 格式,學過一點 xml 的同學很容易就可以加上自己喜歡的按鈕了。瞧,會編程是件多麼幸福的事!

好了,希望以上內容對大家有用。

相關焦點

  • 不會查看系統源碼,還搞什麼Android?
    在上一篇文章如何方便快速的整編Android 9.0系統源碼?中,我們對系統源碼進行了編譯,這篇文章我們接著來學習如何將系統源碼導入到編輯器中,以便於查看和調試源碼。這篇文章就來介紹Source Insight和Android Studio如何導入源碼。系列文章趁周末,用VirtualBox安裝 Ubuntu吧!是時候下載Android 9.0系統源碼了如何方便快速的整編Android 9.0系統源碼?1.
  • 程式設計師是如何閱讀源碼的
    模板編譯優化 Vue3 Teleport 組件的實踐及原理快速調試源碼說到看源碼,很多人都有個誤區,覺得看源碼必須要到 github 上把完整的代碼 clone 下來,認為只有把完整的代碼下載下來,才能開始愉快的學習。
  • 故宮出版社推出「跟著藝術大師」系列 一本書讀懂一個大師
    「跟著藝術大師」系列《跟著王希孟遊千裡江山》《跟著惲壽平去寫生》兩本新書。  「跟著藝術大師」系列叢書是結合藝術大師簡略生平、藝術特點、同類繪畫題材的衍變過程、相關作品及其背後有趣故事的藝術普及類讀物。力求通過輕鬆的文字和精美的圖片,讓大眾感受到藝術之美、之趣,讓藝術走進我們每一個人的生活。
  • 拼多多JDK源碼大揭秘,由淺入深看源碼,探究Java並發原理
    寫在前面幾乎所有的大神都會強調看源碼,也強調源碼的重要性;但是如何看源碼,源碼看什麼?看了什麼用?看了怎麼用?困擾很多人,尤其是初學者。如何閱讀源碼,是每個程式設計師需要面臨的一項挑戰。為什麼需要閱讀源碼?
  • 關於PHP程式設計師解決問題的能力
    Lv0 查看PHP錯誤信息  程序沒有達到預期效果,證明代碼出錯了,看PHP的錯誤信息是第一步。如果直接忽略錯誤信息,表明這個人不適合擔任專業的程式設計師崗位。  這3個考驗全部通過,表明此程式設計師已經具備了專業PHP程式設計師應該有的解決問題能力了。PHP程式設計師只要過了這個等級,就足以應多大部分情況,在中小型網站中毫無壓力。
  • 淺談開源的可視化建站類程序源碼
    1:建站之星如果說可視化建站系統最久遠的,那絕對是建站之星2.7了,網上找了還附送3000套模板和視頻的。筆者滿懷希望的花了19.9在某站網上下的,結果下載後,震驚。裡面的樣式,UI,甚至功能都是很L*W的。不過筆者也是拿來學習的,說實話沒怎麼做過研究。
  • 如何閱讀Java源碼?
    大多數程式設計師的學習態度分為如下幾個層次:完成自己的項目就可以了,遇到不懂的地方就百度一下。不僅做好項目,還會去閱讀一些和項目有關的書籍。除了閱讀和項目相關的書籍之外,還會閱讀一些IT行業相關的書籍。閱讀基礎框架、J2EE規範、源碼。大多數程式設計師的層次都是在第一層,到第五層的人就需要有強烈的求知慾了。3、足夠的耐心通過閱讀源碼我們可以學習大佬的設計思路,技巧。還可以把我們一些零碎的知識點整合起來,從而融會貫通。總之閱讀源碼的好處多多,想必大家也清楚。
  • 好程式設計師前端:MongoDB資料庫全套教程(精華版 含源碼)
    如果你對未來充滿期許,如果你現在迷茫焦慮,那麼不妨來通過學習提升自己。選一門自己喜歡的課程,靜下心來,用時間去積累,等到金秋時節去收穫埃及努力的果實!為了方便大家學習,好程式設計師一直堅持免費為大家分享IT教程,就是為了能夠讓更多人享受到優質的編程學習資源。
  • 推薦給程式設計師免費學習網站,學習編程就是那麼簡單
    很多程式設計師最頭疼的就是學習資料很難找,而且很多學習資料都是要錢的,下面小編推薦幾個免費學習網站,項目源碼免費下載。php中文網這個網站不僅是可以免費學習php,還可以學習其他,比如java,安卓和ios開發,Linux學習等等。
  • windows視頻播放器PotPlayer
    potplayer支持多數媒體文件類型PotPlayer播放視頻質量取決於自身硬體,支持N多編碼。potplayer支持音頻文件在眾多離線視頻播放器中,PotPlayer是一個不錯的選擇。乾淨、無捆綁軟體、無廣告,穩定版本具有多種支持格式,並且播放質量非常適合視頻和音頻。
  • 程式設計師如何自我學習?阿里資深技術專家這樣做
    很多人都說程式設計師的薪資水平不錯,可以媲美醫生和律師。而程式設計師和醫生、律師的不同點在於持續學習上。不是說醫生和律師不需要學習,醫生、律師能夠憑之前的case積累非常多的經驗(這也是大家看病喜歡找年紀大的醫生的原因之一),而且這些經驗很大程度上可以被復用(很多病因和判罰案例帶有相似性)。
  • Java程式設計師會被淘汰!?
    兜兜轉轉,耗盡了精力,身邊也沒有人一起學習指導,大家的學習水平也不在一個level,門還沒入,瀕臨放棄的邊緣!先給大家打個預防針,想學Java的人非常多,但是走到最後,能學成的人非常少,放棄率非常之高!方法不對,努力白費!如果你也想用快速了解Java入門,可以掃描以下二維碼立即獲取1元Java入門體驗課資格!
  • 為什麼Potplayer 是最好的播放器——了解以下功能,我終於明白了
    並在potplayer中啟用插件。具體的設置步驟有些多,這裡不展開介紹。設置完畢之後的效果還是不錯的。尤其是看節動作片的時候。potplayer自帶的錄製視頻功能,錄製視頻時將保存文件格式改為gif就可以了。右鍵點擊畫面,「視頻」–」視頻錄製」-「錄製視頻」(快捷鍵ALT+C)
  • 黑馬程式設計師史上最強JavaEE學習路線圖震撼發布!!!
    而中級程式設計師和初級程式設計師的區別在於兩者相差3-4年的工作經驗。如何解決學員高薪就業和企業用人標準提高的雙重需求,傳智播客給出了答案:培養中級程式設計師。黑馬程式設計師不僅對現有JavaEE課程進行了升級,同時為了滿足網際網路學習人群的需求,正式推出全新的JavaEE中級程式設計師學習路線圖。
  • 安卓源碼避坑指南3——撥打電話的SIM卡無效導致藍牙斷開連接
    撥打電話的SIM卡無效導致藍牙斷連它來了、它來了,它帶著BUG趕來了,歡迎大家查看本期的安卓源碼避坑指南。本期的問題場景比較特殊,電話SIM卡是無效的(欠費過期了,很是貧窮…)。開開心心地上著班、摸著魚(笑臉),突然工作郵件提醒,一經查看原來是QA同學甩過來個問題。那咱就話不多說,先簡單介紹下本篇的問題場景。
  • 學校裡學不到的C語言教程之3:學習異常處理然後忘掉它
    我們本系列的上篇文章說了自己分配內存的重要性,因為那很容易引進程序的崩潰。在原始的 C/C++ 中,這是經常發生的一件事情。除此之外引起崩潰的原因非常多,常見的有:訪問指針異常、除0錯、訪問 NULL 指針、文件訪問錯誤以及作業系統異常等等。
  • 程式設計師竊取公司《傳奇霸業》源碼,被判刑
    又有程式設計師因竊取公司軟體源碼而被判刑。依照《中華人民共和國刑法》第二百八十五條第二款、第五十二條、第五十三條、第六十七條第三款、第七十二條、第七十三條、第六十四條以及《最高人民法院最高人民檢察院關於辦理危害計算機信息系統安全刑事案件應用法律若干問題的解釋》第一條第一款第(五)項的規定,判決如下:一、被告人溫某某犯非法獲取計算機信息系統數據罪,判處有期徒刑八個月,緩刑一年,並處罰金人民幣二千元(緩刑考驗期自判決確定之日起計算
  • 專訪許鵬:談C程式設計師修養及大型項目源碼閱讀與學習
    言歸正傳,在對許鵬有了簡單的了解之後,我們一起走進本次的主題——C程式設計師的修養、大型項目的源碼學習,以及Spark和Storm的源碼走讀。 Storm源碼的學習過程中主要難點是Clojure語言,這個過程得到了Clojure Programming一書中文譯者徐明明的大力幫助,所以漸漸理解了Storm的框架和實現機理,Storm學習的時間持續了大概半年的時間。
  • 聖誕節快樂:來自程式設計師們的問候
    在這個越來越受到國人重視的節日中,每個人有每個人的浪漫方式,當然程式設計師們也不例外。下面就來看看一些IT企業和程式設計師們是如何為這個節日增添不一樣的氣氛的。一、來自IT巨頭的問候1.詳細信息可查看這個頁面的源碼。http://www.baidu.com/ur/show/uhchristmas?from=christmasresult3.
  • 學習 koa 源碼的整體架構,淺析koa洋蔥模型原理和co原理
    前言這是學習源碼整體架構系列第七篇。整體架構這詞語好像有點大,姑且就算是源碼整體結構吧,主要就是學習是代碼整體結構,不深究其他不是主線的具體函數的實現。本篇文章學習的是實際倉庫的代碼。學習源碼整體架構系列文章如下:感興趣的讀者可以點擊閱讀。