Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.012 c
1-52816
Checist [root]
2003-02-07 10:38
2003.02.17
Очень нужна помощь


1-52902
Dmitry Filippov
2003-02-08 10:56
2003.02.17
Подскажите как отличить матричный принтер от других


1-52985
Devel
2003-02-10 13:55
2003.02.17
PGP


1-53024
b-Ars
2003-02-06 12:28
2003.02.17
Передать объект в DLL


1-52976
anbezr
2003-02-10 10:13
2003.02.17
Условная компиляция




   Наверх