Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2003.04.03;
Скачать: [xml.tar.bz2];

Вниз

Создание иконки   Найти похожие ветки 

 
ak75   (2003-01-31 19:16) [0]

Ребята помогите понять, с какими значениями парметров нужно вызвать следующую процедуру:

procedure TForm1.Button1Click(Sender: TObject);
begin
CreateLink(PathObj, PathSpec(), Desc, Param);
end;

function TForm1.PathSpec(): String;
var
FolderPath :string;
Registry: TRegistry;
begin
Registry := TRegistry.Create;
try
Registry.RootKey := HKey_Current_User;
Registry.OpenKey("Software\Microsoft\Windows\"+
"CurrentVersion\Explorer\Shell Folders", False);
Result := Registry.ReadString("Desktop");
{Cache, Cookies, Desktop, Favorites,
Fonts, Personal, Programs, SendTo, Start Menu, StartUp}
finally
Registry.Free;
end;
end;

procedure TForm1.CreateLink(const PathObj, PathLink, Desc, Param: string);
var
IObject: IUnknown;
SLink: IShellLink;
PFile: IPersistFile;
begin
IObject := CreateComObject(CLSID_ShellLink);
SLink := IObject as IShellLink;
PFile := IObject as IPersistFile;
with SLink do begin
SetArguments(PChar(Param));
SetDescription(PChar(Desc));
SetPath(PChar(PathObj));
end;
PFile.Save(PWChar(WideString(PathLink)), FALSE);
end;


Например надо создать иконку на десктопе файла c:\1.txt
PathObj - ? (не знаю)
PathSpec() - знаю, понятно
Desc - ? (не знаю)
Param - ? (не знаю)
Помогите, что такое PathObj, Desc, Param ?


 
Набережных С.   (2003-01-31 23:33) [1]


{
CSIDLTarget - константы CSIDL_DESKTOP и т.п., определены в модуле ShlObj
PathObj - путь и имя объекта
Params - параметры, передаваемые при открытии
WorkDir - рабочая директория
IconSource - путь и имя файла с иконкой
}
procedure CreateShellLink(WndOwn: HWND; CSIDLTarget: DWORD;
const PathObj, Params, WorkDir, IconSource: String;
IconIndex: integer);

var
LinkPath: WideString;
Link: IShellLink;
Stg: IPersistFile;
begin
SetLength(LinkPath,MAX_PATH);
if not SHGetSpecialFolderPathW(WndOwn, @LinkPath[1], CSIDLTarget, false) then
raise EInvalidArgument.Create("Invalid CSIDLTarget argument.");
Link:=CreateComObject(CLSID_ShellLink) as IShellLink;
try
with Link do
begin
OleCheck(SetPath(PChar(PathObj)));
OleCheck(SetArguments(PChar(Params)));
OleCheck(SetIconLocation(PChar(IconSource),IconIndex));
OleCheck(SetWorkingDirectory(PChar(WorkDir)));
end;
Stg:=Link as IPersistFile;
try
SetLength(LinkPath, Length(PWideChar(LinkPath)));
LinkPath:=LinkPath+"\"+ChangeFileExt(ExtractFileName(PathObj),".lnk");
OleCheck(Stg.Save(PWideChar(LinkPath),false));
finally
Stg:=nil;
end;
finally
Link:=nil;
end;
end;

CreateShellLink(0,CSIDL_DESKTOP,"C:\1.txt","","","",0);


 
ak75   (2003-02-03 16:08) [2]

> Набережных С.
Спасибо, а теперь как программно удалить этот ярлык, если название изменили.



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

Форум: "WinAPI";
Текущий архив: 2003.04.03;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.009 c
3-6361
Tornado
2003-03-14 08:04
2003.04.03
Что добавить в дистрибутив?


1-6589
BVS
2003-03-20 16:35
2003.04.03
jpeg to exe


4-6861
Ajax
2003-02-04 18:27
2003.04.03
Самое-самое верхнее окно


7-6803
Alpine
2003-02-04 18:32
2003.04.03
Как можно отключить CTRL+ALT+DEL в W2k ?


1-6487
Dimonich
2003-03-14 15:58
2003.04.03
Как заблокировать рабочий стол?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский