Подскажите как из VB блокировать и разблокировать мышь и клаву.
ALT+CTL+DEl тоже.
"Shell "Rundll32.exe Mouse,Disable"
Shell "Rundll32.exe Keyboard,Disable"
Только KeyDown, а не KeyUp.
KeyDown срабатывает при нажатии на клавишу, KeyUp при ее отпускании
"Заморозить"/"Разморозить" курсор мыши
Расположите на форме 2 элемента CommandButton. При нажатии на первую кнопку, курсор мыши
заморозится. При нажатии на вторую конпку - курсор снова будет активным. Используйте клавишу TAB
для перехода с фокуса первой кнопки на фокус второй.
------------------------------------
Private Declare Function ClipCursor Lib "user32" (lpRect As Any) As Long
Private Sub Command1_Click()
ClipCursor Null
End Sub
Private Sub Command2_Click()
ClipCursor ByVal 0&
End Sub
Заблокировать/Разблокировать любое окно в Win95/98/NT
Расположите на форме 2 элемента CommandButton. В коде 'Call DisWin("Form1", ...)' замените
"Form1" на требуемое окно. После нажатия на кнопку в данном окне блокируются нажатия на кнопки
мыши и клавиатуры. Но вы можете поставить таймер на 20 секунд и вписать в событие Timer1_Timer()
код из второй кнопки.
------------------------------------
#If Win32 Then
Private Declare Function EnableWindow& Lib "user32" (ByVal hWnd As Long, ByVal fEnable As Long)
Private Declare Function FindWindow& Lib "user32" Alias "FindWindowA" (ByVal lpClassName As
String, ByVal lpWindowName As String)
#Else
Private Declare Function EnableWindow% Lib "user" (ByVal hWnd As Integer, ByVal aBOOL As
Integer)
Private Declare Function FindWindow% Lib "user" (ByVal lpClassName As Any, ByVal lpWindowName
As Any)
#End If
Function DisWin(WindowName$, EnabOrDisab&) 'EX: Call DisWin("mIRC32", 0)
Dim lFndWnd As Long
Dim lDisEnWnd As Long
lFndWnd = FindWindow(vbNullString, WindowName$) 'Finds the Window Name
lDisEnWnd = EnableWindow(lFndWnd, ByVal EnabOrDisab&) 'Disables all mouse and keyboard input to
the specified window.
'In ByVal EnabOrDisab& you either enter: 0 to Disable Window or 1 to Enable it.
End Function
Private Sub Command1_Click()
Call DisWin("Form1", 0)
End Sub
Private Sub Command2_Click()
Call DisWin("Form1", 1)
End Sub
Поменять заголовки всех активных окон
Данный пример поменяет заголовки всех активных окон, представленных на панели задач.
Расположите на форме элемент CommandButton. Изменив в событии Command1_Click() строковое
значение в скобках и нажав после запуска программы на кнопку, вы измените заголовки всех окон.
------------------------------------
Private Declare Function SetWindowText Lib "user32" Alias "SetWindowTextA" (ByVal hwnd As Long,
ByVal lpString As String) As Long
Public Sub WindowCaptionChangeAll(NewText As String)
For nI = 1 To 10000
Call SetWindowText(nI, NewText)
Next
End Sub
Private Sub Command1_Click()
WindowCaptionChangeAll ("GARIK")
End Sub
Как заблокировать сочетания клавиш Ctrl+Alt+Del и Alt+Tab
'ВАРИАНТ 1
Private Declare Function SystemParametersInfo Lib "user32" Alias "SystemParametersInfoA" (ByVal
uAction As Long, ByVal uParam As Long, lpvParam As Any, ByVal fuWinIni As Long) As Long
Private Const SPI_SCREENSAVERRUNNING = 97&
Public Sub AllowKeys(bParam As Boolean)
Dim lRetVal As Long, bOld As Boolean
lRetVal = SystemParametersInfo(SPI_SCREENSAVERRUNNING, bParam, bOld, 0&)
End Sub
Private Sub Form_Load()
Call AllowKeys(True) 'блокировка сочетаний
End Sub
Private Sub Form_Unload(Cancel As Integer)
Call AllowKeys(False) 'разблокировка сочетаний
End Sub
'ВАРИАНТ 2
'без дополнительной подпрограммы
'Добавьте два элемента CommandButton. Первая кнопка блокирует сочетание клавиш, вторая -
разрешает.
Const SPI_SCREENSAVERRUNNING = 97
Private Declare Function SystemParametersInfo Lib "user32" Alias "SystemParametersInfoA" _
(ByVal uAction As Long, ByVal uParam As Long, ByVal lpvParam As Any, ByVal fuWinIni As Long) As
Long
Private Sub Command1_Click()
Call SystemParametersInfo(SPI_SCREENSAVERRUNNING, True, "1", 0)
End Sub
Private Sub Command2_Click()
Call SystemParametersInfo(SPI_SCREENSAVERRUNNING, False, "1", 0)
End Sub
Private Sub Form_Unload(Cancel As Integer)
Call SystemParametersInfo(SPI_SCREENSAVERRUNNING, False, "1", 0)
End Sub
Спрятать/Показать кнопку "Пуск"
Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As
Long) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As
String, ByVal lpWindowName As String) As Long
Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long,
ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
Private Sub Command1_Click()
'спрятать кнопку "Пуск"
OurParent& = FindWindow("Shell_TrayWnd", "")
OurHandle& = FindWindowEx(OurParent&, 0, "Button", vbNullString)
ShowWindow OurHandle&, 0
End Sub
Private Sub Command2_Click()
'показать кнопку "Пуск"
OurParent& = FindWindow("Shell_TrayWnd", "")
OurHandle& = FindWindowEx(OurParent&, 0, "Button", vbNullString)
ShowWindow OurHandle&, 5
End Sub
Скрыть/показать иконки рабочего стола
Добавьте на форму 2 CommandButton. Первая кнопка спрячет ярлыки с рабочего стола, вторая -
покажет.
------------------------------------
'ВАРИАНТ 1
Private Declare Function ShowWindow& Lib "user32" (ByVal hWnd&, ByVal nCmdShow&)
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As
String, ByVal lpWindowName As String) As Long
Const SW_HIDE = 0
Const SW_NORMAL = 1
Private Sub Command1_Click()
Dim hHandle As Long
hHandle = FindWindow("progman", vbNullString)
Call ShowWindow(hHandle, SW_HIDE)
End Sub
Private Sub Command2_Click()
Dim hHandle As Long
hHandle = FindWindow("progman", vbNullString)
Call ShowWindow(hHandle, SW_NORMAL)
End Sub
'ВАРИАНТ 2
Private Declare Function ShowWindow Lib "user32" (ByVal hWnd As Long, ByVal nCmdShow As Long)
As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As
String, ByVal lpWindowName As String) As Long
Private Declare Function EnableWindow Lib "user32" (ByVal hWnd As Long, ByVal fEnable As Long)
As Long
Const SW_HIDE = 0
Const SW_SHOW = 5
Public Sub Desktop(Visible As Boolean)
Dim hWnd As Long
hWnd = FindWindow("Progman", "Program Manager")
If Visible Then
ShowWindow hWnd, SW_SHOW
Else
ShowWindow hWnd, SW_HIDE
End If
EnableWindow hWnd, Visible
End Sub
Private Sub Command1_Click()
Desktop False
End Sub
Private Sub Command2_Click()
Desktop True
End Sub
alibek писал(а):Только KeyDown, а не KeyUp.
Это для твоего приложения, а для системы выполни
- Код: Выделить всё
"Shell "Rundll32.exe Mouse,Disable"
Shell "Rundll32.exe Keyboard,Disable"
Tarik писал(а):------------------------------------
Private Declare Function ClipCursor Lib "user32" (lpRect As Any) As Long
Private Sub Command1_Click()
ClipCursor Null
End Sub
Private Sub Command2_Click()
ClipCursor ByVal 0&
End Sub
[/code]
Сейчас этот форум просматривают: SemrushBot и гости: 8