Закрытие неактивного окна по горячей клавише!

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
TiG
Постоялец
Постоялец
 
Сообщения: 327
Зарегистрирован: 12.05.2003 (Пн) 12:34
Откуда: Ростов-на-Дону

Закрытие неактивного окна по горячей клавише!

Сообщение TiG » 25.05.2004 (Вт) 10:33

У меня есть моя прога и мне нужно, чтобы она закрывалась горячей кнопкой Q даже если она неактивна, но работает.
Помогите пожалуйста, желательно код.
Все мои игрушки мама разметало ураганом...

TiG
Постоялец
Постоялец
 
Сообщения: 327
Зарегистрирован: 12.05.2003 (Пн) 12:34
Откуда: Ростов-на-Дону

Сообщение TiG » 25.05.2004 (Вт) 10:34

В смысле программа неактивна, но работает)))
Все мои игрушки мама разметало ураганом...

A.A.Z.
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3035
Зарегистрирован: 30.06.2003 (Пн) 13:38

Сообщение A.A.Z. » 25.05.2004 (Вт) 10:51

Можно через хук:
В модуль:
Код: Выделить всё
Public Const WH_KEYBOARD = 2

Declare Function CallNextHookEx Lib "user32" (ByVal hHook As Long, ByVal ncode As Long, ByVal wParam As Long, lParam As Any) As Long
Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer
Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" (ByVal idHook As Long, ByVal lpfn As Long, ByVal hmod As Long, ByVal dwThreadId As Long) As Long
Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As Long) As Long

Public hHook As Long

Public Function KeyboardProc(ByVal idHook As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
If idHook < 0 Then
   KeyboardProc = CallNextHookEx(hHook, idHook, wParam, ByVal lParam)
Else
   If wParam = Asc("Q") Then End
   KeyboardProc = CallNextHookEx(hHook, idHook, wParam, ByVal lParam)
End If
End Function

В форму:
Код: Выделить всё
Private Sub Form_Load()
hHook = SetWindowsHookEx(WH_KEYBOARD, AddressOf KeyboardProc, App.hInstance, App.ThreadID)
End Sub

Private Sub Form_Unload(Cancel As Integer)
UnhookWindowsHookEx hHook
End Sub
Только не запускай код в VB - он тоже закроется :!:

Также можно по таймеру отслеживать:
добавь таймер на форму
Код: Выделить всё
Private Declare Function GetAsyncKeyState Lib "user32" Alias "GetAsyncKeyState" (ByVal vKey As Long) As Integer

Sub Form_Load()
Timer1.Interval = 1
End Sub

Sub Timer1_Timer()
Select Case GetAsyncKeyState(Asc("Q"))
Case -32767
End
End Select
End Sub
Нет меня больше

TiG
Постоялец
Постоялец
 
Сообщения: 327
Зарегистрирован: 12.05.2003 (Пн) 12:34
Откуда: Ростов-на-Дону

Сообщение TiG » 25.05.2004 (Вт) 12:21

Большое спасибо, все получилось)))
Все мои игрушки мама разметало ураганом...


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

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

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

    TopList  
cron