2010年2月3日 星期三

FindWindow與多語系 - 2

今天終於解決(?)這個問題了

因為save dialog是依據comdlg32.dll來創造的,所以在comdlg32.dll中
就含有dialog對應的string resource

用visual studio開啟comdlg32.dll (個人是使用XP SP3)
可以看到resource id=385 就是我們要的 "另存新檔"

根據這個結果,寫了下面的程式:

LoadString((HINSTANCE)GetModuelHandle(_T("comdlg32.dll")), 385, buf, 1024);

這樣buf的內容就會是"另存新檔" 再丟給FindWindow就能找到我們要的dialog的handle

FindWindow(MAKEINTATOM(32775), buf) 這樣子就能找出SaveDialog的handle

vista下LoadString也能得到"另存新檔"字串
windows7下應該也沒有問題 而且在windows7下打開comdlg32.dll可以看到其它語系的string table
其它語系的"另存新檔" id也同樣是385
所以這個方法應該沒有問題吧... XD

現在要測試在64bits的os是否也能得到相同結果

>> 64bits OS OK!!

沒有留言: