我想在某人使用时捕获CtrlC即使关闭焦点。即时通讯使用Visual Basic 2010.Vb.net捕获Ctrl + C
0
A
回答
1
好了,所以我对你有一个解决方案,我验证了的作品。尽管你需要一个C#库,并且需要一些额外的工作,但不是太多。创建一个C#类库并添加一个名为'MyHooks'的类,并添加对System.Windows.Forms.dll和我链接到的库的引用。您的主程序将使用此将引用此C#库和System.Windows.Forms。
namespace HookManager.Interface {
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Gma.UserActivityMonitor;
using System.Windows.Forms;
public static class MyHooks {
public static void HookControlC(KeyEventHandler keyDown, KeyEventHandler keyUp) {
HookManager.KeyDown += keyDown;
HookManager.KeyUp += keyUp;
}
}
}
现在在你的程序可以这样做:
Imports hookmanager.interface
Imports System.Windows.Forms
Module Module1
Sub Main()
MyHooks.HookControlC(AddressOf ControlC_KeyDown, AddressOf ControlC_KeyUp)
While True
Application.DoEvents()
End While
End Sub
Private m_ControlKeyPressed As Boolean = False
Private Sub ControlC_KeyDown(ByVal sender As Object, ByVal e As KeyEventArgs)
If e.KeyValue = 162 OrElse e.KeyValue = 163 Then
m_ControlKeyPressed = True
End If
If m_ControlKeyPressed Then
If e.KeyCode = Keys.C Then
Console.WriteLine("You captured, control c!")
Console.WriteLine(Clipboard.GetText())
End If
End If
End Sub
Private Sub ControlC_KeyUp(ByVal sender As Object, ByVal e As KeyEventArgs)
If m_ControlKeyPressed Then
If e.KeyValue = 162 OrElse e.KeyValue = 163 Then
m_ControlKeyPressed = False
End If
End If
End Sub
End Module
0
您需要创建一个低级挂钩。 This CodeProject example作品完美,我自己用于学习目的。我稍微修改了一下代码,但这里有一个简单的例子,你可以用这个库做些什么。再次,这仅仅是一个例子,并不能反映最终的代码,但可以很容易地修改以捕获Control + C,并且该库有充分的文档记录。
private static bool m_ControlKeyPressed = false;
private static void ControlC_KeyDown(object sender, KeyEventArgs e) {
if (e.KeyValue == 162 || e.KeyValue == 163) {
m_ControlKeyPressed = true;
}
if (m_ControlKeyPressed) {
if (e.KeyCode == Keys.C) {
e.SuppressKeyPress = true; // Suppress, or do something with it
}
}
}
private static void ControlC_KeyUp(object sender, KeyEventArgs e) {
if (m_ControlKeyPressed) {
if (e.KeyValue == 162 || e.KeyValue == 163) {
m_ControlKeyPressed = false;
}
}
}
转换为Vb.Net
Private Shared m_ControlKeyPressed As Boolean = False
Private Shared Sub ControlC_KeyDown(sender As Object, e As KeyEventArgs)
If e.KeyValue = 162 OrElse e.KeyValue = 163 Then
m_ControlKeyPressed = True
End If
If m_ControlKeyPressed Then
If e.KeyCode = Keys.C Then
e.SuppressKeyPress = True
End If
End If
End Sub
Private Shared Sub ControlC_KeyUp(sender As Object, e As KeyEventArgs)
If m_ControlKeyPressed Then
If e.KeyValue = 162 OrElse e.KeyValue = 163 Then
m_ControlKeyPressed = False
End If
End If
End Sub
相关问题
- 1. 在VB.NET组合框中捕获ctrl + V
- 2. 在Java中捕获Ctrl + C
- 3. 在c#中Ctrl + C时捕获文本
- 4. C#捕获按Ctrl + PageUp键按键
- 5. 如何捕获WPF/C#中的CTRL-BACKSPACE?
- 6. wxPython ObjectListView捕获Ctrl-C快捷方式
- 7. 捕获所有Ctrl-?在Android
- 8. 捕获CTRL +在Firefox中
- 9. 无法捕获按Ctrl + C在C#控制台应用程序
- 10. jQuery捕获CTRL + S和Command + S(Mac)
- 11. 在浏览器上捕获Ctrl + W
- 12. 捕获键盘事件CTRL + s
- 13. WPF - 按下CTRL + SHIFT时如何捕获?
- 14. 捕获CTRL-C并使用wxpython处理剪贴板数据
- 15. 在bash脚本中的ssh中捕获Ctrl-C
- 16. c#如何从文本框捕获Ctrl-R
- 17. 无法捕获ctrl-c退出函数退出bash脚本
- 18. 使用Ctrl-C退出tkinter应用并捕获SIGINT
- 19. 捕获用C
- 20. CTRL + C
- 21. Ctrl C和Ctrl的区别\
- 22. Win32 API - Ctrl A + Ctrl C
- 23. 如何在Ctrl'C'之前释放Ctrl时用Qt捕捉Ctrl + C键事件?
- 24. C#相当于VB.NET的捕捉...当
- 25. 捕获屏幕与VB.NET电影
- 26. vb.net捕获系统音频到流
- 27. 在VB.NET中捕获按键事件
- 28. VB.NET窗口屏幕捕获(ALT + PRINTSCREEN)
- 29. 在vb.net中捕获SQL异常
- 30. VB.net中的全局热键捕获
由于生病测试了这一点现在。 – Joseph 2010-09-09 05:49:21
是的,这不会为我工作,该代码不是vb.net,你可以告诉从;最后加上“私有静态” – Joseph 2010-09-09 09:16:32
您只需要在您的项目中引用库,您将编写的代码将是Vb.Net,由于它们的语言非常相似,因此非常容易转换。此外,网络上还有转换器可将C#转换为Vb.Net,反之亦然。你只需要付出一点努力。 – 2010-09-09 11:21:02