notifyicon

c#使用notifyIcon控件时会在托盘中出现多个图标?首先在窗体上添加 notifyIcon控件,并为它设置图标添加窗体的Resize事件if?。╰his.WindowState?。剑健ormWindowState.Minimized)?。鹴his.Visible?。健alse;//窗体不可见this.notifyIcon1.Visible?。健rue;//托盘图标显示?。?

c#怎样在 NotifyIcon组件中添加图标【notifyicon】设置NotifyIcon的属性icon , 可以选择你想要的图标样式

c# 关闭程序后NotifyIcon的图标会驻留在任务栏你在退出之前,需要将notifyicon控件的Visible属性设置为false

C# 如何动态修改程序任务栏图标修改notifyIcon的icon属性即可

c# NotifyIcon控件的问题因为还原后,窗口的焦点仍然停留在最小化按钮上,与楼上说的“和你WINDOWS界面主题有关”一点关系都没有!要解决这个问题,可以对notifyIcon的MouseClick事件编程,大致代码如下:private void notifyIcon_MouseClick(object sender, MouseEventArgs e){this.Visible = true;this.WindowState = windowState;notifyIcon.Visible = false;// 将焦点转移到窗体内任意一个控件上,例如 , 你窗体上的textBox1上textBox1.Focus( );}

谁知道vb.NET中notifyicon气球用法'气球显示5秒,可设置标题、内容、图标
NotifyIcon1.ShowBalloonTip(5000, "标题", "显示内容", ToolTipIcon.Info)

求大神指点 vb.net 的NotifyIcon1 托盘图标 在程序退出时 怎么删除自身创建的托盘的图标呀?notifyIcon1.Dispose()

怎样使用notifyIcon控件Windows 窗体 NotifyIcon 组件在任务栏的状态通知区域中显示单个图标 。若要在状态区域中显示多个图标,则必须在窗体上要有多个 NotifyIcon 组件 。若要为控件设置所显示的图标,请使用 Icon 属性 。也可以在 DoubleClick 事件处理程序中编写代码,以便当用户双击图标时执行相应操作 。例如,可以为用户显示一个对话框,以便配置由图标表示的后台处理 。详细资料参见: http://msdn2.microsoft.com/zh-cn/library/062478za(VS.80).aspx

如何给notifyIcon控件的Icon属性设置图标 c#代码设置Icon:
notifyIcon1.Icon = new Icon("bt.ico");

属性设置的话就就点属性后面的浏览文件按钮选择.Icon或.Ico图片的路径

VB shell_notifyicon这个API到底怎么用?系统托盘Totray.Into_Tray的Totray是一个对象,你没有定义 。应该是“类” 。Into_Tray是Totray类的一个方法(函数)

c# notifyicon 延时这种情况通常是程序没有正确释放资源 。不过,你可以在主窗体Closing事件中隐藏notifyicon , 这样就不会有这个问题了 。在主窗体中添加OnClosing重载既可: protected override void OnClosing(CancelEventArgs e) { notifyIcon1.Visible = false; base.OnClosing(e); }满意请采纳

c# NotifyIcon 的问题设置窗体属性
windowstate为Minimized
showintaskbar 为 false
在窗体form_load方法添加以下代码
this.Hide();

在notifyicon的mouseclick方法添加以下代码
this.Show();
this.ShowInTaskbar = true;
this.WindowState = FormWindowState.Normal;

在窗体form_formclosing方法添加以下代码
if (e.CloseReason == CloseReason.UserClosing)
{
//在窗体上点击关闭按钮程序不会退出,需自己添加退出方法
e.Cancel = true;
this.ShowInTaskbar = false;
this.Hide();
}

C# NotifyIcon控件 用法你可以考虑 NotifyIcon 控件作为一个静态的变量 。。或者在每个窗体加上一个NotifyIcon 变量 在构造的时候将这个变量传进去~至于如何给它加右键菜单 你可以从控件栏那里拖一个contextMenuStrip控件 。。NotifyIcon 控件的属性contextMenuStrip属性 指向你的contextMenuStrip控件就行了 。。。

C# NotifyIcon控件问题设置窗体属性
windowstate为Minimized
showintaskbar 为 false
在窗体form_load方法添加以下代码
this.Hide();

在notifyicon的mouseclick方法添加以下代码
this.Show();
this.ShowInTaskbar = true;
this.WindowState = FormWindowState.Normal;

在窗体form_formclosing方法添加以下代码
if (e.CloseReason == CloseReason.UserClosing)
{
//在窗体上点击关闭按钮程序不会退出,需自己添加退出方法
e.Cancel = true;
this.ShowInTaskbar = false;
this.Hide();
}

C# 窗体拖盘图标改Notifyicon图标,怎么改变任务栏图标1.notifyIcon可参考:
【已解决】C#中实现程序在系统托盘显示(气泡)提示

2.任务栏图标,就是你程序的图标而已 。
自己去设置窗体的属性中的icon即可 。

3.另外相关的:
【已解决】C#程序运行时Winform窗体中有图标,但是exe可执行文件没有图标


(此处不给贴地址,请自己用google搜标题,即可找到帖子地址)

C# 关于使用notifyIcon问题窗体最小化到状态栏
private void MainForm_Resize(object sender, EventArgs e)
{
if (this.WindowState == FormWindowState.Minimized)
{
notifyIcon1.Visible = true;
this.Hide();
this.ShowInTaskbar = false;
}
}private void notifyIcon1_MouseDoubleClick(object sender, MouseEventArgs e)
{
if (this.ShowInTaskbar == false)
{
notifyIcon1.Visible = true;
this.ShowInTaskbar = false;
this.Show();
this.Activate();
this.WindowState = FormWindowState.Normal;
}
}

