Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Kreiranje shortcut-a?!!!

[es] :: Pascal / Delphi / Kylix :: Kreiranje shortcut-a?!!!

[ Pregleda: 2662 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

inherited
Novi Sad

Član broj: 95516
Poruke: 219
*.neobee.net.



Profil

icon Kreiranje shortcut-a?!!!18.07.2006. u 14:59 - pre 216 meseci
Dva pitanja:

1) da li se moze nekako napraviti tastaturna precica kojom se otvara program koji smo
napravili? Kao npr. Task Manager (Ctrl+Alt+Del)

2) da li se na TButton moze postaviti ShortCut? Posto nema property za to?
 
Odgovor na temu

Nemanja Avramović
Engineering Manager
MENU Technologies
Beograd, Srbija

Član broj: 32202
Poruke: 4391
195.252.99.*

Sajt: https://avramovic.info


+46 Profil

icon Re: Kreiranje shortcut-a?!!!18.07.2006. u 15:55 - pre 216 meseci
2. Stavi mu u caption znak &. Primer: Avr&am. Pristupaš mu sa alt+a (alt+slovo iza &)
Laravel Srbija.

[NE PRUŽAM PODRŠKU ZA PHP PREKO PRIVATNIH PORUKA!]
 
Odgovor na temu

bojan21
Bojan Zukic
Beograd

Član broj: 101113
Poruke: 251
*.90.eunet.yu.



+6 Profil

icon Re: Kreiranje shortcut-a?!!!18.07.2006. u 17:47 - pre 216 meseci
A hoce li se to videti u Captionu???
 
Odgovor na temu

badam

Član broj: 78553
Poruke: 97
62.108.111.*



+2 Profil

icon Re: Kreiranje shortcut-a?!!!18.07.2006. u 18:35 - pre 216 meseci
Videt ce se podvuceno slovo a (iz primera).

Mozes mu dodeliti Action, a za action mozes definisati ShortCut Key.

Edit: sad sam video da imas i pod 1.

Postavi ShortCut za tvoj program na desktop, pa mu definisi (ShortCut-u) ShortCut Key.

Pozdrav.
 
Odgovor na temu

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: Kreiranje shortcut-a?!!!19.07.2006. u 09:33 - pre 216 meseci
> 1) da li se moze nekako napraviti tastaturna precica kojom se otvara program koji smo
> napravili? Kao npr. Task Manager (Ctrl+Alt+Del)

U Jedi biblioteci (JclShell unit) postoji nekoliko zgodnih funkcija koje se time bave, ShellLinkCreate, ShellLinkResolve...
 
Odgovor na temu

inherited
Novi Sad

Član broj: 95516
Poruke: 219
*.neobee.net.



Profil

icon Re: Kreiranje shortcut-a?!!!19.07.2006. u 11:11 - pre 216 meseci
Evo, nasao sam nesto, ali, ne znam kako bih to mogao koristiti. Odnosno, kako da odradim
ono sto sam pitao pod br. 1?
Code:

function ShellLinkCreate(const Link: TShellLink; const FileName: string): HRESULT;
var
  ShellLink: IShellLink;
  PersistFile: IPersistFile;
  LinkName: TUnicodePath;
begin
  Result := CoCreateInstance(CLSID_ShellLink, nil, CLSCTX_INPROC_SERVER,
    IID_IShellLink, ShellLink);
  if Succeeded(Result) then
  begin
    ShellLink.SetArguments(PChar(Link.Arguments));
    ShellLink.SetShowCmd(Link.ShowCmd);
    ShellLink.SetWorkingDirectory(PChar(Link.WorkingDirectory));
    ShellLink.SetPath(PChar(Link.Target));
    ShellLink.SetDescription(PChar(Link.Description));
    ShellLink.SetHotkey(Link.HotKey);
    ShellLink.SetIconLocation(PChar(Link.IconLocation), Link.IconIndex);
    PersistFile := ShellLink as IPersistFile;
    MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, PChar(FileName), -1,
      LinkName, MAX_PATH);
    Result := PersistFile.Save(LinkName, True);
  end;
end;


Code:

function ShellLinkResolve(const FileName: string; var Link: TShellLink): HRESULT;
const
  MAX_FEATURE_CHARS = 38;   // maximum chars in MSI feature name
var
  ShellLink: IShellLink;
  PersistFile: IPersistFile;
  LinkName: TUnicodePath;
  Buffer: string;
  Win32FindData: TWin32FindData;
  FullPath: string;
  ProductGuid: array [0..38] of Char;
  FeatureID: array [0..MAX_FEATURE_CHARS] of Char;
  ComponentGUID: array [0..38] of Char;
  TargetFile: array [0..MAX_PATH] of Char;
  PathSize: DWORD;
  TargetResolved: Boolean;
begin
  Result := CoCreateInstance(CLSID_ShellLink, nil, CLSCTX_INPROC_SERVER,
    IID_IShellLink, ShellLink);

  if Succeeded(Result) then
  begin
    TargetResolved := False;

    // Handle MSI style shortcuts without invoking the Windows installer if
    // the feature was set to "Install on first use"
    if RtdlLoadMsiFuncs then
    begin
      FillChar(ProductGuid, SizeOf(ProductGuid), #0);
      FillChar(FeatureID, SizeOf(FeatureID), #0);
      FillChar(ComponentGuid, SizeOf(ComponentGuid), #0);
      FillChar(TargetFile, SizeOf(TargetFile), #0);

      if RtdlMsiGetShortcutTarget(PAnsiChar(FileName), ProductGuid, FeatureID, ComponentGuid) = ERROR_SUCCESS then
      begin
        PathSize := MAX_PATH + 1;
        RtdlMsiGetComponentPath(ProductGuid, ComponentGuid, TargetFile, @PathSize);

        if TargetFile <> '' then
        begin
          Link.Target := TargetFile;
          TargetResolved := True;
        end;
      end;
    end;

    PersistFile := ShellLink as IPersistFile;
    // PersistFile.Load fails if the filename is not fully qualified
    FullPath := ExpandFileName(FileName);
    MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, PChar(FullPath), -1, LinkName, MAX_PATH);
    Result := PersistFile.Load(LinkName, STGM_READ);

    if Succeeded(Result) then
    begin
      Result := ShellLink.Resolve(0, SLR_ANY_MATCH);

      if Succeeded(Result) then
      begin
        SetLength(Buffer, MAX_PATH);

        if not TargetResolved then
        begin
          ShellLink.GetPath(PChar(Buffer), MAX_PATH, Win32FindData, SLGP_SHORTPATH);
          Link.Target := PChar(Buffer);
        end;

        ShellLink.GetArguments(PChar(Buffer), MAX_PATH);
        Link.Arguments := PChar(Buffer);
        ShellLink.GetShowCmd(Link.ShowCmd);
        ShellLink.GetWorkingDirectory(PChar(Buffer), MAX_PATH);
        Link.WorkingDirectory := PChar(Buffer);
        ShellLink.GetDescription(PChar(Buffer), MAX_PATH);
        Link.Description := PChar(Buffer);
        ShellLink.GetIconLocation(PChar(Buffer), MAX_PATH, Link.IconIndex);
        Link.IconLocation := PChar(Buffer);
        ShellLink.GetHotkey(Link.HotKey);
        ShellLink.GetIDList(Link.IdList);
      end;
    end;
  end;
end;
 
Odgovor na temu

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: Kreiranje shortcut-a?!!!19.07.2006. u 15:20 - pre 216 meseci
> Evo, nasao sam nesto, ali, ne znam kako bih to mogao koristiti.

Ovako na primer.

Code:

uses
  ActiveX, shlobj, JclShell;

function ShellLinkPerform(const ATarget: string; const AFolder: Integer): Boolean;
var
  DoUninitialize: Boolean;
  Temp: TShellLink;
  LinkPath: string;
begin
  DoUninitialize := Succeeded(CoInitialize(nil));
  // AFolder je CLIDL oznaka foldera u windowsu (Desktop, StartMenu, StartUp...)
  LinkPath := IncludeTrailingBackslash(GetSpecialFolderLocation(AFolder));

  // Dodajmo link u folder, LinkPath vec sadrzi putanju do Foldera, dodajmo mu i filename
  LinkPath := LinkPath + ChangeFileExt(ExtractFileName(ATarget), '.lnk');
  FillChar(Temp, SizeOf(TShellLink), 0);

  Temp.WorkingDirectory := ExtractFilePath(ATarget);
  Temp.Target := ATarget;

  Result := Succeeded(ShellLinkCreate(Temp, LinkPath));
  if not Result then
    RaiseLastWin32Error;

  ShellLinkFree(Temp);

  if DoUninitialize then
    CoUninitialize;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  ShellLinkPerform('C:\AUTOEXEC.BAT', CSIDL_DESKTOP);
end;


 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: Kreiranje shortcut-a?!!!

[ Pregleda: 2662 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.