Hi, ich hab' das ganze mal spaßeshalber in VB.NET ausprobiert/umgesetzt.
Beim starten des Programms werden 2 Hotkeys registriert:
- Strg + Q = Kopiert den markierten Text in die Zwischenablage, prüft ob es eine IP-Adresse ist und wenn ja, dann übergibt er diese mit den Ping-Befehl an die cmd.exe
- Strg + X = Beendet das Programm
Falls IP-Adresse(IPv4) nicht gültig.
und falls doch:
[src=vbnet]Imports System.Runtime.InteropServices
Imports System.Text.RegularExpressions
Public Class Form1
Public Const MOD_ALT As Integer = &H2 'STRG
Public Const WM_HOTKEY As Integer = &H312
<DllImport("User32.dll")>
Public Shared Function RegisterHotKey(ByVal hwnd As IntPtr,
ByVal id As Integer, ByVal fsModifiers As Integer,
ByVal vk As Integer) As Integer
End Function
<DllImport("User32.dll")>
Public Shared Function UnregisterHotKey(ByVal hwnd As IntPtr,
ByVal id As Integer) As Integer
End Function
Private Sub Form1_Load(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles MyBase.Load
RegisterHotKey(Me.Handle, 100, MOD_ALT, Keys.Q)
RegisterHotKey(Me.Handle, 200, MOD_ALT, Keys.X)
End Sub
Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
If m.Msg = WM_HOTKEY Then
Dim id As IntPtr = m.WParam
Select Case (id.ToString)
Case "100"
SendKeys.Send("^(c)") ' kopiere markierten text in zwischenablage
' Prüfe auf gültige IP-Adresse
' IPv6 = \b(?:[\dA-F]{1,4}
{1,7}(?
?::[\dA-F]{1,4}){1,6}|(?:::[\dA-F]{1,4}){1,7}|:|[\dA-F]{1,4})?\b
' IPv4 = \b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b
If Not Regex.Match(Clipboard.GetText(), "\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b").Success Then
' Wenn IP-Adresse nicht gültig, zeige Fehlermeldung
MessageBox.Show("Keine gültige IP-Adresse!", Me.Text, MessageBoxButtons.OK)
Else
' Wenn IP-Adresse gültig, dann anpingen.
Dim Command As String
Command = "/k ping " + Clipboard.GetText()
Dim cmd As New Process
cmd.StartInfo.WindowStyle = ProcessWindowStyle.Normal
cmd.StartInfo.FileName = "cmd.exe"
cmd.StartInfo.Arguments = Command
cmd.Start()
End If
Case "200"
Application.Exit()
End Select
End If
MyBase.WndProc(m)
End Sub
Private Sub Form1_FormClosing(ByVal sender As System.Object,
ByVal e As System.Windows.Forms.FormClosingEventArgs) _
Handles MyBase.FormClosing
UnregisterHotKey(Me.Handle, 100)
UnregisterHotKey(Me.Handle, 200)
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Application.Exit()
End Sub
End Class[/src]
Hier zum ausprobieren, die kompilierte .exe
######