Запустить ярлык на соединение с интернетом

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Jurist
Начинающий
Начинающий
 
Сообщения: 19
Зарегистрирован: 30.08.2006 (Ср) 16:48
Откуда: Санкт- Петербург

Запустить ярлык на соединение с интернетом

Сообщение Jurist » 23.02.2007 (Пт) 19:04

Народ, подскажите, как запустить ярлык на соединение с интернетом?

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 23.02.2007 (Пт) 20:58

RasDial?
Изображение

Jurist
Начинающий
Начинающий
 
Сообщения: 19
Зарегистрирован: 30.08.2006 (Ср) 16:48
Откуда: Санкт- Петербург

Сообщение Jurist » 24.02.2007 (Сб) 15:39

keks-n писал(а):RasDial?

Нет. Хотелось бы запустить именно файл с расширением *.lnk

Cytron
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 266
Зарегистрирован: 15.02.2007 (Чт) 21:09

Сообщение Cytron » 24.02.2007 (Сб) 19:48

открытие эксплорером не работает (shell "explorer.exe file.lnk")?

Jurist
Начинающий
Начинающий
 
Сообщения: 19
Зарегистрирован: 30.08.2006 (Ср) 16:48
Откуда: Санкт- Петербург

Сообщение Jurist » 25.02.2007 (Вс) 17:56

Cytron писал(а):открытие эксплорером не работает (shell "explorer.exe file.lnk")?

Не работает, даже если вместо homelink.lnk прописать другой файл.
Код: Выделить всё
Dim FileName As String
FileName = "C:\WINDOWS\explorer.exe C:\homelink.lnk"
X = Shell("rundll32.exe url.dll,FileProtocolHandler" & " " & FileName, vbNormalFocus)

Может быть где- то ошибка?
Последний раз редактировалось Jurist 25.02.2007 (Вс) 19:06, всего редактировалось 1 раз.

Jurist
Начинающий
Начинающий
 
Сообщения: 19
Зарегистрирован: 30.08.2006 (Ср) 16:48
Откуда: Санкт- Петербург

Сообщение Jurist » 25.02.2007 (Вс) 21:49

Тоже не работает

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 26.02.2007 (Пн) 9:30

Да? А как ты его применял?
Lasciate ogni speranza, voi ch'entrate.

Jurist
Начинающий
Начинающий
 
Сообщения: 19
Зарегистрирован: 30.08.2006 (Ср) 16:48
Откуда: Санкт- Петербург

Сообщение Jurist » 26.02.2007 (Пн) 20:23

alibek писал(а):Да? А как ты его применял?

Вот так:
Код: Выделить всё

Private Type SHELLEXECUTEINFO
    cbSize As Long
    fMask As Long
    hwnd As Long
    lpVerb As String
    lpFile As String
    lpParameters As String
    lpDirectory As String
    nShow As Long
    hInstApp As Long
    lpIDList As Long
    lpClass As String
    hkeyClass As Long
    dwHotKey As Long
    hIcon As Long
    hProcess As Long
End Type
Private Declare Function ShellExecuteEx Lib "shell32.dll" (SEI As SHELLEXECUTEINFO) As Long

Private Sub Form_Load()
    Dim SEI As SHELLEXECUTEINFO
    Dim X As Long
    Dim FilePath As String
    FilePath = "C:\homelink.lnk" 'Иконка
    With SEI
        .cbSize = Len(SEI)
        .lpFile = FilePath
    End With
X = ShellExecuteEx(SEI)
End Sub

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 27.02.2007 (Вт) 9:43

Зацени мембер fMask и флаг SEE_MASK_CLASSKEY (скорее всего).
Lasciate ogni speranza, voi ch'entrate.

Jurist
Начинающий
Начинающий
 
Сообщения: 19
Зарегистрирован: 30.08.2006 (Ср) 16:48
Откуда: Санкт- Петербург

Сообщение Jurist » 27.02.2007 (Вт) 12:44

alibek писал(а):Зацени мембер fMask и флаг SEE_MASK_CLASSKEY (скорее всего).

Это как?

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 27.02.2007 (Вт) 14:40

Jurist писал(а):
alibek писал(а):Зацени мембер fMask и флаг SEE_MASK_CLASSKEY (скорее всего).

Это как?


это что непонятно? Установить значение флага SEE_MASK_CLASSKEY мемберу fMask. Кстати, чему равен X? если это 0, то стоит заценить значение ошибки (Err.LastDllError).
Весь мир матрица, а мы в нем потоки байтов!

Jurist
Начинающий
Начинающий
 
Сообщения: 19
Зарегистрирован: 30.08.2006 (Ср) 16:48
Откуда: Санкт- Петербург

Сообщение Jurist » 27.02.2007 (Вт) 17:35

