0

MainFormとMinimizedMainFormの2つのウィンドウがあります。両方のフォームでWindows+Dを無効にしたい。両方のフォームの親は、3番目のフォームFormBaseです。Windows+Dを無効にするために次のコードを使用しました

private const in GWL_HWNDPARENT =-8

IntPtr hprog = NativeMethods.FindWindowEx(NativeMethods.FindWindowEx(NativeMethods.FindWindow("Progman", "Program Manager"),
                          IntPtr.Zero, "SHELLDLL_DefView", ""),
                          IntPtr.Zero, "SysListView32", "FolderView");
        NativeMethods.SetWindowLong(this.Handle, GWL_HWNDPARENT, hprog);

私が直面している問題は、Win + Dを押しても、MainFormが最小化されないことです。また、MinimizedFormを最初に起動するときに、Win + Dを押すと、最小化されません。しかし、2回目以降、Win + Dを押すと、minimizedMainFormのロードが最小化されます。両方のフォームのFormLoadイベントに上記のコードを追加しました。MainFormのパネルをクリックするとMinimizedMainFormが開き、その逆も同様です。MainFormは私のプロジェクトの開始フォームです。

2番目以降のloadFormイベントでフォームが最小化されないようにするにはどうすればよいですか?

4

2 に答える 2

0

おそらく、最小化できるウィンドウの最小化を防ぐ代わりに、最小化できないウィンドウを作成する必要がありますMinimizeBox = false。(私が賭けるほど単純なことはできませんが、コメントを書くことができないので、ここに解決策= Dがあります)

于 2013-02-15T14:05:26.877 に答える
0

基本的に Win + D はウィンドウを最小化するためではなく、デスクトップを表示するためのものです。Win+D = デスクトップを表示します。したがって、ウィンドウに最小化ボックスがない場合でも、最小化されます。

さらに、Win + Dを押すと、それを処理するのはアプリケーションではなく、それを処理するのはウィンドウ自体であるため、アプリケーションにまったく到達しないため、アプリケーションで処理しても意味がありません.

アプリケーションが起動しているハックを見つけてみてください。WindowsがWin + Dキーを処理するのを止めます。

レジストリにキーがあります

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer

ここでホットキーの値を変更すると、Win + D の組み合わせが無効になりますが、アプリケーションがフォーカスを離れたときに元に戻す必要があるため、お勧めしません。

はい、ウィジェットを作成する場合は、ウィジェット作成の要件に従ってください。そのような機能を自動的に提供します

于 2013-02-15T14:26:49.597 に答える