質問

デスクトップのエッジの1つにドッキングできるWPFアプリケーションを作成しています。私はこれを行い、画面の同じ端にある幅5px幅5pxの透明な窓である「EdgeWindow」を持っていることで、マウスがそれを乗り越えるたびにアプリケーションのウィンドウがポップアップします。

問題は、「EdgeWindow」が「最上部」に設定されている間、他のWindowsアプリケーションもウィンドウを「最上部」に設定することです。私が知る限り、エッジウィンドウを上に維持するための保証された方法はないようです。

私のアプリケーションはすでに 'applicationdesktoptoolbarです(に似ています http://www.codeproject.com/kb/shell/csdoesshell3.aspx)だから、私はそのインフラストラクチャを使用して、ウィンドウがポップアップして「EdgeWindow」を完全に取り除くべきかどうかを判断する方法があるかもしれないことを望んでいましたが、そこに役立つものは何も見えませんでした。

役に立ちましたか?

解決 2

私が使用した解決策は、マウスの位置の変更を聞いて、エッジに近づくと窓のポップアップでした。もちろん、カーソルがアプリケーションの外に出ると、通常のWPFマウスのリスニングは機能しません。

オリジナルはwh_mouse_llを計画しましたが、Windows 7ではWindows 7では機能がうまくいかないようです。

最終的に、私は「rawinput」(http://www.codeproject.com/kb/system/rawinput.aspx)を使用して、かなりうまく機能しました。この例は、キーボード入力イベントを取得する方法のみを示していますが、代わりにマウスの移動イベントを聞くために変更することはそれほど困難ではありませんでした。

他のヒント

Shappbarクラスを使用して、同様のプロジェクトをしばらくしようとしました。 Shappbarクラスを使用している場合、あなたがそうであると言う場合、目に見えない最上部のウィンドウが必要ではないはずです。また、提供したコードへのリンクには、以下が含まれているようです。

GetAutoHideBar            = 0x00000007,    
// Registers or unregisters an autohide appbar for an edge of 

// the screen. 

SetAutoHideBar            = 0x00000008,    
// Notifies the system when an appbar's position has changed. 

WindowPosChanged          = 0x00000009,    
// Sets the state of the appbar's autohide and always-on-top 

// attributes.

SetState                  = 0x0000000a        

これはうまくいきませんか?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top