Частые
вопросы и ответы на них
|
После выпуска
первого журнала, в адрес редактора посыпалось большое количество вопросов,
ответы получили почти все, кроме 3-ёх человек, ответов на их вопросы я попросту
не знал...Также я отвечал в форуме сайта VBNet.ru (там я обитаю под ником
Ян).
В основном вопросы были специфические, касающиеся конкретной программы, но
были и действительно частые вопросы, ответы на них я и опубликую в этом номере:
Вопросы:
2. Как отлавливать нажатия клавиатуры вне программы?
3. Как в программе вызвать окно e-mail, почтового клиента?
4. У меня вместо комментариев (в коде) отображается какая-то абракадбра. В чём дело?
8. Как программно открыть и закрыть лоток CD-Rom-a? И возможно ли это?
Ответы:
Как сделать чтобы textbox при вкл. Multiline, автоматом прокручивался вниз, чтобы показывалась последняя строчка?
Делается
это так:
Private Sub Text1_Change() '// Text1 - имя текстового
поля
Text1.SelStart = Len(Text1)
End Sub
Как отлавливать нажатия клавиатуры вне программы?
С помощью
API функции GetAsyncKeyState:
Объявления:
'//
Функция отлавливает нажатия клавиатуры вне программы
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey
As Long) As Integer
Const VK_ESCAPE = &H1B '// Константа кнопки Escape,
другие константы смотри в ApiViewer-e
Добавьте
на форму Часы (Timer1). Установите Interval = 40.
Отлавливаем нажатие кнопки Escape:
Private Sub Timer1_Timer()
If GetAsyncKeyState(VK_ESCAPE) Then
MsgBox "Ты нажал Escape!"
End If
End Sub
Как
в программе вызвать окно e-mail,
почтового клиента?
Объявления:
'// Функция для открытия файлов любого формата
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)
Const SW_SHOWNORMAL = 1 '// Константа задаёт состояние окна
Вызов окна e-mail:
Call ShellExecute(0&, "Open", "mailto:" + "E-Адрес" + "?Subject=" + "Тема" , "", "", SW_SHOWNORMAL)
У
меня вместо комментариев (в коде) отображается какая-то абракадабра. В чём
дело?
Нужно сделать следующее:
1. Откройте меню Tools|Options
2. Открылось окно настроек. Перейдите на вкладку "Editor Format"
3. Измените шрифт (Font) на тот, который поддерживает кириллицу (например,
Courier New CYR)
Видел пример TransparentTaskBar, а как можно сделать прозрачными другие окна? И как находить ID окон (прим. ред. имеется ввиду идентификатор окна)?
Прочитайте следующие статьи:
http://yansoft.by.ru/vb/info/windows1.htm
- Об окнах и манипуляторах
http://yansoft.by.ru/vb/info/transparent.htm
- О прозрачности окон
Прочитал статью "Пишем говорящую программу", но у меня никак не получается, чтобы программа проговаривала русский текст и поменять голосовой движок. Как мне это сделать?
Специально для вас я написал пример: http://yansoft.by.ru/vb/samples/speaker.zip
Вообщем так, есть ListBox, в каждой его строчке записано число. Как мне сосчитать сумму всех этих чисел?
Просто:
Dim i,
a
While List1.List(i) <> ""
a = a + CInt(List1.List(i))
i = i + 1
Wend
MsgBox a
Как программно открыть и закрыть лоток CD-Rom-a? И возможно ли это?
Возможно:
Объявления:
Private
Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA"
(ByVal lpstrCommand As String, _
ByVal lpstrReturnString As String, ByVal uReturnLength As Long, ByVal hwndCallback
As Long) As Long
'//
Открываем лоток CD-ROM
mciSendString "Set CDAudio Door Open Wait", 0&, 0&, 0&
'//
Закрываем лоток CD-ROM
mciSendString "Set CDAudio Door Closed Wait", 0&, 0&, 0&
На вопросы отвечал Хованский Ян (Web: http://yansoft.by.ru)