Search the Community
Showing results for tags 'taskbar'.
-
Use COM methods and properties via the COM Automation objects support. So I translate a Delphi script to Inno Setup section.And it work! Here is a part of script in [code] section: [code] http://www.jrsoftware.org) There are someway to pin taskbar depend on one's choice. We can add a [task] section in InnoSetup. if one do not want to see the "task selected page"(like me ), the second way is to create a new CheckBox in Inno [code] section. And in the second way one need to control the CheckBox show or hide inprocedure CurPageChanged(). then call the function like: zylPinAppToTaskbar('c:\window', 'notepad.exe'); An example project for Unicode Inno Setup is provided as download. The attachment "pintaskbar.zip" is the script. Unzip the file pintaskbar.zip,you can get two files named "PinShortcutOntoTaskbar-task.iss" and "PinShortcutOntoTaskbar-checkbox.iss". Please copy the *.iss files to the directory: ./Inno Setup 5/Examples Then build the program and run PinTaskbar.exe. References http://blog.csdn.net/ccrun/article/details/6906471 http://gallery.technet.microsoft.com/ScriptCenter/b66434f1-4b3f-4a94-8dc3-e406eb30b750/ http://www.codeproject.com/Tips/713824/Pin-a-shortcut-onto-the-Taskbar-or-Start-Menu The following is the script of the second way, I think you can modify it to the first way. If the attachment was broken, copy the following script to a *.iss file. ; -- PinShortcutOntoTaskbar.iss -- ; Pin a shortcut onto taskbar on Win7 & Win8. ; @author: Yaliang.Zhao <shuangxiang2008@google.com> ; @brief: I test is on 32-bit Win7 & Win8, but ; I thins it will work on X64 version. [setup] AppName=PinTaskbar AppVersion=1.0 OutputBaseFilename=PinTaskbar DefaultDirName={pf}\PinTaskbar OutputDir=./ DisableStartupPrompt=yes DisableReadyPage=yes [Files] Source: "MyProg.exe"; DestDir: "{app}" ;[Tasks] ;Name: pintaskbar; Description: "Pin shortcut onto taskbar" ;Following is how to use [Code] var PinTaskBarCheck : TNewCheckBox; //the function is work well on Unicode Inno Setup, //if Non Unicode Inno Setup, one need to modify, //and I think you can do it! //Inno use Win32 API function LoadLibrary(lpFilename : String) : LongInt; external 'LoadLibraryW@kernel32.dll stdcall delayload'; //if Non Unicode Inno Setup, use LoadLibraryA function FreeLibrary(hModule : LongInt) : BOOL; external 'FreeLibrary@kernel32.dll stdcall delayload'; function LoadString(hInstance:LongInt; uId:UINT; lpBuffer:String; nBufferMax:Integer) : Integer; external 'LoadStringW@user32.dll stdcall delayload'; //if Non Unicode Inno Setup, use LoadStringA //here is the function //@param strPath The App's directory, //@param strApp The App's name //@example zylPinAppToTaskbar('c:\window', 'notepad.exe'); procedure zylPinAppToTaskbar(strPath, strApp: string); var vShell, vFolder, vFolderItem, vItemVerbs: Variant; vPath, vApp: Variant; i: Integer; sItem: String; h: LongInt; szPinName: String; filenameEnd : Integer; filename : String; strEnd : String; begin SetLength(szPinName, 255); h := LoadLibrary(ExpandConstant('{sys}\Shell32.dll')); LoadString(h, 5386, szPinName, 255); FreeLibrary(h); strEnd := #0; filenameEnd := Pos(strEnd, szPinName); filename := Copy(szPinName, 1, filenameEnd - 1); if (Length(filename) > 0) then //WinXp or lower, no pin taskbar function begin vShell := CreateOleObject('Shell.Application'); vPath := strPath; vFolder := vShell.NameSpace(vPath); vApp := strApp; vFolderItem := vFolder.ParseName(vApp); vItemVerbs := vFolderItem.Verbs; for i := 1 to vItemVerbs.Count do begin sItem := vItemVerbs.Item(i).Name; if (sItem = filename) then begin // 63 63 72 75 6E 2E 63 6F 6D vItemVerbs.Item(i).DoIt; break; end; end; end; end; //You can use zylPinAppToTaskbar like this procedure CurPageChanged(CurPageID: Integer); begin //When Finished page is shown, call the function //You can also call is when the "Finish" button clicked. if CurPageID <> wpWelcome then PinTaskBarCheck.hide else begin PinTaskBarCheck.show; end; if CurPageID = wpFinished then begin //if IsTaskSelected('pintaskbar') then //if Selected the [task] // zylPinAppToTaskbar(ExpandConstant('{app}'), 'MyProg.exe'); if PinTaskBarCheck.Checked then zylPinAppToTaskbar(ExpandConstant('{app}'), 'MyProg.exe'); end; end; procedure InitializeWizard; begin PinTaskBarCheck := TNewCheckBox.Create(WizardForm); with PinTaskBarCheck do begin Parent := WizardForm; Caption := 'Pin it onto taskbar'; Top := 200; Left := 200; Width := ScaleY(200); Height := ScaleY(15); State := cbChecked; //Hide; end; end; pintaskbar.zip