2011-08-05 4 views
3

ショートカットを押すと、ウィンドウがポップアップするvb.netアプリケーションがあります。私はまた、ショートカットを押さない限り、完全に見えないようにしたいと思っています。隠しウィンドウがウィンドウの機能を失う

Me.ShowInTaskbar = False 

私は問題として、このコードを単離した:ショートカットに気付いし、ショートカットのイベントを調整するための私のコードを収容するデフォルトのクラスでは、私は次のコードを配置しています。私のアプリケーションは、タスクバーに表示されていないときに動作しないという問題があります。これはデフォルトのフォームにすぎません。ポップアップウィンドウの場合、別のクラスがあります。タスクバーにウィンドウを隠して一般的に隠すための回避策を作成するにはどうすればよいですか?

ありがとうございました。

ところで、これは私のホットキーコードです:

 Public Const MOD_ALT As Integer = &H1 
     Public Const WM_HOTKEY As Integer = &H312 

     Public Declare Function RegisterHotKey Lib "user32" (ByVal hwnd As IntPtr, ByVal id As Integer, ByVal fsModifiers As Integer, ByVal vk As Integer) As Integer 
     Public Declare Function UnregisterHotKey Lib "user32" (ByVal hwnd As IntPtr, ByVal id As Integer) As Integer 

     Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message) 
     If m.Msg = WM_HOTKEY Then 
      'Stuff do do when Alt-Q is pressed 

      End If 
      MyBase.WndProc(m) 
     End Sub 
+0

ショートカットキーの表示方法を秘密にしないでください。 Google "registerhotkey" –

+0

@ハンス - ホットキーコードを含めます。 – Odinulf

答えて

1

あなたは真と偽に設定することができますMe.object.Visibleまたはform2.visibleなどの属性があるはずです。メインプログラムの終了時にも閉じていることを確認してください。

+0

Me.Visibleが動作しませんでした。 – Odinulf

4

あなたのコードを十分に投稿していません。私はその理由で推測することができます。 ShowInTaskbarプロパティを変更すると、が大きくなり、副作用が発生します。これは、フードの下に実際にウィンドウスタイルのフラグであるプロパティの1つです。 CreateWindowsEx()呼び出しで指定されます。それはむしろ問題を引き起こします。プロパティを変更するには、ネイティブウィンドウを再作成する必要があります。

これはWinformsで実装されていますが、問題を引き起こす可能性があります。 RegisterHotKey()関数の宣言に注意してください。最初の引数はウィンドウハンドルです。問題は、Winformsがネイティブウィンドウを再作成すると、ウィンドウハンドルが異なることです。つまり、ホットキーはもう登録されていません。

回避策は簡単です。ウィンドウが再作成されたときにホットキーを再登録する必要があります。 RegisterHotKey()呼び出しをこのメソッドのLoadイベントハンドラから再度推測する必要があります。

関連する問題