2011-08-03 4 views
2

Flip3d(Winkey + Tab)ダイアログに表示されないWPFウィンドウを作成するにはどうすればよいですか?Flip3DからWPFアプリケーションを削除するには?

+0

私はあなたができるとは思わない。プロセスが実行されていて、ユーザーが見ることができるフォーム/ウィンドウがあれば、マイクロソフトがこれを許可しないことを願っています。そうしないと、マルウェアを簡単に書き込むことができます。 –

+0

私はこれが重複した質問かもしれないと信じています。これは、Alt-TabとWin-Tabが背後で同じウィンドウスタイルを使用していると仮定しています。参照してください:http://stackoverflow.com/questions/357076/best-way-to-hide-a-window-from-the-alt-tab-program-switcher – bporter

+0

Alt + Tabダイアログからは削除されますが、フリップ3D。 –

答えて

2

は、私はそれを行う方法です。

... 
using System.Runtime.InteropServices; 
using System.Windows.Interop; 
namespace NoFlip3D 
{ 
    /// <summary> 
    /// Interaction logic for MainWindow.xaml 
    /// </summary> 
    public partial class MainWindow : Window 
    { 
     [DllImport("dwmapi.dll", PreserveSig = false)] 
     public static extern int DwmSetWindowAttribute(IntPtr hwnd, int attr, ref int attrValue, int attrSize); 
     [Flags] 
     public enum DwmWindowAttribute 
     { 
      NCRenderingEnabled = 1, 
      NCRenderingPolicy, 
      TransitionsForceDisabled, 
      AllowNCPaint, 
      CaptionButtonBounds, 
      NonClientRtlLayout, 
      ForceIconicRepresentation, 
      Flip3DPolicy, 
      ExtendedFrameBounds, 
      HasIconicBitmap, 
      DisallowPeek, 
      ExcludedFromPeek, 
      Last 
     } 

     [Flags] 
     public enum DwmNCRenderingPolicy 
     { 
      UseWindowStyle, 
      Disabled, 
      Enabled, 
      Last 
     } 
     public MainWindow() 
     { 
      InitializeComponent(); 
     } 
     public static void RemoveFromFlip3D(IntPtr Hwnd) 
     {   
      int renderPolicy = (int)DwmNCRenderingPolicy.Enabled; 
      DwmSetWindowAttribute(Hwnd, (int)DwmWindowAttribute.Flip3DPolicy, ref renderPolicy, sizeof(int)); 
     } 

     private void Window_Loaded(object sender, RoutedEventArgs e) 
     { 
      IntPtr AppHandle = new WindowInteropHelper(this).Handle; 
      RemoveFromFlip3D(AppHandle); 
     } 
    } 
} 

それはフリップ3Dから隠し、彼らは(Alt + Tabキーとタスクバー)あったように他のものが残っています。 しかし、Flip3Dがを実行している間、アプリケーションはバックグラウンドで表示されたままです。

+0

+1は素晴らしい作品です。 –

0

だけでfalseにメインフォームのShowInTaskbarを設定します。

<Window x:Class="WpfNoFlip3D.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="MainWindow" Height="350" Width="525" ShowInTaskbar="False"> 
    <Grid>   
    </Grid> 
</Window> 

は(あなたの要求に従って)、それが唯一の勝利+タブのためである、 側にはAlt + Tabキーのために動作しないことに注意してくださいあなたのアプリケーションはタスクバーからも消えてしまいます。ここで

+0

返信いただきありがとうございますが、私はタスクバーではなくFlip3dから削除するソリューションが必要です。 –

関連する問題