日期:2014-05-19  浏览次数:20928 次

想让wpf Window应用在启动后不显示在TaskBar,只显示为SystemTray Icon,点击icon后显示主界面。怎么实现啊?
想让wpf   Window应用在启动后不显示在TaskBar,只显示为SystemTray   Icon,点击icon后显示主界面。怎么实现啊?

------解决方案--------------------
没有用过wpf
------解决方案--------------------
Window类有个ShowInTaskbar属性
------解决方案--------------------
窗体的ShowInTaskbar=false,WindowState=Minimized
添加Notifyicon控件,并指定一Icon值
------解决方案--------------------
wpf 好象是N年前我用过的那个文字处理的软件吧?

对这类你不能控制源代码的程序可以用 API 找到它的Windows Handler,然后向它的窗口发消息,让它不在Task Bar里边显示.但这些都不是纯.NET的手法.
------解决方案--------------------
我发一下代码,这是从网上找的,已经经过我测试了,你可以修改后生成一个类库,然后在你的程序中引用。现在这段代码可以直接编译,只要找一个icon图标。
using System ;
using System.Drawing ;
using System.Collections ;
using System.ComponentModel ;
using System.Windows.Forms ;
using System.Data ;
//导入在程序中使用到的名称空间
public class Tray : Form
{
 private System.ComponentModel.Container components = null ;
 private Icon mNetTrayIcon = new Icon ( "sun.ico " ) ;
 private NotifyIcon TrayIcon ;
 private ContextMenu notifyiconMnu ;

 public Tray()
 {
  //初始化窗体中使用到的组件
  InitializeComponent ( ) ;
  //初始化托盘程序的各个要素
  Initializenotifyicon ( ) ;
 }

private void Initializenotifyicon ( )
{
 //设定托盘程序的各个属性
 TrayIcon = new NotifyIcon ( ) ;
 TrayIcon.Icon = mNetTrayIcon ;
 TrayIcon.Text = "用Visual C#做托盘程序 " + "\n " + "作者:llg于2007 " ;
 TrayIcon.Visible = true ;
 TrayIcon.Click += new System.EventHandler ( this.click ) ;

 //定义一个MenuItem数组,并把此数组同时赋值给ContextMenu对象
 MenuItem [ ] mnuItms = new MenuItem [ 3 ] ;
 mnuItms [ 0 ] = new MenuItem ( ) ;
 mnuItms [ 0 ] .Text = "用Visual C#做托盘程序! " ;
 mnuItms [ 0 ] .Click += new System.EventHandler ( this.showmessage ) ;

 mnuItms [ 1 ] = new MenuItem ( "- " ) ;

 mnuItms [ 2 ] = new MenuItem ( ) ;
 mnuItms [ 2 ] .Text = "退出系统 " ;
 mnuItms [ 2 ] .Click += new System.EventHandler ( this.ExitSelect ) ;
 mnuItms [ 2 ] .DefaultItem = true ;

 notifyiconMnu = new ContextMenu ( mnuItms ) ;
 TrayIcon.ContextMenu = notifyiconMnu ;
 //为托盘程序加入设定好的ContextMenu对象
}
public void click ( object sender , System.EventArgs e )
{
 MessageBox.Show ( "Visual C#编写托盘程序中的事件响应 " ) ;
}

public void showmessage ( object sender , System.EventArgs e )
{
 MessageBox.Show ( "你点击了菜单的第一个选项 " ) ;
}

public void ExitSelect ( object sender , System.EventArgs e )
{
 //隐藏托盘程序中的图标
 TrayIcon.Visible = false ;
 //关闭系统
 this.Close ( ) ;
}
//清除程序中使用过的资源
public void Disposem ( )
{
 base.Dispose ( ) ;
 if ( components != null )
  components.Dispose ( ) ;
}

private void InitializeComponent ( )
{
 this.SuspendLayout ( ) ;
 this.AutoScaleBaseSize = new System.Drawing.Size ( 5 , 13 ) ;
 this.ClientSize = new System.Drawing.Size ( 320 , 56 ) ;
 this.ControlBox = false ;
 this.MaximizeBox = false ;
 this.MinimizeBox = false ;
 this.WindowState = System.Windows.Forms.FormWindowState.Minimized ;

 this.Name = "tray " ;
 this.ShowInTaskbar = false ;
 this.Text = "用Visual C#做托盘程序! " ;
 this.ResumeLayout ( false ) ;

}
static void Main ( )
{
 Application.Run ( new Tray ( ) ) ;