C# Shell_NotifyIcon隐藏托盘图标首先要找到需要隐藏的程序的句柄 。
NOTIFYICONDATA tnid;
tnid.cbSize=sizeof(NOTIFYICONDATA);
tnid.hWnd=hwnd;
tnid.uID=uID;
tnid.uFlags=NIF_ICON|NIF_TIP|NIF_MESSAGE;
tnid.uCallbackMessage=MYWM_NOTIFYICON;
tnid.hIcon=hicon;
if(lpszTip)
lstrcpy(tnid.szTip,lpszTip);
else
tnid.szTip[0]='\0';
return Shell_NotifyIcon(NIM_ADD,&tnid);
可以尝试根据NOTIFYICONDATA这个结构去做 。

怎样在任务栏显示图标---- Windows95/WindowNT 任 务 栏 的 右 边 是 一 状 态 区,
Windows95/WindowsNT 在 其 上 显 示 时 间 和 一 些 小 图 标, 这 些 图
标 代 表 着 特 定 的 功 能 或 程 序,用 鼠 标 单 击、 右 击 或 双 击
这 些 图 标, 就 会 弹 出 功 能 菜 单 或 程 序 窗 口 等 。如 你 用 过
金 山 词 霸 或 超 级 解 霸, 你 会 觉 得 这 些 图 标 使 软 件 用 起 来
很 方 便 。你 也 许 想 把 自 己 的 程 序 图 标 也 放 在 任 务 栏 的 状
态 区 上, 很 简 单,Visual C++ 5.0 提 供 了 一 个 函 数,让 你 很 容
易 地 实 现 该 功 能 。

---- Visual C++ 提 供 的 函 数 是Shell_NotifyIcon(), 该 函 数 发 送 消
息 给 系 统 在 任 务 栏 的 状 态 区 增 加、 删 除 或 修 改 图 标 。
Shell_NotifyIcon() 有 两 个 参 数:

---- 1 . DWORD dwMessage

---- 消 息 标 志 值,为 以 下 三 个 中 之 一:

NIM_ADD在任务栏状态区增加图标
NIM_DELETE从任务栏状态区删除图标
NIM_MODITY修改任务栏状态区的图标

---- 2 . PNOTIFYICONDATA pnid

---- 指 向NOTIFYICONDATA 结 构 的 指 针 。NOTIFYICONDATA 结 构 如 下:

typedef struct _NOTIFYICONDATA { // nid
DWORD cbSize; // NOTIFYICONDATA结构的大小
HWND hWnd; //接收回调消息的窗口句柄
UINT uID;//自定义的图标标志值
UINT uFlags; //标志后面的三个数据成员哪个有效,
//可由NIF_ICON,NIF_MESSAGE和NIF_TIP组合 。
UINT uCallbackMessage;//回调消息
HICON hIcon;//图标句柄
char szTip[64];//提示字符 。当把鼠标移到任务栏
//状态区该图标上时,系统显示该字符
} NOTIFYICONDATA, *PNOTIFYICONDATA;

---- 以 下 举 例 如 何 在 任 务 栏 状 态 区 实 现 程 序 图 标 及 其 功 能 。

---- 1. 首 先 生 成 一 个 单 文 档 的 工 程 文 件 。

---- 2. 在StdAfx.h 添 加 自 定 义 的 消 息:

//回调消息
#define MYWM_NOTIFYICONWM_USER+1
//在任务栏状态区显示图标的消息
#define MYWM_SHOWAPPICONICWM_USER+2

---- 3. 在MainFrm.h 里 添 加 定 义 消 息 处 理 函 数 说 明 ,  该 部 分 看 起 来 如 下:

protected:
//{{AFX_MSG(CMainFrame)afx_msg void OnSysCommand( UINT nID, LPARAM lParam ); // 手 工 加afx_msg void OnMyIconNotify( WPARAM wParam, LPARAM lParam ); // 手 工 加afx_msg void OnShowAppIconic( WPARAM wParam, LPARAM lParam ); // 手 工 加afx_msg void OnClose(); // 系 统 生 成//}}AFX_MSG

DECLARE_MESSAGE_MAP()

---- 另 外 ,  需 在MainFrm.h 定 义 一 开 关 值,记 录 程 序 窗 口 是 打
开 或 关 闭 状 态:

BOOL boolWndHadShow;

---- 4. 在MainFrm.cpp 里 实 现 消 息 映 射 和 消 息 处 理 函 数 。消 息
映 射 部 分 看 起 来 如 下:

BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
//{{AFX_MSG_MAP(CMainFrame) ON_MESSAGE(MYWM_NOTIFYICON, OnMyIconNotify) ON_MESSAGE(MYWM_SHOWAPPICONIC, OnShowAppIconic) ON_WM_SYSCOMMAND() ON_WM_CLOSE() //}}AFX_MSG_MAP
END_MESSAGE_MAP()

---- 消 息 处 理 及 相 关 函 数 如 下 所 示:

//在任务栏状态区添加图标
BOOL MyTaskBarAddIcon(HWND hwnd,
UINT uID, HICON hicon, LPSTR lpszTip)
{
BOOL res;
NOTIFYICONDATA tnid;
tnid.cbSize = sizeof(NOTIFYICONDATA);
tnid.hWnd = hwnd;
tnid.uID = uID;
tnid.uFlags = NIF_ICON | NIF_TIP | NIF_MESSAGE;
tnid.uCallbackMessage = MYWM_NOTIFYICON;
tnid.hIcon = hicon;
if (lpszTip)
lstrcpyn(tnid.szTip, lpszTip, sizeof(tnid.szTip));
else
tnid.szTip[0] = '\0';
res = Shell_NotifyIcon(NIM_ADD, &tnid);
if (hicon)
DestroyIcon(hicon);
return res;
}

//从任务栏状态区删除图标
BOOL MyTaskBarDeleteIcon(HWND hwnd, UINT uID)
{
BOOL res;
NOTIFYICONDATA tnid;
tnid.cbSize = sizeof(NOTIFYICONDATA);
tnid.hWnd = hwnd;
tnid.uID = uID;
res = Shell_NotifyIcon(NIM_DELETE, &tnid);
return res;
}

//处理图标回调消息MYWM_NOTIFYICON
void CMainFrame::OnMyIconNotify
( WPARAM wParam, LPARAM lParam )
{
UINT nID;
UINT uMouseMsg;
nID = (UINT)wParam;
uMouseMsg = (UINT) lParam;
if (uMouseMsg == WM_LBUTTONDOWN) //点击图标
{
if ( boolWndHadShow )//如果窗口已打开,隐藏窗口
ShowWindow( SW_HIDE );
else//否则,显示窗口
ShowWindow( SW_SHOWNORMAL );
boolWndHadShow = ~boolWndHadShow;
}
}

//消息MYWM_SHOWAPPICONIC
处理函数 , 在任务栏显示图标并隐藏窗口
void CMainFrame::OnShowAppIconic
( WPARAM wParam, LPARAM lParam )
{
HICON theIcon = LoadIcon(AfxGetInstanceHandle(),
MAKEINTRESOURCE(IDR_MAINFRAME) );
MyTaskBarAddIcon(GetSafeHwnd(), 100, theIcon, _T("示范程序"));
ShowWindow( SW_HIDE );
boolWndHadShow = FALSE;
}

---- 当 程 序 关 闭 时,需 把 图 标 从 任 务 样 状 态 区 删 除 ,  你 可
以 添 加 一 个 处 理WM_CLOSE 消 息 的 函 数 来 删 除 图 标 。通 过
ClassWizard 来 添 加 处 理WM_CLOSE 的 函 数OnClose(), 该 函 数 如 下:

void CMainFrame::OnClose()
{
// TODO: Add your message handler
code here and/or call default
MyTaskBarDeleteIcon( GetSafeHwnd(), 100 );
CFrameWnd::OnClose();
}

---- 当 用 户 把 窗 口 最 小 化 时, 你 应 隐 藏 整 个 窗 口, 所 以 要
处 理ON_SYSCOMMAND 消 息 。首 先 在MainFrm.h 添 加 函 数 说 明,如 第3
步 所 示; 然 后 在MainFrm.cpp 里 说 明 消 息 映 射 和 实 现 函 数 。消
息 映 射 如 前 面 所 示, 函 数 实 现 如 下:

void CMainFrame::OnSysCommand
( UINT nID, LPARAM lParam )
{
if ( nID==SC_MINIMIZE)
{
ShowWindow( SW_HIDE );
boolWndHadShow = FALSE;
}
else
CWnd::OnSysCommand( nID, lParam );
}

---- 5. 在InitInstance() 函 数 返 回 前,添 加 一 语 句

m_pMainWnd- >PostMessage( MYWM_SHOWAPPICONIC );

---- 它 是 发 送 一 个 自 定 义 的 消 息MYWM_SHOWAPPICONIC 使 程 序 启
动 后 隐 藏 程 序 窗 口 并 在 任 务 栏 状 态 区 显 示 小 图 标 。

---- 6. 现 在, 你 可 编 译 和 运 行 该 程 序 了 。程 序 运 行 后,点
击 任 务 栏 状 态 区 该 程 序 的 图 标 ,  系 统 会 弹 出 程 序 窗 口 , 
再 点 击 一 下 ,  又 隐 藏 了 。怎 么 样 ,  象 不 象 金 山 词 霸 ?

打开一个软件,电脑桌面的图标和任务栏就会消失一下 , 一直闪,重启了也是这样按键盘上Ctrl+Alt+Del键调出任务管理器,点'进程'找到explorer.exe 结束进程.
点左上角"文件"----新建任务----键入explorer 确定.

( 注意不要输入错了)
然后注销或重启电脑 。

C# notifyicon控件,可以对它使用showcontextmenu这个反射调用.我已经使用成功了.问题怎么知道有哪些反射?notifyicon貌似没有你那个自带的ShowContextMenu方法啊
http://msdn.microsoft.com/zh-cn/library/system.windows.forms.notifyicon_members(v=vs.90).aspx

c# notifyicon是什么控件?干什么用的?任务管理器里面显示图标用的,你程序在运行时候,任务管理器里面不是有个图标吗?

VB.NET中的NotifyIcon怎么用'点击状态栏的图标时显示窗体

PrivateSub notifyIcon1_MouseClick(ByVal sender As Object, ByVal e As MouseEventArgs)
If Me.WindowState = FormWindowState.Minimized Then
Me.WindowState = FormWindowState.Normal'还原
End If
Me.Activate()
Me.notifyIcon1.Visible = False
Me.ShowInTaskbar = True
End Sub

'程序关闭时清除状态栏图标

PrivateSub 退出ToolStripMenuItem_Click(ByVal sender As Object, ByVal e As System.EventArgs)'关闭应用程序
Me.notifyIcon1.Visible=False
Me.Close()
Application.Exit()
End Sub

C# NotifyIcon控件 用法这是我的一段代码:#region 窗体最小化到状态栏
private void MainForm_Resize(object sender, EventArgs e)
{
if (this.WindowState == FormWindowState.Minimized)
{
notifyIcon1.Visible = true;
this.Hide();
this.ShowInTaskbar = false;
}
}private void notifyIcon1_MouseDoubleClick(object sender, MouseEventArgs e)
{
if (this.ShowInTaskbar == false)
{
notifyIcon1.Visible = true;
this.ShowInTaskbar = false;
this.Show();
this.Activate();
this.WindowState = FormWindowState.Normal;
}
}
#endregion
private void notifyIcon1_MouseMove(object sender, MouseEventArgs e)
{
notifyIcon1.Text = string.Format( "QQ:" +UserHelp.userNickName+"("+UserHelp.loginId+")"+"\n声音: 开启 \n消息提醒框: 关闭 \n会话消息: 任务栏头像闪动");
}

