Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.02.17;
Скачать: CL | DM;

Вниз

Shortcuts   Найти похожие ветки 

 
NetKnight ©   (2003-02-05 09:37) [0]

Как сделать функцию создания shortcut"ов на десктопе ?


 
Delirium^.Tremens ©   (2003-02-05 09:41) [1]

С помощью интерфейса IShellLink


 
NetKnight ©   (2003-02-07 09:37) [2]

Эээ.. А поподробнее ? Лучше кусок кода..


 
Внук ©   (2003-02-07 09:52) [3]

И чтоб работало!!!


 
Anatoly Podgoretsky ©   (2003-02-07 09:57) [4]

И что бы правильно.


 
Gigabyte ©   (2003-02-07 10:01) [5]

Класс TShellLinks в кладовке, может подойдет


 
NetKnight ©   (2003-02-07 10:31) [6]

--> Gigabyte
Сянькс! То что надо! :)

Ещё вопрос как узнать где находится папка Desktop ? В разных виндах она в разных местах находится.. В WINNT - в юзверевской папке, а в 98 в каталоге Вындовза...
Переменной окружения не нашёл.. :(


 
Gigabyte ©   (2003-02-07 11:08) [7]

SHGetSpecialFolderLocation(SHGetSpecialFolderPath) одно из двух


 
Gigabyte ©   (2003-02-07 11:11) [8]

Если не поможет - пришлю пример


 
NetKnight ©   (2003-02-07 11:28) [9]

--> Gigabyte ©
Присылай, я понятия не имею как работать с интерфейсами..
В SDK нашёл функцию SHGetDesktopFolder, но дельфи не понимает её, наверное как-то по другому она работает..


 
Gigabyte ©   (2003-02-07 11:36) [10]

Напишу примерчик и пришлю...
"Ждите ответа"


 
Gigabyte ©   (2003-02-08 10:25) [11]

Не знаю Пишел ли примерчик,так я его здесь отсавлю.
implementation
Uses ComObj,SHFolder;

const A:Array[0..15] of Integer = (
SHFolder.CSIDL_PERSONAL,{ My Documents }
SHFolder.CSIDL_APPDATA, { Application Data, new for NT4 }
SHFolder.CSIDL_LOCAL_APPDATA, { non roaming, user\Local Settings\Application Data }
SHFolder.CSIDL_INTERNET_CACHE,
SHFolder.CSIDL_COOKIES,
SHFolder.CSIDL_HISTORY,
SHFolder.CSIDL_COMMON_APPDATA, { All Users\Application Data }
SHFolder.CSIDL_WINDOWS, { GetWindowsDirectory() }
SHFolder.CSIDL_SYSTEM, { GetSystemDirectory() }
SHFolder.CSIDL_PROGRAM_FILES, { C:\Program Files }
SHFolder.CSIDL_MYPICTURES, { My Pictures, new for Win2K }
SHFolder.CSIDL_PROGRAM_FILES_COMMON, { C:\Program Files\Common }
SHFolder.CSIDL_COMMON_DOCUMENTS, { All Users\Documents }
SHFolder.CSIDL_FLAG_CREATE, { new for Win2K, or this in to force creation of folder }
SHFolder.CSIDL_COMMON_ADMINTOOLS, { All Users\Start Menu\Programs\Administrative Tools }
SHFolder.CSIDL_ADMINTOOLS); { <user name>\Start Menu\Programs\Administrative Tools }

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var S:PChar;i:integer;
T,F:Cardinal;
begin
T:=0;F:=0;
GetMem(S,Max_Path);
try
For i:=0 to High(A) do
begin
OleCheck(SHFolder.SHGetFolderPath(Self.Handle,A[i],T,F,S));
Listbox1.Items.Add(S);
end;
finally
FreeMem(S,Max_Path);
end;
end;
end.


 
Style   (2003-02-08 23:52) [12]

const
CLSID_LINK: TGUID = "{00021401-0000-0000-C000-000000000046}";
CLSID_PST: TGUID = "{0000010B-0000-0000-C000-000000000046}";

implement..

procedure ButtonClick
begin

Dir := GetRegStringValue("Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders","Desktop",HKEY_CURRENT_USER);

CreateLinkFile("C:\program.exe",dir + "Програмулька.lnk");

end;

procedure TForm1.CreateLinkFile(Prog,Link: string);
var
NewLink: IShellLInk;
hRes: THandle;
pf: IPersistFile;
begin

NewLink := CreateComObject(CLSID_LINK) as IShellLink;
NewLink.SetPath(pchar(Prog));
NewLink.SetWorkingDirectory(Pchar(ExtractFilePath(Prog)));
NewLink.SetDescription(PChar("Ярлык для " + Prog));
hRes := NewLink.QueryInterface(CLSID_PST, pf);
if Succeeded(hRes) then
pf.Save(PWideChar(WideString(Link)), False);

end;





Страницы: 1 вся ветка

Текущий архив: 2003.02.17;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.018 c
3-52806
VitGun
2003-01-31 18:42
2003.02.17
Связывание полей


1-52999
3asys
2003-02-10 16:19
2003.02.17
Изменение размеров TPanel в run-time


6-53149
Hawk2
2002-12-26 14:51
2003.02.17
Написание cgi-скриптов.


1-52842
aspen
2003-02-07 14:34
2003.02.17
Сделал программку, которая сама себя инсталирует, те если


7-53287
nick_sniper
2002-12-04 08:01
2003.02.17
2 компьютера в 1 ?