动态系统托盘图标

实现效果:

  

知识运用:

  TcpListener TcpClient  和  NetworkStream类 及  Timer组件

  1> TcpListener类    //用来从Tcp网络客户端侦听连接

  

  2> TcpClient类    //为Tcp网络服务提供客户端连接

  public TcpClient(string hostname,int port)  //远程主机的DNS名 端口号

  3> NetworkStream类  //提供在阻止模式下通过Stream套接字发送和接受数据的方法

    //其Read方法用于从NetworkStream类读取数据

  public override int Read(byte[] buffer,int offset,int size)

  

  4> notifyIcon控件的Icon属性

实现代码:

        //声明变量
        private Thread td;
        private string message = "";
        private TcpListener tcpListener;
        //监听方法
        private void startListen()
        {
            tcpListener = new TcpListener(999);
            tcpListener.Start();
            while (true)
            {
                TcpClient client = tcpListener.AcceptTcpClient();
                NetworkStream netStream = client.GetStream();
                byte[] bt=new byte[1024];
                netStream.Read(bt,0,bt.Length);
                message = Encoding.Default.GetString(bt);
            }
        }
        //发送消息
        private void button1_Click(object sender, EventArgs e)
        {
            TcpClient client = new TcpClient(textBox1.Text,999);
            string msg = "嗨,你好! 南极鱼";
            NetworkStream netStream = client.GetStream();
            StreamWriter sw = new StreamWriter(netStream);
            sw.WriteLine(msg);
            sw.Flush();
            sw.Close();
            client.Close();
        }
        //初始化
        private void Form1_Load(object sender, EventArgs e)
        {
            td = new Thread(new ThreadStart(startListen));
            td.Start();
            timer1.Start();
        }
        //清理工作
        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (td.ThreadState == ThreadState.Running)
                td.Abort();
            if (tcpListener != null)
                tcpListener.Stop();
        }
        //定时检查有无消息
        bool flag;
        private void timer1_Tick(object sender, EventArgs e)
        {
            if (message.Length > 0)
            {
                if(flag)
                    { notifyIcon1.Icon = Properties.Resources._1; flag = false; }
                else
                    { notifyIcon1.Icon = Properties.Resources._2; flag = true; }
            }
        }
        //停止闪烁
        private void button2_Click(object sender, EventArgs e)
        {
            message = "";
            notifyIcon1.Icon = Properties.Resources._3;
        }

  

原文地址:https://www.cnblogs.com/feiyucha/p/10317733.html

时间: 2024-11-07 01:38:53

动态系统托盘图标的相关文章

实现动态系统托盘图标

实现效果: 知识运用: TcpListener TcpClient  和  NetworkStream类 及  Timer组件 1> TcpListener类 //用来从Tcp网络客户端侦听连接 2> TcpClient类 //为Tcp网络服务提供客户端连接 public TcpClient(string hostname,int port) //远程主机的DNS名 端口号 3> NetworkStream类 //提供在阻止模式下通过Stream套接字发送和接受数据的方法 //其Read

JavaFx 添加系统托盘图标

//添加系统托盘图标. SystemTray tray = SystemTray.getSystemTray(); BufferedImage image = ImageIO.read(mainUi.class .getResourceAsStream("orange-ball.png")); trayIcon = new TrayIcon(image, "自动备份工具"); trayIcon.setToolTip("自动备份工具"); tray

系统托盘图标

系统托盘图标的创建主要使用 Shell_NotifyIcon 函数来实现,实现过程比较简单. 注意: 要创建系统托盘图标,必须要有窗口:要创建窗口,必须要有窗口过程函数. 一个窗口可以有多个系统托盘图标:图标彼此间用 hWnd 和 uID 区分: 窗口过程函数接收到事件后, wParam 表示 uID,lParam 表示 message: 以下是封装的托盘类代码: // notifyicon.h #ifndef _NOTIFYICON_H_ #define _NOTIFYICON_H_ #inc

【php】配合Ajax与Json,根据MVC思想,无插件,完美兼容IE6,编写一个获取动态系统

获取用户动态在一些论坛等社交网络中很常见,甚至可以说,就是一个微博嘛.其实这个系统很简单的,很容易就能写出来. 当然,你平时要做好准备,在你的后台数据库加一张动态表,在用户发帖.回帖等各个动作的执行时候,再加一条把用户的各个动作入库,记录到一张专门的动态表内.时刻收集好用户的动态,这样才能向用户的好友或者整个网站的用户展示好友动态. 现在举一个例子来说明,怎么编写一个获取动态系统,也就是微博. 一.基本目标 假设我们现在收集了16条用户动态在Testtable表里面,时间什么的具体数据居然有条1

Ubuntu 14.04系统托盘图标问题,skype托盘图标显示

Ubuntu?14.04系统托盘图标问题,skype托盘图标显示_瑞波支付_新浪博客 Ubuntu 14.04 取消了系统托盘白名单机制,导致使用传统系统托盘技术的程序无法显示出托盘图标,dconf-editor也无力解决这个问题 .Ubuntu Unity桌面目前使用的技术是indicator-application-service.那么如何继续让传统程序显示托盘图标呢?执行如下命令即可解决: ? sudo apt-get install libappindicator1 ? sudo apt

MFC 系统托盘图标实现(转载)

首先,必须知道一个结构体NOTIFYICONDATA ,这是MFC中包含系统需要的用来传递托盘区域消息的信息结构体,有了它,我们今 天的任务就完全可以轻松完成了! 这时候,我们可以在我们的类中申明一个NOTIFYICONDATA的成员变量为m_nid. 接下来,我们可以给这个结构体变量赋我们想要的值了,记住赋值语句要写在OnInitDialog初始化窗口函数里,不要写在构造函 数中,否则将会无效.m_nid.cbSize = sizeof( NOTIFYICONDATA );m_nid.hWnd

Ubuntu:如何显示系统托盘图标(systray)

1. 问题说明 Ubuntu 11版本开始,默认关闭了托盘图标的显示,需要手动执行命令或额外工具配置,添加到白名单.Ubuntu 13.04更彻底,默认配置根本没有托盘图标,除了java和wine等几个系统自带的程序可以显示,其它任何应用程序都不能显示,以前的命令也不支持了,例如QQ也显示不了了. Ubuntu 14.04 取消了系统托盘白名单机制,导致使用传统系统托盘技术的程序无法显示出托盘图标,dconf-editor也无力解决这个问题.Ubuntu Unity桌面目前使用的技术是indic

系统托盘编程完全指南

原文:http://www.hellocpp.net/Articles/Article/574.aspx 第一部分 自从Windows 95面市以来,系统托盘应用作为一种极具吸引力的UI深受广大用户的喜爱.使用系统托盘UI的Windows应用程序数不胜数,比如"金山词 霸"."Winamp"."RealPlayer"等等.那么如何编写自己的托盘应用呢?本文是系列文章中的第一篇,这些文章将比较系统地描述托盘应用的 编程.并创建自己的C++类来增强系

delphi 给程序加托盘图标

一些程序运行时,会在桌面的右下角显示一个图标(任务栏的右边),这类图标称为 托盘.托盘是一个PNotifyIconDataA类型的结构,要增加托盘图标其实就是对结构PNotifyIconDataA的操作.使用控件CoolTrayIcon是个不错的选择,不过这里也给出简单实现,方便初学者学习.这里给出实际的例子程序代码,只在form窗体上增加2个默认按钮1.需要包含shellapiunit Unit1;interfaceusesWindows, Messages, SysUtils, Varian