Так что- ли?
Код: Выделить всё

Private Const SEE_MASK_CLASSKEY = &H3
Private Type SHELLEXECUTEINFO
    cbSize As Long
    fMask As Long
    hwnd As Long
    lpVerb As String
    lpFile As String
    lpParameters As String
    lpDirectory As String
    nShow As Long
    hInstApp As Long
    lpIDList As Long
    lpClass As String
    hkeyClass As Long
    dwHotKey As Long
    hIcon As Long
    hProcess As Long
End Type
Private Declare Function ShellExecuteEx Lib "shell32.dll" (SEI As SHELLEXECUTEINFO) As Long

Private Sub Form_Load()
    Dim SEI As SHELLEXECUTEINFO
    Dim X As Long
    Dim FilePath As String
    FilePath = "C:\homelink.lnk" 'Иконка
    With SEI
        .cbSize = Len(SEI)
        .lpFile = FilePath
        .fMask = SEE_MASK_CLASSNAME
    End With
X = ShellExecuteEx(SEI)
End Sub

Тоже не работает...

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 28.02.2007 (Ср) 7:49

Код ошибки какой?
Весь мир матрица, а мы в нем потоки байтов!

Jurist
Начинающий
Начинающий
 
Сообщения: 19
Зарегистрирован: 30.08.2006 (Ср) 16:48
Откуда: Санкт- Петербург

Сообщение Jurist » 28.02.2007 (Ср) 22:35

!Viper! писал(а):Код ошибки какой?

X = 1

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 01.03.2007 (Чт) 8:00

из чего можно сделать вывод, что таки работает.
Весь мир матрица, а мы в нем потоки байтов!

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 01.03.2007 (Чт) 8:37

Надо не на возвращаемое значение смотреть, а на hInstApp. Или еще лучше - Err.LastDllError.
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 01.03.2007 (Чт) 10:15

Если у него возвращаемое значение не 0, то функция отработала правильно, вопрос только в том, что есть правильно. Смотреть при этом на Err.LastDLLError нет смысла.
Весь мир матрица, а мы в нем потоки байтов!

Jurist
Начинающий
Начинающий
 
Сообщения: 19
Зарегистрирован: 30.08.2006 (Ср) 16:48
Откуда: Санкт- Петербург

Сообщение Jurist » 01.03.2007 (Чт) 18:01

!Viper! писал(а):из чего можно сделать вывод, что таки работает.

Тогда почему не видно результатов? Окно состояния подключения не открывается, значит не работает.

EUGY
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 214
Зарегистрирован: 09.11.2006 (Чт) 22:51
Откуда: Мурманск

Сообщение EUGY » 01.03.2007 (Чт) 18:41


Private Const SEE_MASK_CLASSKEY = &H3 ' !!!!!
...........
With SEI
.cbSize = Len(SEI)
.lpFile = FilePath
.fMask = SEE_MASK_CLASSNAME ' !!!!!

End With
............




Option Explicit !!!?

Jurist
Начинающий
Начинающий
 
Сообщения: 19
Зарегистрирован: 30.08.2006 (Ср) 16:48
Откуда: Санкт- Петербург

Сообщение Jurist » 01.03.2007 (Чт) 21:51

Тупую ошибку исправил(спасибо EUGY). Тепеть вылетает сообщение "Приложение, выполняющее эту операцию, указанному файлу не сопоставлено. Произведите сопоставление с помощью панели управления "Свойства папки".".
Нашол в инете похожий пример, выводящий окно свойств любого файла. Он работает и для ярлыка. Может быть в нём можно что- нибудь переделать чтобы открывать ярлык?
Вложения
properties.zip
(2.13 Кб) Скачиваний: 36

EUGY
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 214
Зарегистрирован: 09.11.2006 (Чт) 22:51
Откуда: Мурманск

Сообщение EUGY » 02.03.2007 (Пт) 0:53

попробуй вот так, но может я ошибаюсь


Dim SEI As SHELLEXECUTEINFO
Dim FilePath As String
FilePath = "C:\homelink" ' not .lnk
With SEI
.nShow = 5 ' SW_SHOW
.cbSize = Len(SEI)
.lpFile = FilePath
.fMask = 0
End With
ShellExecuteEx(SEI)

Cytron
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 266
Зарегистрирован: 15.02.2007 (Чт) 21:09

Сообщение Cytron » 02.03.2007 (Пт) 16:31

НАШОЛ ЛЕГКИЙ СПОСОБ!!! :D
нужно создать CMD файл или BAT файл и в нем прописать
C:\HomeLink.lnk
и запустить на выполнение с vbHide с помощью shell :D
примечание:
работает если подключение на которое ссылается ярлык неактивно! :wink:


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

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

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

    TopList  
cron