|
|
|
| Хочу разместить ярлык:
Set WshShortcut = WshShell.CreateShortcut("C:\Documents and Settings\ИмяЮзера\Рабочий стол\Ярлык.lnk")
но не знаю имени диска и имени юзера...
Возможно ли?
%SYSTEMDRIVE%\Documents and Settings\%SYSTEMROOT%\Рабочий стол .... ниработаит... | |
|
| |
|
|
|
| определят имя компа. Взял с этого форума
Private Declare Function GetComputerNameA Lib "kernel32" _
(ByVal lpBuffer As String, nSize As Long) As Long
Private Declare Function WNetGetUserA Lib "mpr.dll" _
(ByVal lpName As String, ByVal lpUserName As String, lpnLength As Long) As Long
Function GetComputerName() As String
Dim sBuffer As String * 255
If GetComputerNameA(sBuffer, 255&) <> 0 Then
GetComputerName = Left$(sBuffer, InStr(sBuffer, vbNullChar) - 1)
End If
End Function
Function GetUserName() As String
Dim sUserNameBuff As String * 255
sUserNameBuff = Space(255)
Call WNetGetUserA(vbNullString, sUserNameBuff, 255&)
GetUserName = Left$(sUserNameBuff, InStr(sUserNameBuff, vbNullChar) - 1)
End Function | |
|
| |
|
|
|
| Спасибо!
Имя юзера разрулил:
Set WshShortcut = WshShell.CreateShortcut("C:\Documents and Settings\" & fOSUserName() & "\Рабочий стол\Ярлык.lnk")
Вот еще научится бы букву диска системного узнавать... | |
|
| |
|
|
|
| Все нашел, разобрался, сделал
Вот - может кому сгодится:
'создание ярлыка приложения
Private Declare Function apiGetUserName Lib "advapi32.dll" Alias _
"GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long
'узнаем букву системного диска (где живет системная БД)
Public Function GetSysDisk() As String
Dim SysDbPath As String
SysDbPath = Access.SysCmd(acSysCmdGetWorkgroupFile)
GetSysDisk = Mid(SysDbPath, 1, 1)
End Function
'узнаем имя юзера
Function fOSUserName() As String
Dim lngLen As Long, lngX As Long
Dim strUserName As String
strUserName = String$(254, 0)
lngLen = 255
lngX = apiGetUserName(strUserName, lngLen)
If lngX <> 0 Then
fOSUserName = Left$(strUserName, lngLen - 1)
Else
fOSUserName = ""
End If
End Function
'узнаем путь к каталогу приложения
Public Function CurrentPath() As String
Dim strName As String
strName = CurrentDb.Name
CurrentPath = Left(strName, Len(strName) - Len(Dir(strName)) - 1)
End Function
'создаем ярлык
Function StartLink()
Set WshShell = CreateObject("WScript.Shell")
'размещение ярлыка
Set WshShortcut = WshShell.CreateShortcut(GetSysDisk() & ":\Documents and Settings\" & fOSUserName() & "\Рабочий стол\ИмяПриложения.lnk")
'иконка ярлыка
WshShortcut.IconLocation = "shell32.dll, 5"
'рабочая папка
WshShortcut.WorkingDirectory = CurrentPath()
'объект (путь запуска)
WshShortcut.TargetPath = CurrentPath() & "\ИмяПриложения.mdb"
'быстрый вызов
WshShortcut.HotKey = "CTRL+ALT+F"
'аргумент (для быстрого вызова)
'WshShortcut.Arguments = CurrentPath() & "\ИмяПриложения.mdb"
'коментарий
WshShortcut.Description = "Мое приложение"
'не понял, что такое
'WshShortcut.WindowStyle = 1
WshShortcut.Save
MsgBox "Размещение ярлыка: " & GetSysDisk() & ":\Documents and Settings\" & fOSUserName() & "\Рабочий стол\ИмяПриложения.lnk"
End Function
|
| |
|
| |
|
|
|
| К автору: А на какой стадии создается ярлык? Просто я решил эту проблему созданием дистрибутива где на юзерском компе все куда нужно устанавливается и где нужно все прописывается... | |
|
| |
|
|
|
| Про инсталяторы знаю - пробовал. Удобно, когда нужно действительно много прописывать и устанавливать. У меня же база - один mdb файл, который таскается по разным компам. Хотелось просто и быстро автоматизировать создание ярлыка для быстрого запуска. Куда вставишь функцию StartLink() - на той стадии и будет создаваться... | |
|
| |
|
|
|
| тоже верно, у меня все больше появляется рисунков и даже ддлок, поэтому думаю без NSI не обойтись =) | |
|
| |
|
|
|
| Тогда да. Я вот этим пользовался: http://file.qip.ru/file/123679839/cfc67073/CreateInstall_Free_v4145.html
Достаточно много возможностей, несмотря на бесплатность. | |
|
| |