2017-03-22 7 views
0

タスクバーボタンを押してグローバルホットキーを起動するのに役立つ単純なVisual Basicアプリケーションを作成しています。タスクバーにフォーカスを設定

これを行うには、私は基本的にタスクバーに戻って自分自身を最小化するためにアプリを設定します。私は、これらのキーを押すためにSendKeysを使うことができるように、タスクバー自体をアクティブにしたい(以前のアクティブなプログラムではない)。私のテストでは、キー押しが登録されます。そのちょうど私は私のプログラムから実際にタスクバーを起動する方法を見つけることができないようです。

私が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 
関連する問題