คือ ผมเขียนโปรแกรม hide ไว้ แล้วให้เวลา กดตัว O ใน keyboard จะให้โปรแกรม show มา จะต้องทำประมาณไหนหรอครับ
Tag : .NET, VB.NET
Date :
2015-03-13 11:22:57
By :
aibot
View :
858
Reply :
4
No. 1
Guest
ในส่วนการกำหนด hotkey เฉพาะให้กับโปรแกรมจะเป็นการเรียกใข้ windows api
เพื่อจองเอา hotkey ที่กำหนดให้กับตัวโปรแกรมของเราแต่ผู้เดียว ดังนี้
Code (VB.NET)
Imports System.Collections.Generic
Imports System.ComponentModel
Imports System.Data
Imports System.Drawing
Imports System.Linq
Imports System.Text
Imports System.Windows.Forms
Imports System.Runtime.InteropServices
Namespace WindowsFormsApplicationHotKey
Public Partial Class Form1
Inherits Form
Public Sub New()
InitializeComponent()
Dim success As [Boolean] = Form1.RegisterHotKey(Me.Handle, Me.[GetType]().GetHashCode(), &H0, &H42)
'Set hotkey as 'b'
If success = True Then
MessageBox.Show("Success")
Else
MessageBox.Show("Error")
End If
End Sub
<DllImport("user32.dll")> _
Public Shared Function RegisterHotKey(hWnd As IntPtr, id As Integer, fsModifiers As Integer, vlc As Integer) As Boolean
End Function
'[DllImport("user32.dll")]
'public static extern bool UnregisterHotKey(IntPtr hWnd, int id);
Protected Overrides Sub WndProc(ByRef m As Message)
If m.Msg = &H312 Then
'You can replace this statement with your desired response to the Hotkey.
MessageBox.Show("Catched")
End If
MyBase.WndProc(m)
End Sub
End Class
End Namespace
ก็น่าจะได้นะครัช เเพียงแต่มันอาจจะไม่ถูกหลัดเท่าใดนัก
เพราะการที่พับโปรแกรมลงมาหากใช้ main thread อยู่ใน form
ออกจะสิ้นเปลืองหลายๆอย่างอยุ่ แต่ถ้าถนัดเขียนแบบนี้แล้วสนองเนื้องานได้ก็จัดไปครับ
อนึ่งดังที่เรียนการใช้ windows api จะเป็นการไป hook เอา hotkey ของระบบไว้เลย
ค่อนข้างแน่ใจได้ว่า windows จะส่งการตอบสนองมายังเราแต่ผู้ดียว
และหากที่การจอง key เดียวพร้อมกัน ตัวสุดท้ายน่าจะได้สิทธิ์นั้นไปนะครัช อย่างไรก็ลองดู