c#中notifyIcon1有什么用?电脑右下方的图标看到没?notifyIcon就是干这个的!

C#中窗体每次加载时托盘中图标的能不能总是一个?添加notifyIcon控件以后,在每一次退出添加了notifyIcon控件的form窗体之前加上一句
notifyIcon1.Visible = false;
this.Hide();
form2 form = new form2();
form.Show();
然后再在form2中添加notifylcon,如此类推就可以实现在每一个窗体加载之前退出上一个窗体的notifyIcon控件,而在load新窗体的时候又会加载新的notifyIcon控件

C# notifyIcon问题!private void Form1_SizeChanged(object sender, EventArgs e) { if (this.WindowState == FormWindowState.Minimized) { this.Hide(); this.notifyIcon1.ShowBalloonTip(100); } } 上面用来Hide窗体 下面的notifyIcon1双击事件Show窗体 private void notifyIcon1_MouseDoubleClick(object sender, MouseEventArgs e) { this.Show(); }

C#窗体设置MDI容器并设置notifyIcon图标打开其他窗体时任务栏也蹦出图标notifyIcon本来就是托盘图表?。。∈悄母隼鲜Ω闼凳褂昧薾otifyIcon后,任务栏就不会有图表了?

VC,托盘程序,看一下代码哪里有问题,附编译结果信息用_tcscpy_s , 这个函数可以百度一下,
给你个例子
void CCaptureDlg::AddIcon()
{
NOTIFYICONDATA data=https://www.zaoxu.com/jjsh/bkdq/{0};
data.cbSize=sizeof(NOTIFYICONDATA);
CString strToolTip=_T("单击这里可以取消托盘咿");
//CString strTitle,strInfo;
strToolTip.LoadString(IDS_ICONTIP);
data.hIcon=GetIcon(0);
data.hWnd=GetSafeHwnd();

_tcscpy_s(data.szInfoTitle,8,_T("Capture")); //气泡提示标题
_tcscpy_s(data.szInfo,ARRAYSIZE(data.szInfo),_T("-_-进入托盘状态咿!"));//气泡提示信息
data.uTimeout = 1500;//超时值1.5秒,即显示1.5秒后自动退出气泡提示

_tcscpy_s(data.szTip,20,strToolTip);
data.uCallbackMessage=IDM_SHELL;//用户定义的回调消息
data.uFlags=NIF_ICON|NIF_MESSAGE |NIF_TIP | NIF_INFO;//添加 标识
data.dwInfoFlags =NIIF_INFO;
data.uID=98;

if(!Shell_NotifyIcon(NIM_ADD,&data))
MessageBox(_T("NotifyIcon"),_T("Error") ,0);
ShowWindow(SW_HIDE);
bTray=TRUE;
}

Shell_NotifyIcon的问题在Windows桌面的任务栏上有一个凹陷的区域,其中显示着系统时钟以及一些图标,这个长方形的区域便是Windows的任务栏状态区(taskbar status area) 。本文将介绍使用Borland Delphi进行任务栏状态区的编程,即怎样将应用程序的图标显示在任务栏状态区中 。

---- 实现原理

---- 任务栏状态区的图标添加、删除、以及修改是通过Windows API函数Shell_NotifyIcon来实现的,该函数是由Windows的SHELL32.DLL动态联接库提供的 。在Delphi中,Shell_NotifyIcon函数是在ShellAPI单元声明的,其

---- 函数原型如下:

---- function Shell_NotifyIcon(dwMessage: DWORD; lpData: PNotifyIconData): BOOL; stdcall;

---- 其中参数dwMessage的取值决定函数Shell_NotifyIcon所要进行的操作的类型,它的取值可以是以下三者之一:

---- NIM_ADD(值为0):在任务栏状态区插入一个图标 。

---- NIM_DELETE(值为1):从任务栏状态区删除一个图标 。

---- NIM_MODIFY(值为2):修改任务栏状态区的图标、提示信息、或者通知消息 。

---- 参数lpData 是一个记录类型(结构类型)的指针,记录类型NotifyIconData的定义如下:

NOTIFYICONDATA = https://www.zaoxu.com/jjsh/bkdq/record
cbSize: DWORD;
Wnd: HWND;
uID: UINT;
uFlags: UINT;
uCallbackMessage: UINT;
hIcon: HICON;
szTip: array [0..63] of AnsiChar;
end;
---- cbSize:NOTIFYICONDATA记录的大小 。
---- Wnd:与此状态区图标相关联的窗口句柄,此窗口将负责处理uCallbackMessage消息 。

---- uID:程序自定义的状态区图标的标识符 。

---- uFlags:这个字段指明NOTIFYICONDATA记录中的成员uCallbackMessage、hIcon和szTip这三者的哪些项的值有效 。它的取值可以是下列三者的组合(or运算):

---- NIF_MESSAGE (值为1):uCallbackMessage项包含了有效的信息 。

---- NIF_ICON(值为2):hIcon项包含了有效的信息 。

---- NIF_TIP(值为4): szTip项包含了有效的信息 。

