Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - ASP и VBScript

Страница: 1 |

 

  Вопрос: TargetPath = иногда обрезается до 8 символов. Why? Добавлено: 17.02.07 12:17  

Автор вопроса:  AE1
Создаю следующим скриптом ярлык на рабочем столе:

Set WshShell = CreateObject("WScript.Shell")
set objFSO = CreateObject("Scripting.FileSystemObject")

strDesktop = WshShell.SpecialFolders("Desktop")

IF Not objFSO.FileExists(strDesktop & "\Ярлычок1.lnk") THEN
set oShellLink = WshShell.CreateShortcut(strDesktop & "\Ярлычок1.lnk")
oShellLink.TargetPath = "X:\Прекрасная папка\Какбыдляяфайлика\файлик1.doc"
oShellLink.IconLocation = "X:\Прекрасная папка\Какбыдляяфайлика\файлик1.ico"
oShellLink.WindowStyle = 1
oShellLink.Save
set oShellLink = NOTHING
END IF

...

IF Not objFSO.FileExists(strDesktop & "\Ярлычок5.lnk") THEN
set oShellLink = WshShell.CreateShortcut(strDesktop & "\Ярлычок5.lnk")
oShellLink.TargetPath = "X:\Прекрасная папка\Какбыдляяфайлика\файлик5.doc"
oShellLink.IconLocation = "X:\Прекрасная папка\Какбыдляяфайлика\файлик5.ico"
oShellLink.WindowStyle = 1
oShellLink.Save
set oShellLink = NOTHING
END IF

Set WshShell = NOTHING
Set objFSO = NOTHING


Скрипт работает, но в 1 из 10 случаев TargetPath прописывается как:
"X:\Прекрасн\Какбыдля\файлик1.doc"

Притом IconLocation в 10 из 10 случаев прописывается нормально, т.е.:
"X:\Прекрасная папка\Какбыдляяфайлика\файлик1.ico"

Т.е. названия папок обрезаются до 8 символов.

Пробовал указывать их вот так:

oShellLink.TargetPath = """X:\Прекрасная папка\Какбыдляяфайлика\файлик.doc"""

Ничего не меняется.
В чем проблема и из-за чего это бывает?

Ответить

  Ответы Всего ответов: 5  

Номер ответа: 1
Автор ответа:
 Programmer



Вопросов: 71
Ответов: 246
 Профиль | | #1 Добавлено: 20.03.07 18:48
Используй такой код:
Link.TargetPath = WSH.ExpandEnvironmentStrings("X:\Прекрасная папка\Какбыдляяфайлика\файлик1.doc";)
oShellLink.IconLocation = WSH.ExpandEnvironmentStrings("X:\Прекрасная папка\Какбыдляяфайлика\файлик1.ico";)

Ответить

Номер ответа: 2
Автор ответа:
 AE1



Вопросов: 1
Ответов: 2
 Профиль | | #2 Добавлено: 20.03.07 19:55
Ругается на строку Link.TargetPath...
Object doesn't support this property or method: 'WSH.ExpandEnvirenmentStrings'

Как я понял, изначально проблема с обрезанием адреса состоит в том, что при недоступности диска (например если диск мапится пользователем, а ярлыки создаются системой) и винда не может уточнить поддерживает ли диск длинные имена - то по умолчанию обрезает путь до 8 символов.

Ответить

Номер ответа: 3
Автор ответа:
 Programmer



Вопросов: 71
Ответов: 246
 Профиль | | #3 Добавлено: 20.03.07 21:54
Перепутал имена обьектов, вот:

oShellLink.TargetPath = WSHShell.ExpandEnvironmentStrings("X:\Прекрасная папка\Какбыдляяфайлика\файлик1.doc";)
oShellLink.IconLocation = WSHShell.ExpandEnvironmentStrings("X:\Прекрасная папка\Какбыдляяфайлика\файлик1.ico";)

Ответить

Номер ответа: 4
Автор ответа:
 AE1



Вопросов: 1
Ответов: 2
 Профиль | | #4 Добавлено: 20.03.07 22:06
Работает, но точно так же обрезает имена до 8 символов.
Попробуйте создать таким скриптом ярлык, при условии что диск X:\ в системе не замаплен...

Ответить

Номер ответа: 5
Автор ответа:
 alroy



Вопросов: 3
Ответов: 28
 Профиль | | #5 Добавлено: 23.03.07 12:59
вот кому интересно то смотрите !!!!!

L_Welcome_MsgBox_Message_Text = _
 "Этот скрипт создаст ярлык к программе Такойто и поместит его на рабочий стол"
 L_Welcome_MsgBox_Title_Text = "Для Ольги"

 Call Welcome()
 
  ' Создаем ярлык
 
 ;Dim WSHShell
 Set WSHShell = WScript.CreateObject("WScript.Shell";)
 
 ;Dim MyShortcut, MyDesktop, StartupPath
 
 ' Узнаем путь к специальной папке
 StartupPath = WSHShell.SpecialFolders("AllUsersDesktop";)
 
 
 Set MyShortcut = WSHShell.CreateShortcut(StartupPath & _
 "\как тебе нравиться.lnk";)
 
 ' Устанавливаем свойства для ярлыка
 MyShortcut.TargetPath = "C:\katobnov.exe"
 MyShortcut.WorkingDirectory = "C:\"
 MyShortcut.WindowStyle = 1
 MyShortcut.IconLocation = "shell32.dll, 147"
 MyShortcut.Save
 
 WScript.Echo "Ярлык к программе такойто создан и помещен на рабочий стол"
 
 Sub Welcome()
     ;Dim intDoIt
 
     intDoIt = MsgBox(L_Welcome_MsgBox_Message_Text, _
                       vbOKCancel + vbInformation, _
                       L_Welcome_MsgBox_Title_Text )
     If intDoIt = vbCancel Then
     WScript.Quit
     End If
 End Sub

Set WSHShell = Nothing

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам