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

Вниз

Диалог   Найти похожие ветки 

 
Kinderr   (2003-12-20 15:42) [0]

Как вызвать сабж? Не надо мне расказывать как создавать ярлык программными ср-вами. Мне надо знать как вызывается этот диалог для определённой директории.


 
Anatoly Podgoretsky   (2003-12-20 16:40) [1]

Вызывается он нажатием правой кнопки для определённой директории.


 
Kinderr   (2003-12-20 17:13) [2]

Это понятно. Но меня же не интересует как нажать на меню в эксплорере. Меня интересует как по, скажем, OnClick его вызвать :)


 
DillerXX   (2003-12-20 22:17) [3]

Хм, уважаемые мастера! А не подскажите ли как создавать ярлык программными ср-вами?


 
Kinderr   (2003-12-20 23:11) [4]

// Создание ярлыка для файла (запабликить)
function CreateLink(FileName, DestDirectory:String; OverwriteExisting,
AddNumberIfExists:Boolean):String;

VAR
MyObject : IUnknown;
MySLink : IShellLink;
MyPFile : IPersistFile;
WFileName : WideString;
X:INTEGER;
BEGIN
//Изначально RESULT = ""
Result:="";
//Если фиайла, для которого создаётся ярлык не существует, или же не
// существует директории, где должен быть создан ярлык файла, то EXIT
IF (FileExists(FileName)=FALSE) OR (DirectoryExists(DestDirectory)=FALSE)
THEN exit;
MyObject := CreateComObject(CLSID_SHELLLINK);
MyPFile := MyObject AS IPersistFile;
MySLink := MyObject AS IShellLink;
WITH MySLink DO
BEGIN
SetArguments("");
SetPath(PChar(FileName));
SetWorkingDirectory(PChar(ExtractFilePath(FileName)));
END;

//Гарантирование проставление завершающего "\" в пути директории
//расположения создаваемого ярлыка
IF DestDirectory[length(DestDirectory)]<>"\" THEN
DestDirectory:=DestDirectory+"\";
// Первичное определене будующего имени ярлыка
WFileName := DestDirectory+ExtractFileNameEx(FileName, FALSE)+".lnk";
//Если ярлык с таким именем уже существует, то
IF (FileExists(WFileName)) THEN
BEGIN
// Если не надо переписывать существующий ярлык, а надо добавить
// порядковый номер существования к имени создаваемого ярлыка, например
// blobby1.lnk, blobby2.lnk
IF (OverwriteExisting = FALSE ) AND (AddNumberIfExists = TRUE) THEN
BEGIN
// Определяем какой именно порядковый номер надо добавить к
// имени ярлыка
X:=0;
REPEAT
X:=X+1;
WFileName := DestDirectory+ExtractFileNameEx(FileName, FALSE)
+IntToStr(X)+".lnk";
UNTIL FileExists(WFileName)= FALSE;
// И сохраняем ярлык
MyPFile.Save(PWChar(WFileName),FALSE);
Result:=WFileName;
END;
//Если надо переписывать существующий ярлык
IF OverwriteExisting = TRUE THEN
BEGIN
//..., то переписываем его :)
MyPFile.Save(PWChar(WFileName),FALSE);
Result:=WFileName;
END;
END
ELSE
BEGIN
//В случае, если ярлыка с подобным имененм ещё нет в папке
//назначения, то создаём ярлык
MyPFile.Save(PWChar(WFileName),FALSE);
Result:=WFileName;
END;
END;

// Создание ярлыка 2
procedure CreateShortcut(const FilePath, ShortcutPath, WorkDir, Description, Params:string);
var obj: IUnknown;
isl: IShellLink;
ipf: IPersistFile;
begin
obj := CreateComObject(CLSID_ShellLink);
isl := obj as IShellLink;
ipf := obj as IPersistFile;
with isl do
begin
SetPath(PChar(FilePath));
SetArguments(PChar(Params));
SetDescription(PChar(Description));
SetWorkingDirectory(PChar(WorkDir));
end;
ipf.Save(PWChar(WideString(ShortcutPath)), False);
end;



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

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

Наверх




Память: 0.46 MB
Время: 0.03 c
14-80130
Карелин Артем
2004-02-02 15:36
2004.02.25
Как разрешить юзеру в Linux монтировать и размонтировать диски?


14-80202
Begin
2004-01-30 18:58
2004.02.25
Подскажите, плиз... Лицензионная копия Delphi 7....


1-79992
Soi
2004-02-13 14:10
2004.02.25
Файлы реестра


7-80322
Chery
2003-12-04 15:02
2004.02.25
Обратиться к флопику, открыть с дискеты файл ?


1-79948
wik
2004-02-12 11:01
2004.02.25
Нужен модуль работы с календарем





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский