Dodawanie skrótu na Pulpicie w WinXP

Odpowiedz Nowy wątek
2005-04-24 11:44

Rejestracja: 17 lat temu

Ostatnio: 12 lat temu

0

Proszę kogoś kto się wyznaje na XP o pomoc. Stosuje taką proc na dodanie skrótu:

procedure DodajSkrotDoPulpitu(prog_path:string);
var
   obiekt:IUnknown;
   skrot:IShellLink;
   p_file:IPersistFile;
   dir:String;
   w_prog_path:WideString;
   reg:TRegIniFile;
begin
   obiekt:=CreateComObject(CLSID_ShellLink);
   skrot:=obiekt as IShellLink;
   p_file:=obiekt as IPersistFile;
   with skrot do
   begin
      SetPath(PChar(prog_path));
      SetWorkingDirectory(PChar(ExtractFilePath(prog_path)));
   end;
   reg:=TRegIniFile.Create('Software\MicroSoft\Windows\CurrentVersion\Explorer');
   try
      dir:=reg.ReadString('Shell Folders','Desktop','');
      CreateDir(dir);

      w_prog_path:=dir+'\MyProg.lnk';
      p_file.Save(PWChar(w_prog_path),False);
   finally
      reg.Free;
   end;
end;

Pod Win98 nie ma problemów ale pod XP(się na nim nie znam) jak się zainstaluje (ta proc jest w instalatorze), to wszystko działa ale tylko z poziomu admina. Z poziomu użytkownika nie można nawet execa uruchomić bo wywala błąd. To samo ze skrótem w menu Start. Co tu trzeba poprawić?

Pozostało 580 znaków

2005-04-24 11:59

Rejestracja: 15 lat temu

Ostatnio: 1 tydzień temu

0

sprobuj do sciezki

reg:=TRegIniFile.Create('Software\MicroSoft\Windows\CurrentVersion\Explorer');

dopisac na poczatku HKEY_LOCAL_MACHINE
choc nie daje za to glowy
:P

Pozostało 580 znaków

2005-04-24 12:23

Rejestracja: 17 lat temu

Ostatnio: 12 lat temu

0

Dzisiaj tego nie sprawdzę, bo nie mam w domu XP

Pozostało 580 znaków

2005-04-24 14:49

Rejestracja: 18 lat temu

Ostatnio: 8 lat temu

0
greenmag napisał(a)

sprobuj do sciezki

reg:=TRegIniFile.Create('Software\MicroSoft\Windows\CurrentVersion\Explorer');

dopisac na poczatku HKEY_LOCAL_MACHINE

Po pierwsze, to nazwy klucza głównego nie daje się w ścieżce, tylko jako TRegistry.RootKey :). Po drugie, ta wartość nie może być w HKEY_LOCAL_MACHINE, tylko gdzieś w HKEY_CURRENT_USER, bo dla każdego użytkownika jest inny pulpit.

Pozostało 580 znaków

2005-04-24 17:39

Rejestracja: 15 lat temu

Ostatnio: 1 tydzień temu

0
thenkles napisał(a)
greenmag napisał(a)

sprobuj do sciezki

reg:=TRegIniFile.Create('Software\MicroSoft\Windows\CurrentVersion\Explorer');

dopisac na poczatku HKEY_LOCAL_MACHINE

Po pierwsze, to nazwy klucza głównego nie daje się w ścieżce, tylko jako TRegistry.RootKey :). Po drugie, ta wartość nie może być w HKEY_LOCAL_MACHINE, tylko gdzieś w HKEY_CURRENT_USER, bo dla każdego użytkownika jest inny pulpit.

racja :/

Pozostało 580 znaków

2005-04-24 18:23

Rejestracja: 15 lat temu

Ostatnio: 15 lat temu

0
unit maxwklb_1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs,
  ShlObj, ActiveX, ComObj, Registry, StdCtrls;  {te są ważne!aby dodac}
type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
procedure DodajSkrotDoPulpitu(prog_path:string);
var  MyObject:IUnknown;
     MySLink:IShellLink;
     MyPFile:IPersistFile;
     Directory:String;
     WFileName:WideString;
     MyReg:TRegIniFile;
begin
 MyObject:=CreateComObject(CLSID_ShellLink);
 MySLink:=MyObject as IShellLink;
 MyPFile:=MyObject as IPersistFile;
 with MySLink do
 begin
{  SetArguments('C:\AUTOEXEC.BAT');} {co otworzyc? przykładowo autoexec.bat}
  SetPath(PChar(prog_path));
  SetWorkingDirectory(PChar(ExtractFilePath(prog_path)));
end;
 MyReg := TRegIniFile.Create('Software\MicroSoft\Windows\CurrentVersion\Explorer');

 // Poniższe dodaje skrót do desktopu
 Directory := MyReg.ReadString('Shell Folders','Desktop','');

 // A to do menu Start
 //  Directory := MyReg.ReadString('Shell Folders','Start Menu','')+
 //      '\Whoa!';//  CreateDir(Directory);

 WFileName := Directory+'\FooBar.lnk';  {nazwa tego skrótu}
 MyPFile.Save(PWChar(WFileName),False);
 MyReg.Free;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
  DodajSkrotDoPulpitu('c:\windows\notepad.exe');
end;

end.

testowane na winXP/win98/win2000 i chodzi!


[??????? 44% ]

Pozostało 580 znaków

2005-04-24 19:25

Rejestracja: 17 lat temu

Ostatnio: 12 lat temu

0

O ile dobrze widzę to jest to samo co wcześniej napisałem...

Pozostało 580 znaków

2005-04-24 20:37

Rejestracja: 17 lat temu

Ostatnio: 6 lat temu

0

Czy wie ktoś, jak do skrótu utworzonego tą procedurą dodać parametr?

Pozostało 580 znaków

2005-04-25 00:57

Rejestracja: 17 lat temu

Ostatnio: 8 lat temu

0

Patrz linijka
{ SetArguments('C:\AUTOEXEC.BAT');} {co otworzyc? przykładowo autoexec.bat}


Szymek

<span style="color: blue">"Nie twierdzę, że kobiety są głupie,
zostały stworzone na podobieństwo mężczyzn...
"</span> - George Eliot<span style="color: green">

Pozostało 580 znaków

2005-04-25 06:28

Rejestracja: 17 lat temu

Ostatnio: 6 lat temu

0

Dzięki działa [green]

Pozostało 580 znaków

2005-04-25 07:40

Rejestracja: 17 lat temu

Ostatnio: 12 lat temu

0

Działać działa, tylko czy sprawdzaliście to o czym pisałem na początku? Być może ja coś z tym XP nie tak robię

Pozostało 580 znaków

Odpowiedz

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0