[COLOR=#000080]{ **** UBPFD *********** by delphibase.endimus.com ****>> [/COLOR]
[COLOR=#000080]Создание для конкретного файлаВХОДНЫЕ ПАРАМЕТРЫ.FILENAME - имя файл ДЛЯ КОТОРОГО будет создан [/COLOR]
[COLOR=#000080](*.lnk).DestDirectory - путь к каталогу, в котором должен быть расположенсоздаваемый .[/COLOR]
[COLOR=#000080]OverwriteExisting - если TRUE, то в случае существования создаваемого в папке назначения, то существующий сподобным именем будет переписан.[/COLOR]
[COLOR=#000080]AddNumberIfExists - если TRUE, то в при существовании с подобнымименем в папке назначения,существующий не будет переписан, а ксоздаваемому [/COLOR]
[COLOR=#000080] будет добавлено число, определяющее номер копиисоздаваемого .ВНИМАНИЕ !!! Параметр OverwriteExisting является более влиятельным поотношению к параметру AddNumberIfExists, т.е. при передачиобоим параметрам TRUE, существующий (если таковой имеется в папке назначения),будет переписан.Зависимости: shlObj, activeX, SysUtils, filectrl, comObj, UBPFD.ExtractFileNameEXАвтор: VID, [EMAIL="snap@iwt.ru"]snap@iwt.ru[/EMAIL], ICQ:132234868, МахачкалаCopyright: Списал с одного из FAQ + собственные корректировки и расширение возможностейДата: 19 апреля 2002 г.***************************************************** }[/COLOR]
function CreateLink(FileName, DestDirectory: string; OverwriteExisting, AddNumberIfExists: Boolean): string;
var MyObject: IUnknown; MySLink: IShellLink; MyPFile: IPersistFile; WFileName: WideString; X: INTEGER;
begin [COLOR=#000080]//Изначально RESULT = ''[/COLOR] Result := ''; [COLOR=#000080]//Если фиайла, для которого создаётся не существует, или же не[/COLOR] [COLOR=#000080]// существует директории, где должен быть создан файла, то EXIT[/COLOR]
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; [COLOR=#000080]//Гарантирование проставление завершающего '\' в пути директории[/COLOR] [COLOR=#000080]//расположения создаваемого [/COLOR]
if DestDirectory[length(DestDirectory)] <> '\' then DestDirectory := DestDirectory + '\'; [COLOR=#000080]// Первичное определене будующего имени [/COLOR]WFileName := DestDirectory + ExtractFileNameEx(FileName, FALSE) + '.lnk'; [COLOR=#000080]//Если с таким именем уже существует, то[/COLOR]
if (FileExists(WFileName)) then
begin [COLOR=#000080]// Если не надо переписывать существующий , а надо добавить[/COLOR] [COLOR=#000080]// порядковый номер существования к имени создаваемого , например[/COLOR] [COLOR=#000080]// blobby1.lnk, blobby2.lnk[/COLOR]
if (OverwriteExisting = FALSE) and (AddNumberIfExists = TRUE) then
begin [COLOR=#000080]// Определяем какой именно порядковый номер надо добавить к[/COLOR] [COLOR=#000080]// имени [/COLOR]X := 0;
repeat X := X + 1;
WFileName := DestDirectory + ExtractFileNameEx(FileName, FALSE) + IntToStr(X) + '.lnk';
until FileExists(WFileName) = FALSE; [COLOR=#000080]// И сохраняем [/COLOR]MyPFile.Save(PWChar(WFileName), FALSE); Result := WFileName;
end; [COLOR=#000080]//Если надо переписывать существующий [/COLOR]if OverwriteExisting = TRUE then
begin [COLOR=#000080]//..., то переписываем его :)[/COLOR] MyPFile.Save(PWChar(WFileName), FALSE); Result := WFileName;
end;
end
else
begin [COLOR=#000080]//В случае, если с подобным имененм ещё нет в папке[/COLOR] <FONT color=#000080><I>//назначения, то создаём <A href="http://narod.yandex.ru/cgi-bin/yandmarkup?cluster=14&prog=0x2757571A&HndlQuery=1897964912&PageNum=0&g=1&d=0&q0=1292588448&p=#YANDEX_21">
MSVS 2005. Как создат ярлык
Подскажите пожалуйста способ создать програмно ярлык на рабочем столе
Код:
P.s: Извните за не разборчивось копировал с :
http://narod.yandex.ru/cgi-bin/yandmarkup?cluster=14&prog=0x2757571A&HndlQuery=1897964912&PageNum=0&g=1&d=0&q0=1292588448&p=
' 24.05.2005
' Author: Perikov Vadim
' http://www.tut-soft.narod.ru
' Comment: Для использования модуля CrShortcut.bas
'в своих проектах не забывайте в References выбирать
'«Microsoft Shell Controls And Automation» (библа Shell32.dll)
Private Sub Command1_Click()
f = CreateShortcut(T_FileLNK.Text, T_FileObject.Text, T_Arguments.Text, T_WorkingDir.Text, T_Description.Text, Cbox_ShowCommand.ItemData(Cbox_ShowCommand.ListIndex), T_FileIcon.Text, Val(T_IconNumber.Text), Val(T_HotKey.Text))
'f = CreateShortcut("C:\Новый Ярлык.Lnk", "C:\Program Files", , , "Ярлык для Program Files")
If f = 0 Then MsgBox "Не верно введены данные!"
End Sub
Private Sub Form_Load()
Cbox_ShowCommand.ListIndex = 0
End Sub
Код модуля
' 24.05.2005
' Author: Perikov Vadim
' http://www.tut-soft.narod.ru
' Comment: Для использования модуля CrShortcut.bas
'в своих проектах не забывайте в References выбирать
'«Microsoft Shell Controls And Automation» (библа Shell32.dll)
Option Explicit
Private Declare Function lcreat Lib "kernel32" Alias "_lcreat" (ByVal lpPathName As String, ByVal iAttribute As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Const Delim = "\"
Public Function CreateShortcut(ByVal fCreateFileLnk As String, ByVal fFileObject As String, Optional ByVal fArguments As String = "", Optional ByVal fWorkingDir As String = "", Optional ByVal fDescription As String = "", Optional ByVal fShowCommand As Long = 1, Optional ByVal fFileIcon As String = "", Optional ByVal fIconNumber As Long = 0, Optional ByVal fHotkey As Long = 0) As Long
Dim fsHwnd As Long
Dim fsDl As Long
Dim csShell As Shell
Dim csFolder As Folder
Dim csItem As FolderItem
Dim fsLink As ShellLinkObject
On Error GoTo Errors
fsHwnd = lcreat(fCreateFileLnk, 0)
fsDl = CloseHandle(fsHwnd)
Set csShell = New Shell
Set csFolder = csShell.NameSpace(Left$(fCreateFileLnk, InStrRev(fCreateFileLnk, Delim, , 1) - 1))
Set csItem = csFolder.ParseName(Mid$(fCreateFileLnk, InStrRev(fCreateFileLnk, Delim, , 1) + 1))
If csItem.IsLink = True Then
Set fsLink = csItem.GetLink
End If
fsLink.Path = fFileObject
fsLink.Arguments = fArguments
fsLink.WorkingDirectory = fWorkingDir
fsLink.Description = fDescription
fsLink.ShowCommand = fShowCommand
' Hotkey
'512 - <Ctrl>
'1024 - <Alt>
'512+1024 - <Ctrl+Alt>
If fHotkey > 0 And fHotkey < 256 Then fsLink.Hotkey = 512 + 1024 + fHotkey
fsLink.SetIconLocation fFileIcon, fIconNumber
fsLink.Save
If Not (fsLink Is Nothing) Then Set fsLink = Nothing
If Not (csItem Is Nothing) Then Set csItem = Nothing
If Not (csFolder Is Nothing) Then Set csFolder = Nothing
If Not (csShell Is Nothing) Then Set csShell = Nothing
CreateShortcut = 1
Exit Function
Errors:
CreateShortcut = 0
End Function
П.с: извините не на тот форум зашел,,,,,