Страница: 1 |
|
Вопрос: Как создать Ярлык?
|
Добавлено: 18.08.04 21:25
|
|
Автор вопроса: wishco
|
Как создать Ярлык?
И кто подскажет как его поместить
в Пуск\Автозагрузка\
Для вех пользователей под Xp.?
Ответить
|
Номер ответа: 1 Автор ответа: Kodo
Разработчик Offline Client
ICQ: 293048085
Вопросов: 37 Ответов: 457
|
Профиль | | #1
|
Добавлено: 18.08.04 22:17
|
Как создать ярлык см. Поиск по форуму, я задавал этот вопрос и получил достойный ответ. Там же можно создать ярлык в Автозагрузке. Выношу код:
Option Explicit
Private Declare Function CreateDirectory Lib "kernel32" Alias "CreateDirectoryA" (ByVal lpPathName As String, lpSecurityAttributes As Long) As Long
Private Declare Function PathFileExists Lib "shlwapi.dll" Alias "PathFileExistsA" (ByVal pszPath As String) As Long
Public Enum ShortcutPath
 esktop
Programs
StartMenu
StartUp
Favorites
Recent
SendTo
Other
' *** Для Windows 2000/XP ***
NT_AllUsersDesktop
NT_AllUsersStartMenu
NT_AllUsersPrograms
NT_AllUsersStartup
End Enum
Public Sub CreateLink(ByVal inDest As ShortcutPath, _
ByVal sName As String, _
ByVal kPath As String, _
Optional ByVal HotKey As String = vbNullString, _
Optional ByVal sIcon As String = vbNullString, _
Optional ByVal sWorkingDirectory As String = vbNullString, _
Optional ByVal sSubFolder As String = vbNullString, _
Optional ByVal WinStyle As VBA.VbAppWinStyle = vbNormalFocus, _
Optional ByVal sDesc As String = "", _
Optional ByVal xPath As String = ""
On Error Resume Next
 im sPath As String
 im WshShell As Object
Set WshShell = CreateObject("WScript.Shell"
With WshShell ' Выбор каталога, поскольку sPath - был переда ByVal,
Select Case inDest ' можем его со спокойной душой менять
Case Is = Desktop: sPath = .SpecialFolders("esktop"
Case Is = StartMenu: sPath = .SpecialFolders("StartMenu"
Case Is = StartUp: sPath = .SpecialFolders("StartUp"
Case Is = Programs: sPath = .SpecialFolders("Programs"
Case Is = Favorites: sPath = .SpecialFolders("Favorites Windows"
Case Is = Recent: sPath = .SpecialFolders("Recent Windows"
Case Is = SendTo: sPath = .SpecialFolders("SendTo Windows"
Case Is = NT_AllUsersDesktop: sPath = .SpecialFolders("AllUsersDesktop"
Case Is = NT_AllUsersStartMenu: sPath = .SpecialFolders("AllUsersStartMenu"
Case Is = NT_AllUsersPrograms: sPath = .SpecialFolders("AllUsersPrograms"
Case Is = NT_AllUsersStartup: sPath = .SpecialFolders("AllUsersStartup"
Case Is = Other: sPath = xPath
End Select
End With
' Проверка правильности имен и каталогов...
If Not Right(sPath, &H1) = "\" Then sPath = sPath & "\"
If Len(sSubFolder) Then If Not Right(sSubFolder, &H1) = "\" Then sSubFolder = sSubFolder & "\"
If Not Right(sName, &H4) = ".lnk" Then sName = sName & ".lnk"
sPath = sPath & sSubFolder ' Ставим путь, и проверяем существует-ли он...
If PathFileExists(sPath) = &H0 Then Call MkDirEx(sPath)
Set WshShell = WshShell.CreateShortCut(sPath & "\" & sName)
' Ух... какой я экономный
With WshShell ' Зачем еще один объект создавать ???
.WindowStyle = WinStyle
.HotKey = HotKey
.TargetPath = kPath
.IconLocation = sIcon
.Description = sDesc
.WorkingDirectory = sWorkingDirectory
.Save
End With
1
Set WshShell = Nothing
End Sub
Private Sub MkDirEx(sPath As String) 'Создание каталога любой степени вложенности
 im ci As Long, sArray() As String, sBuffer As String
If Len(sPath) = &H0 Then Exit Sub
sArray = Split(sPath, "\"
For ci = 0 To UBound(sArray) - 1
sBuffer = sBuffer & sArray(ci) & "\"
If PathFileExists(sBuffer) = &H0 Then Call CreateDirectory(sBuffer, ByVal &H0)
Next
End Sub
Где :
kPath - путь к проге,
xPath - путь к ярлычку (если в InDest указано Other)
Ответить
|
Страница: 1 |
Поиск по форуму