我想用Inno Setup製作一個簡單的安裝腳本。如何在安裝啓動時加載自定義的.cur
或.ani
光標文件?謝謝。如何在Inno安裝程序中設置自定義.cur或.ani光標?
UPDATE:更改標準光標代碼與.cur
文件,但動畫光標文件(.ani
)沒有動畫運作良好時,安裝程序開始。有沒有解決方案?謝謝。
我想用Inno Setup製作一個簡單的安裝腳本。如何在安裝啓動時加載自定義的.cur
或.ani
光標文件?謝謝。如何在Inno安裝程序中設置自定義.cur或.ani光標?
UPDATE:更改標準光標代碼與.cur
文件,但動畫光標文件(.ani
)沒有動畫運作良好時,安裝程序開始。有沒有解決方案?謝謝。
取決於您想要更改的遊標。你可能想要改變一些標準的遊標。或者某些(或全部)安裝程序窗口控件的默認(正常)光標。
更改標準光標
你很難改變這些只能安裝過程中,不使用一些外部DLL庫。
只有Inno Setup本身,您可以更改系統遊標。但是,這將影響所有其他應用程序,而安裝程序正在運行。
[Files]
Source: "MyCursor.cur"; Flags: dontcopy
[Code]
const
OCR_NORMAL = 32512;
function SetSystemCursor(hcur: LongWord; id: DWORD): BOOL;
external '[email protected] stdcall';
function LoadCursorFromFile(lpFileName: string): LongWord;
external '[email protected] stdcall';
function CopyIcon(hIcon: LongWord): LongWord;
external '[email protected] stdcall';
function LoadCursor(hInstance: LongWord; lpCursorName: LongWord): LongWord;
external '[email protected] stdcall';
var
OriginalCursor: LongWord;
procedure InitializeWizard();
var
PathToCursorFile: string;
Cursor: LongWord;
begin
// Remember the original custom
OriginalCursor := CopyIcon(LoadCursor(0, OCR_NORMAL));
// Load our cursor
ExtractTemporaryFile('MyCursor.cur')
PathToCursorFile := ExpandConstant('{tmp}\MyCursor.cur');
Cursor := LoadCursorFromFile(PathToCursorFile);
SetSystemCursor(Cursor, OCR_NORMAL);
end;
procedure DeinitializeSetup();
begin
// Restore original cursor on exit
SetSystemCursor(OriginalCursor, OCR_NORMAL);
end;
更改一些(或全部)的安裝窗口的默認(正常)光標控制
[Files]
Source: "MyCursor.cur"; Flags: dontcopy
[Code]
const
GCL_HCURSOR = (-12);
function LoadCursorFromFile(lpFileName: string): LongWord;
external '[email protected] stdcall';
function SetClassLong(hWnd: HWND; Index, NewLong: Longint): Longint;
external '[email protected] stdcall';
procedure InitializeWizard();
var
PathToCursorFile: string;
Cursor: LongWord;
begin
ExtractTemporaryFile('MyCursor.cur')
PathToCursorFile := ExpandConstant('{tmp}\MyCursor.cur');
Cursor := LoadCursorFromFile(PathToCursorFile);
SetClassLong(WizardForm.NextButton.Handle, GCL_HCURSOR, Cursor);
end;
以上代碼爲接着按鈕可改變光標。如果您想爲所有控件使用相同的自定義光標,則可以迭代控制樹。
procedure SetControlsCursor(Control: TWinControl; Cursor: LongWord);
var
I: Integer;
begin
SetClassLong(Control.Handle, GCL_HCURSOR, Cursor);
for I := 0 to Control.ControlCount - 1 do
begin
if Control.Controls[I] is TWinControl then
begin
SetControlsCursor(TWinControl(Control.Controls[I]), Cursor);
end;
end;
end;
procedure InitializeWizard();
...
begin
...
SetControlsCursor(WizardForm, Cursor);
end;
一切工作正常,但「_Remember原始custom_」函數獲取「_Unknown標識符:LoadCursor_」錯誤。所以,我添加了這個代碼並解決了問題。 '函數LoadCursor(hInstance:LongWord; lpCursorName:LongWord):LongWord;外部'[email protected] stdcall';' 非常感謝Martin。祝您有美好的一天。 –
對不起,我已經添加到我的答案。 –
沒問題:)再次感謝:) –
請檢查這個[URL](http://stackoverflow.com/help)它將有助於提升您的內容質量 –
我的腳本已經準備就緒。我只想加載自定義光標,我找不到解決方案。 –