我想建立一個自定義設置,使用aero格式,但我不知道如何啓動它。 有什麼辦法可以使用DWM API和inno setup?Inno setup/pascal腳本 - 有什麼方法可以使用Aero(dwmapi)?
function dwm(Wnd: HWnd; cxLeftWidth, cxRightWidth, cyTopHeight, cyBottomHeight: integer): Longint; external '[email protected] stdcall';
我想建立一個自定義設置,使用aero格式,但我不知道如何啓動它。 有什麼辦法可以使用DWM API和inno setup?Inno setup/pascal腳本 - 有什麼方法可以使用Aero(dwmapi)?
function dwm(Wnd: HWnd; cxLeftWidth, cxRightWidth, cyTopHeight, cyBottomHeight: integer): Longint; external '[email protected] stdcall';
DWM API是土生土長的API,因此,您可以在使用DLL Import method訪問。
然後,您可以在腳本代碼中調用API函數。
但我會建議不要這樣做。由於DWM僅適用於Vista或更高版本,因此可以通過停止NT服務來禁用它。它可能會阻止您的安裝在其設計的機器上工作。
現在你發佈你的代碼...
您發佈的API的原始聲明。
HRESULT WINAPI DwmExtendFrameIntoClientArea(
HWND hWnd,
__in const MARGINS *pMarInset
);
我最好的猜測是它應該看起來像這樣。
type
Margins = record
cxLeftWidth : Integer;
cxRightWidth: Integer;
cyTopHeight: Integer;
cyBottomHeight: Integer;
end;
function DwmExtendFrameIntoClientArea(Wnd: HWnd;
var pMarInset : MARGINS) :
HRESULT;
external '[email protected] cdecl';
我不會在一個安裝程序中使用這種方法,但如果你真的需要它,我會開發它在Delphi中,有一個簡單的API包裝在一個DLL,並呼籲從InnoSetup該DLL。
是的,但我試圖調用函數,但inno安裝程序崩潰 - 第一篇文章中更新的代碼。 – user830054
什麼類型的消息崩潰? –
由於我的代碼是異常錯誤,因此使用此代碼的編譯器會說:未知類型'HRESULT' – user830054