请教各位大虾,用C#做的控制台程序,如何使控制台界面窗口在最小化时只显示在屏幕右下角(通知区域)?

renyuang 2003-02-19 01:12:43
用C#做的控制台程序,如何使控制台界面窗口在最小化时只显示在屏幕右下角(通知区域)?
...全文
1241 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
烤火的鱼 2003-03-01
  • 打赏
  • 举报
回复
将托盘工具拖到窗口中,设置一下托盘的图标就可以了,如果要隐藏主窗口,可以设置窗口的visble属性为flase,在托盘的快捷菜单中用this.Hide()或this.Show()来隐藏/显示主窗口。
cwj007 2003-02-21
  • 打赏
  • 举报
回复
知秋:可以写的详细点吗,先谢了
qqchen79 2003-02-20
  • 打赏
  • 举报
回复
System.Windows.Forms.dll可以手工引用,
Message Loop也可以自己建:
while(true) {
Application.DoEvents();
}

剩余的部分和Windows应用就差不多了。
chenxy2002 2003-02-19
  • 打赏
  • 举报
回复
up,用VB做过
cwj007 2003-02-19
  • 打赏
  • 举报
回复
是不是托盘程序
本文通过向大家介绍一个.Net平台上用C#写的可以停放在任务栏上的图标程序(类似于Flashget、OICQ那种系统托盘图标)来和大
家一起体验一下用C#编程的乐趣。

一、概述:

我这里所指的图标程序是类似于在Windows中经常接触的停放在任务栏上,在后台运行的病毒监视、媒体播放等程序。它们一般都具有
单击显示或隐藏主界面,击右键弹出菜单,当鼠标停在图标上时显示提示信息的功能。

程序主要用到了一下几个类:

System.Windows.Fomrs.NotifyIcon类
System.Windows.Forms.ContextMenu类
System.Windows.Forms.MenuItem类
System.Windows.Forms.Label类
System.Windows.Forms.Timer类

二、程序设计和运行的环境:


(1)微软公司视窗2000服务器版或视窗XP版

(2).Net FrameWrok SDK



三、具体实现步骤:


(1).在Visual Studio下新建一个C#的工程,不妨命名为AnimateSystemTray。图示如下:

(2).现在我们来设计程序的主界面:

先将窗体的Text属性设置为"动画系统图标示例",MaximiseBox、MinimiseBox、ShowInTaskbar属性均设置为False。

再往窗体上添加Label控件、NotifyIcon控件、ContextMenu控件、Timer控件各一个。

将Label控件的Text属性设置为"请右击系统托盘图标";将NotifyIcon控件的Icon属性设置为一个图标文件: ,Text属性
设置为"这是个示例程序!",ContextMenu属性设置为"contextMenu1";接下来开始编辑ContextMenu控件,图示如下:

最后还要在导入两个图标 (Icon1.ico), (Icon2.ico)文件到该项目。
(3).现在我们开始编写代码部分:

首先在我们的类中添加以下数据成员:

private Icon m_Icon1;
private Icon m_Icon2;
private bool m_bFlag;
private bool m_bShowWnd;

修改Form1()函数为:

public Form1()
{
//
// Required for Windows Form Designer support
//
InitializeComponent();
//
// TODO: Add any constructor code after InitializeComponent call
//
m_bFlag=true;
m_bShowWnd=true;

try
{
m_Icon1 = new Icon("Icon1.ico");//导入图标文件
m_Icon2 = new Icon("Icon2.ico");
}
catch ( Exception e )
{
MessageBox.Show("Error " + e.Message,"Animate Tray - Error");
menuItem2.Enabled = false;
menuItem3.Enabled = false;
}
}

添加menuItem1、menuItem2、menuItem3、m_trayIcon的Click事件,消息处理函数如下:
private void menuItem1_Click(object sender, System.EventArgs e)
{
timer1.Start();//打开计时器
}

private void menuItem2_Click(object sender, System.EventArgs e)
{
timer1.Stop();//停止计时器
}

private void menuItem3_Click(object sender, System.EventArgs e)
{
Application.Exit();//退出应用程序
}

private void m_trayIcon_Click(object sender, System.EventArgs e)
{
if(m_bShowWnd == true)//隐藏主界面
{
this.Visible = false;
m_bShowWnd = false;
}
else//显示主界面
{
this.Visible = true;
m_bShowWnd = true;
}
}



最后还要添加timer1的Tick()函数:

private void timer1_Tick(object sender, System.EventArgs e)
{
if ( m_Icon1 != null && m_Icon2 != null ) //如果两个图标文件都被正确载入
{
//只要timer1被启动,则在两个图标之间不断进行选择变换,实现动画效果
if ( m_bFlag == true )
{
m_trayIcon.Icon = m_Icon2;
m_bFlag = false;
}
else
{
m_trayIcon.Icon = m_Icon1;
m_bFlag = true;
}
}
}
snla 2003-02-19
  • 打赏
  • 举报
回复
控制台程序直接调用一个外部程序就行了
xz_king 2003-02-19
  • 打赏
  • 举报
回复
用一个form ,中间一个textbox ,当做控制台。对输入的命令进行处理。
用c#调Dos命令。
renyuang 2003-02-19
  • 打赏
  • 举报
回复
多谢CharisRc
CharisRc 2003-02-19
  • 打赏
  • 举报
回复
你可以编写一个窗口,用窗口函数实现SysTray的显示,在控制台窗口最小化时调用这个窗口,窗口回调控制台时使用Process组件。这里面的逻辑你自己考虑。
renyuang 2003-02-19
  • 打赏
  • 举报
回复
多谢大哥,看来是没有办法了?
poetc 2003-02-19
  • 打赏
  • 举报
回复
gz
yarshray 2003-02-19
  • 打赏
  • 举报
回复
控制台

应该不支持NotifyICON

应该控制台不能使用System.Windows.Forms命名空间的类

并且也不具备消息虚幻,因此不可以

举例:
在控制台程序的
static void Main(string[] args)
{

入口函式中,你是无法看到Appliction.Run这个执行过程的

也就是说无法掷出消息循环。

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