---- uCallbackMessage:程序定义的消息标识符(32位的整数) 。当鼠标在状态区图标上移动或者点击(即,发生了鼠标事件)时,操作系统将向Wnd指定的那个窗口发送uCallbackMessage消息 。在uCallbackMessage消息中,lParam参数包含了Windows的鼠标消息的类型,而wParam参数则包含了图标标识(即uID) 。有效的鼠标消息包括以下几个:WM_LBUTTONDOWN、WM_RBUTTONDOWN、WM_MBUTTONDOWN、WM_LBUTTONUP、WM_RBUTTONUP、WM_MBUTTONUP、WM_MOUSEMOVE、WM_LBUTTONDBLCLK、WM_RBUTTONDBLCLK以及WM_MBUTTONDBLCLK 。

---- hIcon:指定一个图标句柄 。

---- szTip:显示在图标上的提示信息(少于63个字符) 。

---- Delphi中的实现

---- 通过上面的介绍中,我们不难看出,任务栏状态区的编程主要是处理两方面的工作:添加、删除、修改图标;以及处理通知消息 。对于图标的添加、删除、修改操作,可以通过调用Shell_NotifyIcon函数来实现 。而对于自定义的通知消息,我们就应该在消息循环中给予处理了 。

---- 下面的示例给出了状态区图标的添加、修改和删除操作的例子,以及图标的通知消息的基本处理框架 。

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics,
Controls, Forms, Dialogs, ExtCtrls, ShellAPI;

const
WM_TRAYNOTIFY=WM_USER+1;//定义通知消息

