Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Системный диск и рабочий стол текущей учетки
 
 автор: Alex   (23.03.2010 в 16:16)   личное сообщение
 
 

Хочу разместить ярлык:
Set WshShortcut = WshShell.CreateShortcut("C:\Documents and Settings\ИмяЮзера\Рабочий стол\Ярлык.lnk")
но не знаю имени диска и имени юзера...
Возможно ли?
%SYSTEMDRIVE%\Documents and Settings\%SYSTEMROOT%\Рабочий стол .... ниработаит...

  Ответить  
 
 автор: Мишок   (23.03.2010 в 16:57)   личное сообщение
 
 

определят имя компа. Взял с этого форума
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

  Ответить  
 
 автор: Alex   (23.03.2010 в 17:15)   личное сообщение
 
 

Спасибо!
Имя юзера разрулил:
Set WshShortcut = WshShell.CreateShortcut("C:\Documents and Settings\" & fOSUserName() & "\Рабочий стол\Ярлык.lnk")
Вот еще научится бы букву диска системного узнавать...

  Ответить  
 
 автор: Alex   (23.03.2010 в 22:02)   личное сообщение
 
 

Все нашел, разобрался, сделал
Вот - может кому сгодится:

'создание ярлыка приложения

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

  Ответить  
 
 автор: АлаяЗаря   (24.03.2010 в 01:27)   личное сообщение
 
 

К автору: А на какой стадии создается ярлык? Просто я решил эту проблему созданием дистрибутива где на юзерском компе все куда нужно устанавливается и где нужно все прописывается...

  Ответить  
 
 автор: Alex   (24.03.2010 в 09:25)   личное сообщение
 
 

Про инсталяторы знаю - пробовал. Удобно, когда нужно действительно много прописывать и устанавливать. У меня же база - один mdb файл, который таскается по разным компам. Хотелось просто и быстро автоматизировать создание ярлыка для быстрого запуска. Куда вставишь функцию StartLink() - на той стадии и будет создаваться...

  Ответить  
 
 автор: АлаяЗаря   (24.03.2010 в 09:53)   личное сообщение
 
 

тоже верно, у меня все больше появляется рисунков и даже ддлок, поэтому думаю без NSI не обойтись =)

  Ответить  
 
 автор: Alex   (24.03.2010 в 10:22)   личное сообщение
 
 

Тогда да. Я вот этим пользовался: http://file.qip.ru/file/123679839/cfc67073/CreateInstall_Free_v4145.html
Достаточно много возможностей, несмотря на бесплатность.

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList