2016-07-20 9 views
-2

보이지 않는 (숨겨진) 프로그램에서 단축키를 등록하는 방법이 있습니까? 나는 정상적인 방법을 피곤했고 폼이 보이거나 활성 창 일 때만 작동합니다. 어떤 도움을 주셔서 미리 감사드립니다!VB.Net 숨겨진 프로그램 단축키

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
    Me.KeyPreview = True 
    Me.ShowInTaskbar = False 
    Me.ShowIcon = False 
    Me.Visible = False 
End Sub 

이것은 프로그램을 숨기는 코드입니다.

+0

이 "보이지 않는/숨겨진"프로그램은 무엇입니까? 나는 그 프로그램에 대해 더 많이 알지 못하고이 질문에 어떻게 답할 수 있는지, 그리고 프로그램을 수정하여 양식을 조작 할 수있는 방법을 모르겠다. ... –

+0

[프로그램이 백그라운드 프로세스] (http://stackoverflow.com/questions/38153300/listen-to-key-press-when-the-program-is-in-the-background-process) –

+0

이로드 이벤트를 추가하려면 프로그램을 숨기고 프로세스로 실행합니다. 하지만 단축키도 작동하지 않습니다. – gregknight

답변

1

글로벌 단축키를 사용하고 싶습니다. 프로그램이 닫힐 때 등록을 취소하십시오.

은 첫째, 당신은 가상 키 코드를 알아야합니다 : 과거에 저를 도운 MSDN 문서에서

.

http://msdn2.microsoft.com/en-us/library/ms927178.aspx 그런 다음 P/Invoke RegisterHotKey/UnregisterHotKey 등록 할 API/ 바로 가기 키를 등록 취소 할 수 있습니다. 코드 샘플 : 같은 Alt + D, Alt + C와 같은 여러 단축키를 등록 등

Imports System.Runtime.InteropServices 

Public Class Form1 

    Public Const MOD_ALT As Integer = &H1 'Alt key 
    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.D) 
     RegisterHotKey(Me.Handle, 200, MOD_ALT, Keys.C) 
    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" 
        MessageBox.Show("You pressed ALT+D key combination") 
       Case "200" 
        MessageBox.Show("You pressed ALT+C key combination") 
      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 

End Class