type
TForm1 = class(TForm)
Timer1: TTimer;
procedure FormCreate(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
procedure WndProc(var Msg: TMessage); override;
end;

var
Form1: TForm1;
nd0, nd1:NotifyIconData;
hs:array[0..9]of LongWord;

implementation
{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
begin
//加载Icon0..Icon9这10个图标资源,
并且保存它们的句柄 。
//图标Icon0..Icon9分别对应与0..9这9个数字 。
hs[0]:=LoadIcon(hInstance, 'Icon0');
hs[1]:=LoadIcon(hInstance, 'Icon1');
hs[2]:=LoadIcon(hInstance, 'Icon2');
hs[3]:=LoadIcon(hInstance, 'Icon3');
hs[4]:=LoadIcon(hInstance, 'Icon4');
hs[5]:=LoadIcon(hInstance, 'Icon5');
hs[6]:=LoadIcon(hInstance, 'Icon6');
hs[7]:=LoadIcon(hInstance, 'Icon7');
hs[8]:=LoadIcon(hInstance, 'Icon8');
hs[9]:=LoadIcon(hInstance, 'Icon9');

//填充NotifyIconData记录型变量nd0
nd0.cbSize := sizeof(NotifyIconData);
nd0.Wnd := handle;
nd0.uID := 0;
nd0.uFlags := NIF_MESSAGE or NIF_ICON or NIF_TIP;
nd0.uCallbackMessage := WM_TRAYNOTIFY;
nd0.hIcon := hs[0];
StrPLCopy(nd0.szTip, 'Hello, World!', 63);

//填充NotifyIconData记录型变量nd1
nd1.cbSize := sizeof(NotifyIconData);
nd1.Wnd := handle;
nd1.uID := 1;
nd1.uFlags := NIF_MESSAGE or NIF_ICON or NIF_TIP;
nd1.uCallbackMessage := WM_TRAYNOTIFY;
nd1.hIcon := hs[0];
StrPLCopy(nd1.szTip, 'Simon Loves Daisy', 63);

//在任务栏状态区添加图标
Shell_NotifyIcon(NIM_ADD, @nd0);
Shell_NotifyIcon(NIM_ADD, @nd1);
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var
st:SystemTime;
begin
//每秒钟更新一次图标:图标0显示秒数的十位,
图标1显示秒数的个位 。
GetLocalTime(st);
nd0.hIcon := hs[st.wSecond div 10];
nd1.hIcon := hs[st.wSecond mod 10];
//修改任务栏状态区的图标
Shell_NotifyIcon(NIM_MODIFY, @nd0);
Shell_NotifyIcon(NIM_MODIFY, @nd1);
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
//将图标从任务栏状态区删除
Shell_NotifyIcon(NIM_DELETE, @nd0);
Shell_NotifyIcon(NIM_DELETE, @nd1);
end;

//处理 通知消息
procedure TForm1.WndProc(var Msg: TMessage);
var
IconID:integer;
pt:TPOINT;
begin
if msg.Msg = WM_TRAYNOTIFY then
begin
{
在通知消息中,wParam参数为图标的uID,
lParam参数为鼠标事件的类型 。
}
iconID := msg.WParam;
//获取鼠标的在屏幕上的位置
GetCursorPos(pt);

//通知消息的处理的基本框架结构如下:
case msg.lParam of
WM_LBUTTONDOWN:
begin
//鼠标右键被按下
end;
WM_RBUTTONDOWN:
begin
//鼠标左键被按下
end;
WM_LBUTTONUP:
begin
//释放鼠标左键
end;
WM_RBUTTONUP:
begin
//释放鼠标右键
end;
WM_MOUSEMOVE:
begin
//鼠标在图标上移动
end;
WM_LBUTTONDBLCLK:
begin
//鼠标左键双击
end;
WM_RBUTTONDBLCLK:
begin
//鼠标右键双击
end;
end; //end case
end
else//调用父类的WndProc方法处理其它消息
inherited;
end;

end.

求教—vb中API函数Shell_NotifyIcon各参数作用这些常的值 , 都是windows操作系统使用的,为了能让系统识别 , 让程序正常运行,我们就只能把这些常量定义成这个值 。换句话说,这些都是微软的windows开发团队定义的,在微软提供的SDK中,包含了这些定义 。

其实关键的是那个整数值,那个常量名是不重要的,比如WM_USER = &H400 , 你完全可以改成USER_WM = &H400,或者在用到WM_USER的地方直接换成 &H400,都可以,关键在于&H400,因为小于&H400的消息 , 是系统保留的,就好像 private 这个单词,是VB的保留字,我们不是能在程序将它作为一个变量一样 。
包括那个结构体,为什么这样定义,其中的变量为什么是这个顺序 , 字符串为什么要64个字符或者说255个字符,这都是微软规定的,我们只能以这样的格式来编程,程序才能正常运行 。

如果你真想搞明白这些东西的原理,建议你学一点C++的知识,用VC编程 。

200分:vb如何在托盘设置右键菜单和弹出提示信息'--------------------------------------------------------
'模块
'在任务栏显示小图标
Option Explicit
Const MAX_TOOLTIP As Integer = 64
Const NIF_ICON = &H2'删除图标
Const NIF_MESSAGE = &H1
Const NIF_TIP = &H4
Const NIM_ADD = &H0'添加图标到任务栏提示区
Const NIM_DELETE = &H2
Const WM_MOUSEMOVE = &H200
Const WM_LBUTTONDOWN = &H201
Const WM_LBUTTONUP = &H202
Const WM_LBUTTONDBLCLK = &H203
Const WM_RBUTTONDOWN = &H204
Const WM_RBUTTONUP = &H205
Const WM_RBUTTONDBLCLK = &H206
Const SW_RESTORE = 9
Const SW_HIDE = 0
Private Type NOTIFYICONDATA
cbSizeAs Long
hwndAs Long
uIdAs Long
uFlagsAs Long
ucallbackMessage As Long
hIconAs Long
szTipAs String * MAX_TOOLTIP
End Type
Private Const WM_USER As Long = &H400
'鼠标事件
Public Enum TrayRetunEventEnum
MouseMove = &H200
LeftUp = &H202
LeftDown = &H201
LeftDbClick = &H203
RightUp = &H205
RightDown = &H204
RightDbClick = &H206
MiddleUp = &H208
MiddleDown = &H207
MiddleDbClick = &H209
BalloonClick = (WM_USER + 5)
End Enum

Private Declare Function Shell_NotifyIcon Lib "shell32.dll" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, lpData As NOTIFYICONDATA) As Long

Private nfIconData As NOTIFYICONDATA

Sub AddIcon()
nfIconData.hwnd = Form1.hwnd
nfIconData.uId = Form1.Icon
nfIconData.uFlags = NIF_ICON Or NIF_MESSAGE Or NIF_TIP
nfIconData.ucallbackMessage = WM_MOUSEMOVE
nfIconData.hIcon = Form1.Icon.Handle
nfIconData.szTip = "小小外挂(阿勇) QQ:357731659" & vbNullChar
nfIconData.cbSize = Len(nfIconData)
Call Shell_NotifyIcon(NIM_ADD, nfIconData)
End Sub

Sub DelIcon()
Call Shell_NotifyIcon(NIM_DELETE, nfIconData)
End Sub

Private Sub Form_Load() '装载
AddIcon
End Sub
Private Sub Form_Unload(Cancel As Integer)
DelIcon
End Sub

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
'气泡单击时的鼠标事件
Dim cEvent As Single
cEvent = X / Screen.TwipsPerPixelX

Select Case cEvent

Case MouseMove
'Debug.Print "MouseMove"
Case LeftUp
'Debug.Print "左键放开"
Case LeftDown
'Debug.Print "左键按下"
Case LeftDbClick
'Debug.Print "左键双击"
Form1.WindowState = 0
Form1.Show
Case MiddleUp
'Debug.Print "中间键放开"
Case MiddleDown
'Debug.Print "中间键按下"
Case MiddleDbClick
'Debug.Print "中间键单击"
Case RightUp
'Debug.Print "右健放开"
Case RightDown
'Debug.Print "右健按下"
Me.PopupMenu Me.menu
Case RightDbClick
'Debug.Print "右健双击"
Case BalloonClick
'Debug.Print "单击气泡"

End Select
End Sub

VB6.0 。当程序在托盘运行时,怎样弹出消息?新建一个模块
粘上以下代码

Option Explicit
'使用高分辨率图标所用的API
Private Declare Function LoadImage Lib "user32" Alias "LoadImageA" (ByVal hInst As Long, ByVal lpsz As String, ByVal dwImageType As Long, ByVal dwDesiredWidth As Long, ByVal dwDesiredHeight As Long, ByVal dwFlags As Long) As Long
Private Const LR_LOADFROMFILE = &H10
Private Const LR_LOADMAP3DCOLORS = &H1000
Private Const IMAGE_ICON = 1
'系统托盘
Private Declare Function Shell_NotifyIcon Lib "shell32.dll" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, lpData As NOTIFYICONDATA) As Long
Private Const NIF_MESSAGE = &H1
Private Const NIF_ICON = &H2
Private Const NIF_TIP = &H4
Private Const NIF_STATE = &H8
Private Const NIF_INFO = &H10
Private Const NIM_ADD = &H0
Private Const NIM_MODIFY = &H1
Private Const NIM_DELETE = &H2
Private Const NIM_SETFOCUS = &H3
Private Const NIM_SETVERSION = &H4
Private Const NIM_VERSION = &H5
Private Const WM_USER As Long = &H400
Private Const NIN_BALLOONSHOW = (WM_USER + 2)
Private Const NIN_BALLOONHIDE = (WM_USER + 3)
Private Const NIN_BALLOONTIMEOUT = (WM_USER + 4)
Private Const NIN_BALLOONUSERCLICK = (WM_USER + 5)
Private Const NOTIFYICON_VERSION = 3
Private Const NIS_HIDDEN = &H1
Private Const NIS_SHAREDICON = &H2
Private Const WM_NOTIFY As Long = &H4E
Private Const WM_COMMAND As Long = &H111
Private Const WM_CLOSE As Long = &H10
Private Const WM_MOUSEMOVE As Long = &H200
Private Const WM_LBUTTONDOWN As Long = &H201
Private Const WM_LBUTTONUP As Long = &H202
Private Const WM_LBUTTONDBLCLK As Long = &H203
Private Const WM_MBUTTONDOWN As Long = &H207
Private Const WM_MBUTTONUP As Long = &H208
Private Const WM_MBUTTONDBLCLK As Long = &H209
Private Const WM_RBUTTONDOWN As Long = &H204
Private Const WM_RBUTTONUP As Long = &H205
Private Const WM_RBUTTONDBLCLK As Long = &H206
Public Enum bFlag
NIIF_NONE = &H0
NIIF_INFO = &H1
NIIF_WARNING = &H2
NIIF_ERROR = &H3
NIIF_GUID = &H5
NIIF_ICON_MASK = &HF
NIIF_NOSOUND = &H10 '关闭提示音标志
End Enum
Private Type NOTIFYICONDATA
cbSize As Long
Hwnd As Long
uID As Long
uFlags As Long
uCallbackMessage As Long
hIcon As Long
szTip As String * 128
dwState As Long
dwStateMask As Long
szInfo As String * 256
uTimeoutAndVersion As Long
szInfoTitle As String * 64
dwInfoFlags As Long
End Type
'鼠标事件,在调用窗口中的move()过程中返回以下按键值,可用来进行相关操作
Public Enum TrayClick
MouseMove = &H200
LeftUp = &H202
LeftDown = &H201
LeftDbClick = &H203
RightUp = &H205
RightDown = &H204
RightDbClick = &H206
MiddleUp = &H208
MiddleDown = &H207
MiddleDbClick = &H209
BalloonClick = (WM_USER + 5)
End Enum
Public ni As NOTIFYICONDATA
' **************************************************************
'1 设置托盘一般提示
'注:MyIcon 图标既可以来源于文件,又可能来源于窗体内的某个图标
' **************************************************************
Public Sub TrayAddIcon(ByVal MyForm As Form, ByVal MyIcon, ByVal ToolTip As String, Optional ByVal bFlag As bFlag)
With ni
.cbSize = Len(ni)
.Hwnd = MyForm.Hwnd
.uID = vbNull
.uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE
.uCallbackMessage = WM_MOUSEMOVE
If TypeName(MyIcon) = "String" Then
.hIcon = LoadImage(App.hInstance, MyIcon, IMAGE_ICON, 16, 16, LR_LOADFROMFILE Or LR_LOADMAP3DCOLORS)
Else
If InStr(1, "Picture,Image", TypeName(MyIcon), vbTextCompare) > 0 Then
.hIcon = MyIcon
End If
End If
.szTip = ToolTip & vbNullChar
End With
Call Shell_NotifyIcon(NIM_ADD, ni)
End Sub
' *********************************************
'2 托盘托盘气泡提示
' *********************************************
'一、有声气泡提示
'TrayBalloon Form1, Command1.Caption & vbNewLine & Format(Date, "日期:yyyy年mm月dd日"), "系统托盘", NIIF_INFO
'二、无声气泡提示
'TrayBalloon Form1, Command2.Caption, "系统托盘", NIIF_INFO Or NIIF_NOSOUND
Public Sub TrayBalloon(ByVal MyForm As Form, ByVal sBaloonText As String, sBallonTitle As String, Optional ByVal bFlag As bFlag)
With ni
.cbSize = Len(ni)
.Hwnd = MyForm.Hwnd
.uID = vbNull
.uFlags = NIF_INFO
.dwInfoFlags = bFlag
.szInfoTitle = sBallonTitle & vbNullChar
.szInfo = sBaloonText & vbNullChar
End With
Shell_NotifyIcon NIM_MODIFY, ni
End Sub
' *********************************************
'3 移除托盘图标
' *********************************************
Public Sub TrayRemoveIcon()
Shell_NotifyIcon NIM_DELETE, ni
End Sub
'3.1删除其他程序的托盘图标
Sub TrayRemoveIcon_Ex(Hwnd As Long)
Dim TrayIcon As NOTIFYICONDATA
TrayIcon.cbSize = Len(TrayIcon)
TrayIcon.Hwnd = Hwnd
TrayIcon.uID = vbNull
Call Shell_NotifyIcon(NIM_DELETE, TrayIcon)
End Sub
' *********************************************
'4 更改托盘的提示文本
' *********************************************
Public Sub TrayTip(ByVal MyForm As Form, ByVal sTipText As String)
With ni
.cbSize = Len(ni)
.Hwnd = MyForm.Hwnd
.uID = vbNull
.uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE
.szTip = sTipText & vbNullChar
End With
Shell_NotifyIcon NIM_MODIFY, ni
End Sub
' *********************************************
'5 更改托盘的图标
' *********************************************
Sub TrayIcon(MyIcon)
' Update the tray icon.
With ni
If TypeName(MyIcon) = "String" Then
.hIcon = LoadImage(App.hInstance, MyIcon, IMAGE_ICON, 16, 16, LR_LOADFROMFILE Or LR_LOADMAP3DCOLORS)
Else
If TypeName(MyIcon) = "Picture" Then
.hIcon = MyIcon
End If
End If
.uFlags = NIF_ICON
End With
Shell_NotifyIcon NIM_MODIFY, ni
End Sub
'5 获取托盘图标的提示文本
Function TrayInfo(Wnd As Long) As String
' Update the tray icon.
With ni
.Hwnd = Wnd
.uFlags = NIF_INFO
End With
Shell_NotifyIcon NIM_MODIFY, ni
TrayInfo = ni.szTip
End Function



