Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

MSVS 2005. Как создат ярлык

2.5K
03 февраля 2007 года
MaximZaikin
12 / / 11.08.2003
Подскажите пожалуйста способ создать програмно ярлык на рабочем столе
1.9K
03 февраля 2007 года
Borland_prog
149 / / 25.01.2006
Код:
[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">


P.s: Извните за не разборчивось копировал с :
http://narod.yandex.ru/cgi-bin/yandmarkup?cluster=14&prog=0x2757571A&HndlQuery=1897964912&PageNum=0&g=1&d=0&q0=1292588448&p=
13K
03 февраля 2007 года
IpatovSoft
62 / / 11.01.2007
Код формы
' 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
1.9K
03 февраля 2007 года
Borland_prog
149 / / 25.01.2006
точно.
П.с: извините не на тот форум зашел,,,,,
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог