Программно создать ярлык?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
jetcom
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 181
Зарегистрирован: 12.01.2003 (Вс) 23:15
Откуда: Russia, Novorossiysk

Программно создать ярлык?

Сообщение jetcom » 15.10.2004 (Пт) 23:52

Каким образом это делается, если возможно в принципе?
Вот, собственно и все... :wink:
Всё сбудется!!!

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 16.10.2004 (Сб) 0:01

Код: Выделить всё
Private Declare Function fCreateShellLink Lib "VB5STKIT.DLL" (ByVal
lpstrFolderName As String, ByVal lpstrLinkName As String, ByVal lpstrLinkPath
As String, ByVal lpstrLinkArgs As String) As Long
Private Sub Form_Load()
    'KPD-Team 1999
    'URL: http://www.allapi.net/
    'E-Mail: KPDTeam@Allapi.net
    ' -> code by Raist Lin
    'Create a shell link on your desktop
    lngresult = fCreateShellLink("..\..\Desktop", "LINK", "C:\myfile.exe", "")
End Sub


Код: Выделить всё
'Source: MSDN column 'Ask Dr. GUI'
Private Declare Function fCreateShellLink Lib "vb6stkit.dll" (ByVal lpstrFolderName As String, ByVal lpstrLinkName As String, ByVal lpstrLinkPath As String, ByVal lpstrLinkArguments As String, ByVal fPrivate As Long, ByVal sParent As String) As Long
Private Sub Form_Load()
    Dim strGroupName As String, strLinkName As String
    Dim strLinkPath As String, strLinkArguments As String
    Dim fPrivate As Boolean, sParent As String
    Dim fSuccess As Boolean
    strLinkName = "Shortcut to Calculator"
    strLinkPath = "c:\Windows\calc.exe"
    strLinkArguments = ""
    fPrivate = True                              ' Add shortcut to desktop.
    strGroupName = "..\..\Desktop"
    sParent = "$(Programs)"
    fSuccess = fCreateShellLink(strGroupName & vbNullChar, strLinkName, strLinkPath, strLinkArguments & vbNullChar, fPrivate, sParent)
    'the path should never be enclosed in double quotes
    If fSuccess Then
        MsgBox "Created desktop shortcut"
    Else
        MsgBox "Unable to create desktop shortcut"
    End If
    ' Add shortcut to Programs menu.
    strGroupName = "$(Programs)"
    sParent = "$(Programs)"
    fSuccess = fCreateShellLink(strGroupName & vbNullChar, strLinkName, strLinkPath, strLinkArguments & vbNullChar, fPrivate, sParent)
    'the path should never be enclosed in double quotes
    If fSuccess Then
        MsgBox "Created shortcut on Programs menu"
    Else
        MsgBox "Unable to create shortcut on Programs menu"
    End If
    ' Add shortcut to Startup folder of Programs menu.
    strGroupName = "Startup"
    sParent = "$(Programs)"
    fSuccess = fCreateShellLink(strGroupName & vbNullChar, strLinkName, strLinkPath, strLinkArguments & vbNullChar, fPrivate, sParent)
    'the path should never be enclosed in double quotes
    If fSuccess Then
        MsgBox "Created shortcut in Startup folder"
    Else
        MsgBox "Unable to create shortcut in Startup folder"
    End If
End Sub
Изображение

jetcom
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 181
Зарегистрирован: 12.01.2003 (Вс) 23:15
Откуда: Russia, Novorossiysk

Сообщение jetcom » 16.10.2004 (Сб) 0:11

Спасибки, tyomitch!
Все просто...
А то я обыскался по критерию "shortcut" ни чего так и не нашел.
А "ОНО" вон как обзывается! :lol:
Всё сбудется!!!

cashman
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 152
Зарегистрирован: 03.06.2004 (Чт) 0:57
Откуда: Россия, г.Екатеринбург

Сообщение cashman » 16.10.2004 (Сб) 3:04