调用的方法如下:
TrayBalloon Form1, "当前状态:" & "导入数据完成" & "", App.Title, NIIF_INFO Or NIIF_NOSOUND

c# 窗体靠边自动收缩点任务栏图标弹布出来1 , 添加一个timer控件,直接加代码到Form1即可靠边收缩

Option Explicit

Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Private Type POINTAPI
X As Long
Y As Long
End Type
Dim p As POINTAPI

Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
Private Const HWND_TOPMOST = -1
Private Const SWP_NOMOVE = &H2
Private Const SWP_NOSIZE = &H1

Private Sub Form_Load()
SetWindowPos Me.hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE
Timer1.Interval = 100
Timer1.Enabled = True
End Sub


Private Sub Timer1_Timer()
On Error Resume Next
GetCursorPos p
If Me.Top <= 0 Then
If p.Y > Me.Height / 15 + Me.Top / 15 Or p.X > Me.Width / 15 + Me.Left / 15 Or p.X < Me.Left / 15 Then
Me.Top = 0 - Me.Height + 50
End If
If p.X > Me.Left / 15 And p.X < Me.Left / 15 + Me.Width / 15 And p.Y < 3 Then
Me.Top = 0
End If
End If

If Me.Left <= 0 Then
If p.Y > Me.Height / 15 + Me.Top / 15 Or p.YMe.Width / 15 + Me.Left / 15 Then
Me.Left = 0 - Me.Width + 50

