Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

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

Аватара для El Sanchez

Ветеран


Contributor


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

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


Цитата Vitalli:
И тут я столкнулся с проблемой, как это сделать? »
Vitalli,
Код: Выделить весь код
[code]
const
    LOAD_LIBRARY_AS_DATAFILE = $2;

function LoadLibraryEx(lpFileName: String; hFile: THandle; dwFlags: DWORD): THandle; external 'LoadLibraryExA@kernel32.dll stdcall';
function LoadString(hInstance: THandle; uID: SmallInt; var lpBuffer: Byte; nBufferMax: Integer): Integer; external 'LoadStringA@user32.dll stdcall';

//
function PinToTaskbarWin7(Filename: String): Boolean;
var
    hInst: THandle;
    buf: array [0..255] of byte;
    i: byte;
    strVerb, s: String;
    objShell, colverbs: Variant;
begin
    if not FileExists(Filename) then Exit;
    if (GetWindowsVersion shr 24 = 6) and ((GetWindowsVersion shr 16) and $FF = 1) then
    begin
        hInst := LoadLibraryEx(ExpandConstant('{sys}\shell32.dll'), 0, LOAD_LIBRARY_AS_DATAFILE);
        for i := 0 to LoadString(hInst, 5386, buf[0], 255)-1 do strVerb := strVerb + Chr(Buf[i]);
        FreeDLL(hInst);
        try
            objShell := CreateOleObject('Shell.Application');
        except
            ShowExceptionMessage;
            Exit;
        end;
        colVerbs := objShell.Namespace(ExtractFileDir(Filename)).ParseName(ExtractFileName(Filename)).Verbs;
        for i := colVerbs.Count downto 1 do if colVerbs.Item[i].Name = strVerb then
        begin
            colVerbs.Item[i].DoIt;
            Result := True;
        end;
    end;
end;

procedure InitializeWizard();
begin
  //Присобачим Блокнот на панель задач
  if PinToTaskbarWin7('c:\windows\notepad.exe') then
    MsgBox('ok', mbInformation, MB_OK)
  else
    MsgBox('no', mbInformation, MB_OK);
end;
Это сообщение посчитали полезным следующие участники:

Отправлено: 21:57, 16-09-2011 | #3111