Текущий архив: 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.46 MB
Время: 0.015 c