Обработка событий

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

7Blades
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 3
Зарегистрирован: 10.07.2004 (Сб) 15:22
Откуда: Самый край Земли

Обработка событий

Сообщение 7Blades » 10.07.2004 (Сб) 15:33

Всем привет!
Если кто может - помогите, ПЖЛ.
Имеется проект. Обычная простенькая формочка с менюшкой. В меню имеется меню (простите за тавтологию) "СПРАВКА", в нем подменю "СПРАВКА" и "О ПРОГРАММЕ".
Вопрос: Какой код можно использовать для обработки события при нажатии на подменю "СПРАВКА"? После нажатия должно происходить следующее - должен выводиться chm-файл справки (файлик сделан собственными руками).
Что нужно написать? Сам файл добавить в проект или добавить в Setup-проект, который делается вместе с этим? И как быть потом?
Никак не могу сделать. Пробовал писать код с ссылкой на файл, но выдает ошибку. Там надо только тогда точный путь прописывать. А если юзер при установке будет ставить программу в другую директорию? Тогда абсолютная ссылка не сработает.
Файл справки устанавливается в ту же папку, что и сам exe-файл программы.
Если кто может - посоветуйте.
Спасибо!
Мы часто ходим как по лезвию ножа,
Не без изъян, увы, дорога к счастью.
Непредсказуема она и так сложна,
Но время есть... и все ведь в нашей власти.

Tarik
Агент Системы
Агент Системы
Аватара пользователя
 
Сообщения: 1222
Зарегистрирован: 03.01.2003 (Пт) 16:05
Откуда: Москва

Сообщение Tarik » 10.07.2004 (Сб) 21:31

Так, наверное...
Код: Выделить всё
shell app.path & "\help.chm", vbnormalfocus
Изображение

Ever tried? Ever failed? No matter. Try again! Fail again! Fail better!

GM
programador
programador
 
Сообщения: 1427
Зарегистрирован: 24.06.2003 (Вт) 15:56
Откуда: 194.67.52.100

Сообщение GM » 11.07.2004 (Вс) 1:52

Tarik писал(а):Так, наверное...
Код: Выделить всё
shell app.path & "\help.chm", vbnormalfocus


Нет shell разве что ошибку выдаст.
Скорее так.
Код: Выделить всё
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Const SW_SHOWNORMAL = 1
Private Sub Form_Load()
    ShellExecute Me.hwnd, vbNullString,app.path & "\help.chm" , vbNullString, app.path, SW_SHOWNORMAL
End Sub
[/code]
الفيجوال بيسك الرابح

7Blades
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 3
Зарегистрирован: 10.07.2004 (Сб) 15:22
Откуда: Самый край Земли

Сообщение 7Blades » 11.07.2004 (Вс) 8:29

GM писал(а):Скорее так.
Код: Выделить всё
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Const SW_SHOWNORMAL = 1
Private Sub Form_Load()
    ShellExecute Me.hwnd, vbNullString,app.path & "\help.chm" , vbNullString, app.path, SW_SHOWNORMAL
End Sub


Это обработка события при нажатии на подменю СПРАВКА?
Как я понял, сначала объявляем функцию в коде вообще, а потом на загрузку формы пишем вызов, но если я правильно понял - это не совсем то, что мне нужно. Мне нужен код обработки события при нажатии на подменю СПРАВКА.
Потом, Me.hwnd - выдает ошибку, не тот тип; app.path - говорит, что переменная не объявлена...
Последний раз редактировалось 7Blades 11.07.2004 (Вс) 11:58, всего редактировалось 1 раз.
Мы часто ходим как по лезвию ножа,
Не без изъян, увы, дорога к счастью.
Непредсказуема она и так сложна,
Но время есть... и все ведь в нашей власти.

GM
programador
programador
 
Сообщения: 1427
Зарегистрирован: 24.06.2003 (Вт) 15:56
Откуда: 194.67.52.100

Сообщение GM » 11.07.2004 (Вс) 8:48

Странно :o
Только что проверил все работает :?: :?:
الفيجوال بيسك الرابح

7Blades
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 3
Зарегистрирован: 10.07.2004 (Сб) 15:22
Откуда: Самый край Земли

Сообщение 7Blades » 11.07.2004 (Вс) 12:04

GM писал(а):Странно :o
Только что проверил все работает :?: :?:


Каков тогда полный код? Что куда писать?
Меню СПРАВКА сделано вручную, это не обычное "виндовое" меню (это для ясности, может что не так поняли).
Просто я код не могу понять в таком случае.
Мы часто ходим как по лезвию ножа,
Не без изъян, увы, дорога к счастью.
Непредсказуема она и так сложна,
Но время есть... и все ведь в нашей власти.

Tarik
Агент Системы
Агент Системы
Аватара пользователя
 
Сообщения: 1222
Зарегистрирован: 03.01.2003 (Пт) 16:05
Откуда: Москва

Сообщение Tarik » 11.07.2004 (Вс) 13:04

Это надо писать в General:
Код: Выделить всё
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Const SW_SHOWNORMAL = 1

А это - в нужную процедуру:
Код: Выделить всё
ShellExecute Me.hwnd, vbNullString,app.path & "\help.chm" , vbNullString, app.path, SW_SHOWNORMAL
Изображение

Ever tried? Ever failed? No matter. Try again! Fail again! Fail better!

Tarik
Агент Системы
Агент Системы
Аватара пользователя
 
Сообщения: 1222
Зарегистрирован: 03.01.2003 (Пт) 16:05
Откуда: Москва

Сообщение Tarik » 11.07.2004 (Вс) 14:12

Блииин... Только щас заметил, что это форум по .NET! А я тут со своим app.path :oops: Вот до чего доводит линк "Найти сообщения с Вашего последнего посещения"...
Изображение

Ever tried? Ever failed? No matter. Try again! Fail again! Fail better!

corgi
ToyMan
ToyMan
 
Сообщения: 1367
Зарегистрирован: 01.10.2002 (Вт) 9:59
Откуда: Россия, Москва

Сообщение corgi » 11.07.2004 (Вс) 21:20

каталог из которого выполняется программа можно определить так:
System.Reflection.Assembly.GetExecutingAssembly.Location()
а app.path теперь нету :cry: :cry:
Ничто так не ограничивает полёт мысли программиста, как компилятор

GM
programador
programador
 
Сообщения: 1427
Зарегистрирован: 24.06.2003 (Вт) 15:56
Откуда: 194.67.52.100

Сообщение GM » 12.07.2004 (Пн) 0:13

Tarik писал(а):Блииин... Только щас заметил, что это форум по .NET! А я тут со своим app.path :oops: Вот до чего доводит линк "Найти сообщения с Вашего последнего посещения"...

Да и я тоже :oops:
الفيجوال بيسك الرابح

Грандж
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 150
Зарегистрирован: 29.10.2002 (Вт) 14:10
Откуда: Москва

Сообщение Грандж » 12.07.2004 (Пн) 20:11

я получал имя каталога так:
IO.Path.GetDirectoryName(Application.ExecutablePath) & "имя_файла.bla"
и между ног затеплилась надежда
(%

http://grunger.net.ru


Вернуться в Visual Basic .NET

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 13

    TopList