2015年6月24日 星期三

[教學] Mac 新版「照片」程式隱藏功能,變更程式預設的「照片圖庫」儲存位置

如果你跟我一樣,使用 Mac 已經好幾個年頭了,應該不可能沒有使用過 iPhoto 或是 Aperture 來管理和編輯自己的照片吧!

新版的「照片」程式已經出來很久,但是一直都沒時間好好使用它,原因在於我不知道怎麼切換程式預設的「照片圖庫」儲存位置!今天終於看到官方於四月二十四釋出的教學文章,就稍微為大家介紹一下!

請大家根據下列步驟來指定系統的「照片圖庫」:
  1. 離開「照片」程式
  2. 請按著option按鈕然後執行「照片」程式。其中一個「照片圖庫」已經被指定為系統的「照片圖庫」了!
  3. 在其中選擇一個想要作為系統「照片圖庫」的圖庫
  4. 等到「照片」程式將圖庫打開之後,在在上方選單中選擇「照片」=> 偏好設定,點選「一般」頁籤
  5. 點選「作為系統照片圖庫」按鈕

做完這些步驟,恭喜看倌,下次再執行「照片」程式就會自動切換到設定的「照片圖庫」了!

參考資料:Designate a System Photo Library in Photos

2015年6月11日 星期四

[教學] 如何取出 VMware Tools 裡面預設的驅動程式

最近因為需要做簡易版 XP,方便快速架設所需要的模擬環境,所以研究了一下 nLite這套免費工具,這真是一套非常好用的軟體,有興趣的朋友可以搜尋相關的介紹。

但是當精簡的太誇張的時候,可能會造成連驅動程式都找不到,這時候就會想要將 VMware Tools 裡面用來安裝的驅動程式抽取出來,再嵌入至光碟檔中了,還好官方有提供提取的方法,這裡就幫大家介紹一下:
1. 將 VMware Tools ISO 檔載入虛擬 CD/DVD 光碟機中〈舉例來說載入後為磁碟 D〉
2. 在磁碟 C 下面建立一個名為 Extract 的目錄
3. 啟動命令模式並將磁碟機切換至磁碟 D
4. 執行下列命令:
setup.exe /A /P C:\Extract

5. 如果有視窗彈出要求輸入安裝或抽取位置,請輸入在步驟 2 產生的目錄 Extract
6. 當程序完成,請點選結束
7. 瀏覽 C:\Extract 目錄來讀取抽取的驅動程式

原文網址:Extracting the drivers from VMware Tools bundled with VMware Workstation

2015年6月10日 星期三

[筆記] 一個簡單的方法來偵測使用者是否開啟 Window 10 的 Tablet Mode


Windows 10 即將在 7/29 上市,維護產品相容性的責任自然而然就會被降臨在工程師頭上,尤其是 OEM 測試到的問題竟更是推託不掉!

最近回報了一個問題,說是我們的產品在 Windows 10 上的 Tablet Mode 有操作上問題,請我們這裡查清楚並解決它!老實說我們的產品並不支援平板操作阿!OEM 的老大你們是在哀號什麼意思的阿?

好吧!既然問題都來了,就來操作看看倒底是發生了什麼事情吧!取得 Windows 10 環境並研究如何開啟 Tablet Mode 之後發現,原來這個模式不能做「復原視窗化」的動作!

Tablet Mode 可以參考下面這段影片展示:


什麼是「復原視窗化」的動作?就是在程式視窗最大化之後,按下位於關閉的按鈕左邊的鄰居,這時候就是做「復原視窗化」的動作,讓程式回到視窗模式!但 Tablet Mode 強迫所有的程式都執行在最大化或是最小化,是沒有視窗模式的!而我們的程式在回到視窗的時候對介面做了一點小手腳,造成了使用者操作的問題!

屁話一堆,那怎麼偵測現在當前是否開啟了 Tablet Mode 呢?

首先從 Windows message 分析:

當啟動或關閉 Tablet Mode 時候,程式會收到 WM_SETTINGCHANGE 的訊息,並且透過這個訊息告訴程式說:系統的 UserInteractionMode 這個設定改變囉!
從 WinRT 的  windows.ui.viewmanagement.h 中可以找到這個設定相關的物件,但是我們的程式不是 UAP,這條路似乎不通,只好另謀方法!『實際上這裡我是寫了一個測試程式,寫完在連結的時候找不到對應的 GUID 連結,估計大概是不知道哪裡設定錯誤了,以至於連結不到對的 Library,有鑑於也沒有 MSDN 可以查詢,暫時先跳過!但如果可以連結個到對應的 GUID,我'想物件應該是拿得出來的!』

利用 ProcessMonitor 觀察系統做了些什麼改變:

首先當然一開始會錄到一堆雜七雜八的變動,但我們知道微軟的 SHELL 應該跟 Explorer.EXE 比較有關係,所以在經過一陣大過濾後,終於將記錄降低至可以搜尋的狀態,也才終於看到一個非常面熟的值「TabletMode」,位置如下:
[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\ImmersiveShell]
"TabletMode"=dword:00000000

經過測試,這個鍵值的確可以拿來判斷目前使用者是否有啟用 Tablet Mode,但有個不幸缺點是它並不在訊息 WM_SETTINGCHANGE 接收到的時候就已經修改完畢了,所以在接收到 WM_SETTINGCHANGE 的時候去詢問它會拿到錯誤的值,如果要正確一點,可以透過 RegNotifyChangeKeyValue() 這個方法去監控這個鍵值,程式就可以反應使用者的選擇而改變介面的外觀,我相信雖然這是可行的辦法,但應該不是正解,如果有更正確的方法,麻煩請賜教,我會相當感激的!

好了,這就是目前的 Workaround 解法囉! 希望不會誤導大家!