Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Аватара для Aleksoid1978

Новый участник


Сообщения: 10
Благодарности: 1

Профиль | Отправить PM | Цитировать


Всем привет. Подскажите, могу ли в функции
Код: Выделить весь код
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
вызывать
Код: Выделить весь код
if IsTaskSelected('pintotaskbar') then
Вернее не то что могу ли, а будет ли от такого вызова толк. Отработает ли что при установке я ткнул нужнуб галку(сработало IsTaskSelected('pintotaskbar')).

Заранее спасибо.

El Sanchez

Вот окончательный мой код, работает и на х86 и на х64 системах, устанавливается и удаляется с таскбара корректно. Спасибо за помощь
Код: Выделить весь код
// thank for code to "El Sanchez" from forum.oszone.net
procedure PinToTaskbar(Filename: String; IsPin: Boolean);
var
	hInst: THandle;
  buf: array [0..255] of char;
  i, Res: Integer;
  strVerb, sVBSFile: String;
  objShell, colVerbs, oFile: Variant;
begin
  if (GetWindowsVersion shr 24 < 6) or ((GetWindowsVersion shr 24 = 6) and ((GetWindowsVersion shr 16) and $FF < 1)) then Exit; // Windows 7 check

  if not FileExists(Filename) then Exit;
  
  if IsPin then Res := 5386 else Res := 5387;
  begin
    hInst := LoadLibraryEx(ExpandConstant('{sys}\shell32.dll'), 0, LOAD_LIBRARY_AS_DATAFILE);
    if hInst <> 0 then
    try
      for i := 0 to LoadString(hInst, Res, buf[0], 255)-1 do strVerb := strVerb + Buf[i];
      try
        objShell := CreateOleObject('Shell.Application');
      except
        ShowExceptionMessage;
        Exit;
      end;
      oFile    := objShell.Namespace(ExtractFileDir(Filename)).ParseName(ExtractFileName(Filename));
      colVerbs := oFile.Verbs;
      
      if IsWin64 and (Pos (ExpandConstant ('{pf64}\'), Filename) = 1) then begin
        sVBSFile := GenerateUniqueName (GetTempDir, 'mpc_be.vbs');
        SaveStringToFile (sVBSFile, \
          'Set oShell=CreateObject("Shell.Application")'  + #13 + \
          'Set oVerbs=oShell.NameSpace("' + ExtractFileDir (Filename) + '").ParseName("' + ExtractFileName (Filename) + '").Verbs' + #13 + \
          'For Each oVerb In oVerbs'											+ #13 + \
          '  If (oVerb="' + strVerb + '") Then'						+ #13 + \
          '    oVerb.DoIt'														    + #13 + \
          '    Exit For'															    + #13 + \
          '  End If'															        + #13 + \
          'Next'																, False);
  
        exec( ExpandConstant ('{win}\Sysnative\cscript.exe'), '"' + sVBSFile + '" /B', '', SW_HIDE, ewWaitUntilTerminated, i);
        DeleteFile (sVBSFile);
      end else begin
        for i := colVerbs.Count downto 1 do if colVerbs.Item[i].Name = strVerb then begin
			    if (IsPin and oFile.IsLink) then
				    DeleteFile (ExpandConstant ('{userappdata}\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar\') + ExtractFileName (Filename));
          
          colVerbs.Item[i].DoIt;
          Break;
        end;
      end;
    finally
      FreeDLL(hInst);
    end;
  end;
end;

Последний раз редактировалось Aleksoid1978, 29-09-2012 в 14:08.


Отправлено: 14:01, 29-09-2012 | #1034