End If
If p.XMe.Top / 15 And p.Y < Me.Height / 15 + Me.Top / 15 Then
Me.Left = 0
End If
End If

If Me.Left >= Screen.Width - Me.Width Then

If p.Y > Me.Height / 15 + Me.Top / 15 Or p.Y < Me.Top / 15 Or p.X < Me.Left / 15 Then
Me.Left = Screen.Width - 50

End If
If p.X > Screen.Width / 15 - 3 And p.Y > Me.Top / 15 And p.Y < Me.Height / 15 + Me.Top / 15 Then
Me.Left = Screen.Width - Me.Width
End If
End If

If Me.Top >= Screen.Height - Me.Height Then
If p.Y > Me.Height / 15 + Me.Top / 15 Or p.X > Me.Width / 15 + Me.Left / 15 Or p.X < Me.Left / 15 Then
Me.Top = Screen.Height + 50
End If
If p.X > Me.Left / 15 And p.XScreen.Height / 15 - 3 Then
Me.Top = Screen.Height - Me.Height
End If
End If

End Sub

2,下面的代码是VB系统托盘代码,点右下图标出来
先加模块,以下为模块代码
Option Explicit
Public Const MAX_TOOLTIP As Integer = 64
Public Const NIF_ICON = &H2
Public Const NIF_MESSAGE = &H1
Public Const NIF_TIP = &H4
Public Const NIM_ADD = &H0
Public Const NIM_DELETE = &H2
Public Const WM_MOUSEMOVE = &H200
Public Const WM_LBUTTONDOWN = &H201
Public Const WM_LBUTTONUP = &H202
Public Const WM_LBUTTONDBLCLK = &H203
Public Const WM_RBUTTONDOWN = &H204
Public Const WM_RBUTTONUP = &H205
Public Const WM_RBUTTONDBLCLK = &H206
Public Const SW_RESTORE = 9
Public Const SW_HIDE = 0
Public nfIconData As NOTIFYICONDATA
Public Type NOTIFYICONDATA
cbSize As Long
hWnd As Long
uID As Long
uFlags As Long
uCallbackMessage As Long
hIcon As Long
szTip As String * MAX_TOOLTIP
End Type
Public Declare Function ShowWindow Lib "user32" (ByVal hWnd As Long, ByVal nCmdShow As Long) As Long
Public Declare Function Shell_NotifyIcon Lib "shell32.dll" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, lpData As NOTIFYICONDATA) As Long


以下为 form_load 内代码Form

Private Sub Form_Resize()
With nfIconData
.hWnd = Me.hWnd
.uID = Me.Icon
.uFlags = NIF_ICON Or NIF_MESSAGE Or NIF_TIP
.uCallbackMessage = WM_MOUSEMOVE
.hIcon = Me.Icon.Handle
.szTip = App.Title + "(版本 " & App.Major & "." & App.Minor & "." & App.Revision & ")" & vbNullChar
.cbSize = Len(nfIconData)
End With
Call Shell_NotifyIcon(NIM_ADD, nfIconData)
End Sub
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
Call Shell_NotifyIcon(NIM_DELETE, nfIconData)
End Sub
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim lMsg As Single
lMsg = X / Screen.TwipsPerPixelX
Select Case lMsg
Case WM_LBUTTONUP
ShowWindow Me.hWnd, SW_RESTORE
End Select
End Sub

把鼠标放在任务栏的图标上,原本应该显示的说明文字被任务栏盖住了,看不见了?打开任务管理器将进程“explorer”结束,这时桌面图标和任务栏全无 。在打开任务管理器(按下“Ctrl+Alt+Del”组合键即可打开) , 点击“文件”→“新建任务”,在打开的“创建新任务”对话框中输入“explorer”,单击“确定”按钮后,稍等一下就可以见到桌面图标了,一般这样做就可以恢复了(我出现这样的问题就是这样修复的) 。

还是不行下载一个修复任务栏的小软件,打开软件选任务栏问题中的恢复到默认修复试试(还有许多选项可供选择修复) 。

任务栏修复 V1.1.1 绿色汉化版 , 请到百度搜索下载 。

在不行 , 还原系统或重装 。

VB.NET 窗体图标和任务栏图标设置问题任务栏图标就是窗体的ICON属性设置的图标,和标题栏的图标是完全一样的 。如果你想做的不一样,那就用无边框窗体,自制一个标题栏