是否可以判斷系統版本來決定是否宣告方法? |
答題得分者是:Coffee
|
SleepWalker
一般會員 發表:16 回覆:20 積分:12 註冊:2004-06-21 發送簡訊給我 |
請問一下
由於Vista 的Registry 保護機制相容問題: function RegisterTypeLib(tlib: ITypeLib; szFullPath, szHelpDir: POleStr): HResult; stdcall; 都要改成 function RegisterTypeLibForUser(tlib: ITypeLib; szFullPath, szHelpDir: POleStr): HResult; stdcall; 問題來了, 因為 Win2000SP4 的OleAut32.dll 為2.40.4522 版, 並不包含 RegisterTypeLibForUser , 所以會造成無法找到程式輸入點的BUG. 有沒有辦法判斷Vista 才在宣告時宣告 RegisterTypeLibForUser 呢? PS: 沒有辦法幫每台電腦都手動換OleAut32 @@ 編輯記錄
SleepWalker 重新編輯於 2007-06-26 15:59:51, 註解 無‧
|
Coffee
版主 發表:31 回覆:878 積分:561 註冊:2006-11-15 發送簡訊給我 |
|
SleepWalker
一般會員 發表:16 回覆:20 積分:12 註冊:2004-06-21 發送簡訊給我 |
關於 IFDEF 這邊我有稍微研究過了一下
他的判斷指支援
如果用Ver 並不符合我的需求, 但是WIN32, MSWINDOWS 等也無法區別是否為VISTA >< |
Coffee
版主 發表:31 回覆:878 積分:561 註冊:2006-11-15 發送簡訊給我 |
------
不論是否我發的文,在能力範圍皆很樂意為大家回答問題。 為了補我的能力不足之處,以及讓答案可以被重複的使用,希望大家能儘量以公開的方式問問題。 在引述到我的文時自然會儘量替各位想辦法,謝謝大家! |
SleepWalker
一般會員 發表:16 回覆:20 積分:12 註冊:2004-06-21 發送簡訊給我 |
謝摟, 跟大家分享一下我的用法:
動態載入 procedure DoSomeThing(); var DllHandle: THandle; RegisterTypeLibForUser: function(tlib: ITypeLib; szFullPath, szHelpDir: POleStr): HResult stdcall; begin if isVista() then begin DllHandle := LoadLibrary('oleAut32.dll'); @RegisterTypeLibForUser := GetProcAddress(DllHandle, 'RegisterTypeLibForUser'); if @RegisterTypeLibForUser <> nil then begin Result := RegisterTypeLibForUser(ITypeUse, @swFile[1], nil) = S_OK; end else begin Result := False; end; FreeLibrary(DllHandle); end; end;
編輯記錄
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |