2017-03-22 9 views
0

작업 표시 줄 단추를 눌러 글로벌 단축키를 시작할 수 있도록 간단한 Visual Basic 응용 프로그램을 작성하고 있습니다.작업 표시 줄에 포커스 설정

이렇게하려면 기본적으로 응용 프로그램을 다시 최소화하여 작업 표시 줄로 설정했습니다. 그런 다음이 키를 누르기 위해 SendKeys를 사용할 수 있도록 작업 표시 줄 자체를 활성화해야합니다 (이전의 활성 프로그램이 아님). 내 테스트에서 keypresses 등록 된 얻을. 그저 내 프로그램에서 실제로 작업 표시 줄을 활성화하는 방법을 찾지 못하는 것입니다.

AppActivate를 사용하는 경우 processID 또는 창 제목이 필요합니다.

Windows API를 사용하는 것이 가장 좋은 방법 인 것처럼 보이지만 결과가 나쁘다. 잘못된 결과를 보여야한다.

여기 내 코드입니다 :

Public Class Form1 
    Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Integer 

    Private Sub Form1_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.GotFocus 
     Me.WindowState = FormWindowState.Minimized 
     Dim intReturn As Integer = FindWindow("Shell_traywnd", "") 
     AppActivate(intReturn) 
     SendKeys.Send("%1") 
     MsgBox("test") 

    End Sub 

End Class 

내가지고있어 오류가이 ID를 실행하여 어떤 방법이 없다는 것이다.

+1

파인 저와 함께 다음과 같이

코드는된다. 나 자신에게 그렇게 할 수 없으며 충분한 평판을 얻지 못합니다. 잠깐, 투표 할 수있어, 투표를 닫지 마라. 나는 단지 속임수로 표시했다. – LPChip

답변

0

FindWindow는 processID가 아닌 hwnd 핸들을 반환합니다. SetForegroundWindow 함수를 사용하여 활성화해야합니다.

Public Class Form1 
    Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Integer 
    Declare Function SetForegroundWindow Lib "user32.dll" (ByVal hwnd As Integer) As Integer 

    Private Sub Form1_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.GotFocus 
     Me.WindowState = FormWindowState.Minimized 
     Dim intReturn As Integer = FindWindow("Shell_traywnd", "") 
     SetForegroundWindow(intReturn) 
     SendKeys.Send("%1") 
     MsgBox("test") 

    End Sub 

End Class