tyomitch, а у меня напротив какие-то глюки...
из первого кода придирается к "lngresult", вероятно ее нужно изначально как-то прописать?..
а во втором... создает только в "Пуск->Программы" (там появляется ярлык... а на Рабочем столе и в автозапуске НЕТ...

P.S У меня XP rus, возможно из-за этого путь найти не может (вместо Desktop - Рабочий стол), но изменение названия положительного результата не дало... В чем дело не знаешь?..

hCORe
VB - Экстремал
VB - Экстремал
Аватара пользователя
 
Сообщения: 2332
Зарегистрирован: 22.02.2003 (Сб) 15:21
Откуда: parent directory

Сообщение hCORe » 16.10.2004 (Сб) 10:18

Товарищи! Ну разве так можно?
Быстренько читаем статью и качаем пример к ней.
Моду создают модоки, а распространяют модозвоны.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 16.10.2004 (Сб) 12:37

cashman писал(а):tyomitch, а у меня напротив какие-то глюки...
из первого кода придирается к "lngresult", вероятно ее нужно изначально как-то прописать?..

Да:
Код: Выделить всё
Dim lngresult As Long


cashman писал(а):а во втором... создает только в "Пуск->Программы" (там появляется ярлык... а на Рабочем столе и в автозапуске НЕТ...
В чем дело не знаешь?..

Не знаю, пример не мой...
Изображение

jetcom
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 181
Зарегистрирован: 12.01.2003 (Вс) 23:15
Откуда: Russia, Novorossiysk

Сообщение jetcom » 16.10.2004 (Сб) 13:09

А у меня просит VB5STKIT.DLL...
И где ее брать?
Но я еще не читал вышеуказанную статью с примером, - иду читать!
Результат расскажу. :roll:
Всё сбудется!!!

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 16.10.2004 (Сб) 13:14

jetcom писал(а):А у меня просит VB5STKIT.DLL...
И где ее брать?
Вложения
vb5stkit.zip
(13.55 Кб) Скачиваний: 37
Изображение

#HammeR#
Новичок
Новичок
 
Сообщения: 49
Зарегистрирован: 01.01.2004 (Чт) 12:09
Откуда: г.Краснодар

Сообщение #HammeR# » 16.10.2004 (Сб) 18:06

Код: Выделить всё
Dim ws As Object
Set ws=CreateObject("WScript.Shell")
Set ws=ws.CreateShortCut(ws.SpecialFolders("Desktop"))
ws.TargetPath=app.path & "\" & app.exename & ".exe"
ws.Save
Set ws=Nothing


И никаких всяких vb5stkit

#HammeR#
Новичок
Новичок
 
Сообщения: 49
Зарегистрирован: 01.01.2004 (Чт) 12:09
Откуда: г.Краснодар

Сообщение #HammeR# » 16.10.2004 (Сб) 18:09

Ой! Я ошибся!
Вместо
Код: Выделить всё
SpecialFolders("desktop")
поставь
Код: Выделить всё
SpecialFolders("desktop") & ".lnk"

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 18.10.2004 (Пн) 8:27

И никаких всяких vb5stkit


Поддерживаю. Самый простой способ.
Ибо Win95 мы уже все одно не поддерживаем ;)

Ой! Я ошибся!


Вообще-то надо не только расширение, но и имя файла указывать.
Но это мелочи - желающий разберется, главное - принцип.
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

kif
Постоялец
Постоялец
 
Сообщения: 736
Зарегистрирован: 10.12.2001 (Пн) 18:06
Откуда: Украина, Одесса

Сообщение kif » 18.10.2004 (Пн) 11:40

для HammeR

Desktop - это объект или папка.

У меня не работает, может проблема в русской винде?
Братья и сестры, что вы делаете???
Ведь вы же братья и сестры.

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 18.10.2004 (Пн) 11:48

Desktop - это объект или папка


А нажать F1 и поискать по слову CreateShortcut?
Там ведь и пример есть - главное не лениться.
Спрашивать-то дольше выходит...

У меня не работает, может проблема в русской винде?


Нет. Не в русской. И не в винде.
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

kif
Постоялец
Постоялец
 
Сообщения: 736
Зарегистрирован: 10.12.2001 (Пн) 18:06
Откуда: Украина, Одесса

Сообщение kif » 18.10.2004 (Пн) 11:55

Keyword Not Found - это все что мне MSDN нашла
Братья и сестры, что вы делаете???
Ведь вы же братья и сестры.

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 18.10.2004 (Пн) 12:01

Keyword Not Found - это все что мне MSDN нашла


Значит что-то у тебя не установлено. Разберись, а то сам будешь мучиться и других зря дергать...

Вот кусок из рабочего кода:

Код: Выделить всё
Public Function CreateLnk(sLnkFile As String, sStartFile As String, g_sPrgFolder)
    Dim sExeFile As String
    Dim WshShell As Object, sDesktop As String, oShellLink As Object
   
    Set WshShell = CreateObject("WScript.Shell")
    sDesktop = WshShell.SpecialFolders("Desktop")

    sExeFile = g_sPrgFolder & sStartFile

    Set oShellLink = WshShell.CreateShortcut(sDesktop & "\" & sLnkFile)
    oShellLink.TargetPath = g_sSrvFolder & App.EXEName & ".exe"
    oShellLink.WindowStyle = 1
'    oShellLink.Hotkey = ""
    oShellLink.IconLocation = sExeFile & ", 0"
    oShellLink.Description = Left$(sLnkFile, Len(sLnkFile) - 4)
    oShellLink.WorkingDirectory = g_sSrvFolder
    oShellLink.Save
End Function
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

kif
Постоялец
Постоялец
 
Сообщения: 736
Зарегистрирован: 10.12.2001 (Пн) 18:06
Откуда: Украина, Одесса

Сообщение kif » 18.10.2004 (Пн) 12:07

Спасибо, еще один вопрос, кроме desktopа еще где-то можно создать (Startup, например)
Братья и сестры, что вы делаете???
Ведь вы же братья и сестры.

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 18.10.2004 (Пн) 14:29

Да где угодно
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

Sirik
Perspicaz
Perspicaz
Аватара пользователя
 
Сообщения: 2280
Зарегистрирован: 19.02.2004 (Чт) 16:09
Откуда: Бердичев, Украина

Сообщение Sirik » 18.10.2004 (Пн) 14:57

У меня есть свой пример (вернее мной скаченный):
Вложения
Создать ярлыки.zip
(2.34 Кб) Скачиваний: 47

#HammeR#
Новичок
Новичок
 
Сообщения: 49
Зарегистрирован: 01.01.2004 (Чт) 12:09
Откуда: г.Краснодар

Сообщение #HammeR# » 19.10.2004 (Вт) 7:32

Спасибо, что меня поправили. Я торопился! :oops:


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 68

    TopList  
cron