谁给代码 禁止 Alt+tab 我花红包 win10
vb吧
全部回复
仅看楼主
level 5
kk242.339 楼主
要求完全禁止 别人看我的秘密
2020年05月28日 05点05分 1
level 8
这种代码,网上铺天盖地,给你复制一个
#define _WIN32_WINNT 0x0500
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
HHOOK g_kb_hook = 0;
//底层键盘系统调用,过滤alt + tab和win键
LRESULT CALLBACK kb_proc(int code, WPARAM wParam, LPARAM lParam)
{
if (code == HC_ACTION)
{
PKBDLLHOOKSTRUCT p;
switch (wParam)
{
case WM_KEYDOWN:
case WM_SYSKEYDOWN:
case WM_KEYUP:
case WM_SYSKEYUP:
p = (PKBDLLHOOKSTRUCT)lParam;
if((p->vkCode==VK_TAB) && ((p->flags & LLKHF_ALTDOWN)!=0)
|| (p->vkCode== VK_LWIN) || (p->vkCode == VK_RWIN)) //left win or right win)
{
return 1;
}
break;
}
}
return ::CallNextHookEx( g_kb_hook, code, wParam, lParam );
};
int main(void)
{
g_kb_hook = SetWindowsHookEx(
WH_KEYBOARD_LL,
&kb_proc,
GetModuleHandle(NULL), // 不能为NULL,否则失败
0);
if (g_kb_hook == NULL)
{
return 0;
}
// 消息循环是必须的,想知道原因可以查msdn
MSG msg;
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
};
UnhookWindowsHookEx(g_kb_hook);
return 0;
};
2020年05月28日 05点05分 2
这是VB 你发安卓代码干嘛啊你
2020年05月28日 09点05分
@kk242.339 哪里看出来安卓的啊?
2020年05月28日 09点05分
@mijing2000 是C++代码
2020年05月28日 13点05分
level 7
在窗体上放两个按钮,Command1是禁止,Command2是取消
窗体代码:
Private Sub Command1_Click()
hhook = SetWindowsHookEx(WH_KEYBOARD_LL, AddressOf HookProc, App.hInstance, 0)
End Sub
Private Sub Command2_Click()
UnhookWindowsHookEx hhook
End Sub
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
ReleaseCapture
SendMessage hwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0&
End Sub
Private Sub Form_Unload(Cancel As Integer)
If hhook <> 0 Then UnhookWindowsHookEx (hhook)
End Sub
再新建一个模块:
Public Declare Function ReleaseCapture Lib "user32" () As Long
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Public 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
Public Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hhook As Long) As Long
Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
Public Declare Function CallNextHookEx Lib "user32" (ByVal hhook As Long, ByVal nCode As Long, ByVal wParam As Long, lParam As Any) As Long
Public Declare Function MessageBox Lib "user32" Alias "MessageBoxA" (ByVal hwnd As Long, ByVal lpText As String, ByVal lpCaption As String, ByVal wType As Long) As Long
Public Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer
Public Type KBDLLHOOKSTRUCT
vkCode As Long
scanCode As Long
flags As Long
time As Long
dwExtraInfo As Long
End Type
Public Const WH_KEYBOARD_LL = 13
Public Const HC_ACTION = 0
'————————————————————————————————
Public Const WM_SYSKEYDOWN = &H104
Public Const WM_SYSKEYUP = &H105
Public Const WM_KEYDOWN = &H100
Public Const WM_KEYUP = &H101
Public Const VK_ESCAPE = &H1B
Public Const VK_TAB = &H9
Public Const VK_CONTROL = &H11
Public Const VK_NUMPAD9 = &H69
Public Const VK_RWIN = &H5C
Public Const VK_LWIN = &H5B
'————————————————————————————————————
Public Const LLKHF_ALTDOWN = &H20
Public Const WM_NCLBUTTONDOWN = &HA1
Public Const HTCAPTION = 2
Public hhook As Long
Public KBStruct As KBDLLHOOKSTRUCT
Public Function HookProc(ByVal nCode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
If nCode = HC_ACTION Then
If wParam = WM_KEYDOWN Or wParam = WM_SYSKEYDOWN Or wParam = WM_SYSKEYUP Or wParam = WM_KEYUP Then
CopyMemory KBStruct, ByVal lParam, Len(KBStruct)
If KBStruct.vkCode = VK_LWIN Or KBStruct.vkCode = VK_RWIN Or KBStruct.vkCode = (VK_TAB And (KBStruct.flags Or LLKHF_ALTDOW) <> 0) Then
HookProc = 1
Exit Function
End If
End If
End If
HookProc = CallNextHookEx(hhook, nCode, wParam, ByVal lParam)
End Function
2020年11月07日 14点11分 4
这个会把两边的Win键也禁止掉,你要是不想,就去掉vkCode = VK_LWIN 和 VK_RWIN那句[呵呵]
2020年11月07日 14点11分
1