最近在為公司產品改版,處理Vista、Win7以上,Windows將音量控制改為每個應用程式都能有自己的音量控制,但舊有音量控制依然保留,舊有的音量控制目前的理解是控制在系統中會使用到的發出聲音的元件,新的則是控制系統本身所發出的聲音,但不瞭解為什麼要做成這個樣子,這麼說是甚麼意思呢?舉個例來講,就是用新的方式控制自己的系統,但如果系統中用到了Flash則使用舊的控制音量作法去控制。
因為系統要相容各種版本的Windows,所以系統必須去偵測使用者現在用的作業系統是甚麼,用那個作業系統的方式來控制音量,結果又讓我發現了Windows一個奇怪的地方,就是當使用者使用相容性模式執行你的程式時,不管你去讀Registry或者使用API去取得Windows的版本都會得到使用者選擇相容性的那個Windows版本,也就是說如果使用者選用相容XP,那麼程式就不曉得現在系統真正在哪種作業系統上運作,因此也就無法正確去控制音量,我可以理解Windows為了讓一些程式偵測成舊版Windows,使用舊版的模式去執行的方式,但也該提供一個可以真正取得Windows版本的方式吧,否則產生這樣的衝突又要設計者如何處理呢?也許有,但我找不到,結果最後我另外寫了一個前導程式,在程式安裝完的時候,趕快去執行,取得真正的Windows,然後寫入一個ini檔,讓真正的系統去讀ini來得到真正的Windows版本,繞了一大圈。
沒有留言:
張貼留言