当前位置:文档之家› VC托盘图标程序

VC托盘图标程序

VC托盘图标程序
VC托盘图标程序

用VC设计托盘图标程序

技术 2009-09-27 14:28 阅读3 评论0 字号:大大中中小小在Windows操作系统中,任务栏的右边(托盘)会常驻几个图标,如输入法切换图标、音量控制图标等,此外我们还经常遇到具有托盘图标的软件,如金山词霸、实时监测功能的杀毒软件等。这些软件在后台运行,通常不占用太多的屏幕资源,只在通知栏上放一个小小的标志,必要时我们可以通过用鼠标点击图标对其进行选单操作或激活其主窗口。有时我们自己编写的程序也希望有类似的效果,本文将详细地介绍用VC设计托盘图标程序的方法。

一、 NOTIFYICONDATA结构

NOTIFYICONDATA结构包含了系统用来处理托盘图标的信息,它包括选择的图标、回调消息、提示消息和图标对应的窗口等内容。其定义为:

typedef struct—NOTIFYICONDATA {

DWORD cbSize;

//以字节为单位的这个结构的大小

HWND hWnd;

//接收托盘图标通知消息的窗口句柄

UINT uID;

//应用程序定义的该图标的ID号

UINT uFlags;

//设置该图标的属性

UINT uCallbackMessage;

//应用程序定义的消息ID号,此消息传递给hWnd

HICON hIcon; //图标的句柄

char szTip[64]; //鼠标停留在图标上显示的提示信息

} NOTIFYICONDATA, PNOTIFYICONDATA;

该结构中,成员uFlags可以是下列的组合或其中之一:

NIF_ICON:设置成员hIcon有效

NIF_MESSAGE:设置成员uCallbackMessage有效

NIF_TIP:设置成员szTip有效

二、 Shell_NotifyIcon函数

全局函数Shell_NotifyIcon()用于在托盘上增加、删除或修改图标。其原型为:

WINSHELLAPI BOOL WINAPI Shell_NotifyIcon( DWORD dwMessage,PNOTIFYICONDATA pnid);

Pnid是上面的NOTIFYICONDATA结构的指针。

dwMessage是被传递的消息,可以是以下消息之一:

NIM_ADD:增加图标

NIM_DELETE:删除图标

NIM_MODIFY:修改图标

三、托盘图标程序设计示例

首先我们用AppWizard创建一个不基于文档和视图结构的应用程序Tray。我们并不想在应用程序启动时显示主窗口,所以需要删除应用程序类CTrayApp中成员函数InitInstance()的以下两句代码:

pFrame-〉ActivateFrame();

pFrame-〉ShowWindow(SW_SHOW);

在CMainFrame类中加入NOTIFYICONDATA结构的保护成员变量m_tnid,并在其OnCreate 函数中return语句前加入生成托盘图标的代码:

m_tnid.cbSize=sizeof(NOTIFYICONDATA);

m_tnid.hWnd=this-〉m_hWnd;

m_tnid.uFlags=NIF_MESSAGE|NIF_ICON|NIF_TIP;

m_tnid.uCallbackMessage=MYWM_NOTIFYICON;

//用户定义的回调消息

CString szToolTip;

szToolTip=_T("托盘图标实例");

_tcscpy(m_tnid.szTip, szToolTip);

m_tnid.uID=IDR_MAINFRAME;

HICON hIcon;

hIcon=AfxGetApp()-〉LoadIcon(IDR_MAINFRAME);

m_tnid.hIcon=hIcon;

::Shell_NotifyIcon(NIM_ADD,&&m_tnid);

if(hIcon)::DestroyIcon(hIcon);

返回消息的ID应在主框架类的头函数中定义:

#define MYWM_NOTIFYICON WM_USER+1

为了处理图标返回消息,如鼠标左键双击、鼠标右键单击消息,我们重载WindowProc()函数。此外,我们还希望在主框架窗口最小化时图标不在任务栏的空白区出现,在此函数中同时作相应处理。

LRESULT CMainFrame::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)

{

switch(message){

case MYWM_NOTIFYICON:

//如果是用户定义的消息

if(lParam==WM_LBUTTONDBLCLK){

//鼠标双击时主窗口出现

AfxGetApp()-〉m_pMainWnd-〉ShowWindow(SW_SHOW);

}

else if(lParam==WM_RBUTTONDOWN){ //鼠标右键单击弹出选单

CMenu menu;

menu.LoadMenu(IDR_RIGHT_MENU); //载入事先定义的选单

CMenu pMenu=menu.GetSubMenu(0);

CPoint pos;

GetCursorPos(&&pos);

pMenu-〉TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON,pos.x,pos.y,AfxGetMainWnd());

}

break;

case WM_SYSCOMMAND:

//如果是系统消息

if(wParam= =SC_MINIMIZE){

//接收到最小化消息时主窗口隐藏

AfxGetApp()-〉m_pMainWnd-〉ShowWindow(SW_HIDE);

return 0;

}

break;

}

return CFrameWnd::WindowProc(message, wParam, lParam);

}

为使应用程序退出时图标消失,映射WM_DESTROY消息,在OnDestroy()函数中加入:

::Shell_NotifyIcon(NIM_DELETE,&&m_tnid);

至此,托盘图标程序的常规功能我们均已实现。我们还可以通过Shell_NotifyIcon()函数的调用实现不同状态下图标的改变。

本程序在VC++ 6.0、Windows 98/2000 Professional下调试通过.

================================================================

================================================================ NOTIFYICONDATA m_traydata;

m_traydata.hIcon=AfxGetApp()->LoadIcon(IDI_ICON1);

m_traydata.hWnd=m_hWnd;

char* m_str="系统管理";

strncpy(m_traydata.szTip,m_str,strlen(m_str)+1);

m_traydata.uCallbackMessage=WM_TRARMESSAGE;

m_traydata.uFlags = NIF_ICON|NIF_MESSAGE|NIF_TIP;

WM_TRARMESSAGE是自定义的消息

在afx_msg void OnTrayMessage(WPARAM wParam, LPARAM lParam);

在MESSAGE_MAP中添加ON_MESSAGE(WM_TRARMESSAGE,OnTrayMessage)

在OnSysCommand(UINT nID, LPARAM lParam) 中添加

else if ((nID&0xFFF0)==SC_MINIMIZE) {

ShowWindow(SW_HIDE);

Shell_NotifyIcon(NIM_ADD,&m_traydata);

}

再编写OnTrayMessage(WPARAM wparam,LPARAM lparam)

{

if (lparam==WM_LBUTTONDOWN)

{

ShowWindow(SW_RESTORE);

}

else if (lparam==WM_RBUTTONDOWN)

{

CPoint m_point;

::GetCursorPos(&m_point);

CIconMenu* m_tempM=(CIconMenu*)m_trayM.GetSubMenu(0);

m_tempM->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON,m_point.x,m_point.y,Af xGetApp()->m_pMainWnd,TPM_LEFTALIGN);

}

}

程序最小化到托盘

VC++6.0中实现将应用程序的图标加入到Windows的系统托盘中(就是为应用程序在桌面右下角添加一个图标,和QQ类似)有位老兄说我乱贴,可能这位老兄已经看得眼花缭乱了,Shell_NotifyIcon 是一个Windows SDK的一个函数,只要你在windows下编程,不管你是BCB、VC、VB,都可以调用它来实现托盘图标,只是调用方法不同罢了。 常常能见到一些优秀的软件在运行后会将其应用程序图标加入到系统托盘中。如果能将自己编写的应用程序的图标也加入到系统托盘中,将会使你的程序显得很有专业水准。其实这并不困难,与系统托盘通信的函数只有一个: Shell_NotifyIcon (UINT message, NOTIFYICONDATA &m_nid); 首先看一下该函数的两个参数。 第一个参数message可以取以下值:NIM_ADD 向托盘中加入一个图标; NIM_MODIFY 修改托盘中的图标;NIM_DELETE 从托盘中删除一个图标; 第二个参数m_nid是NOTIFYICONDATA结构的一个引用。该结构的原型如下: typedef struct _NOTIFYICONDATA { DWORD cbSize;// 结构的大小,必须在程序中给出 HWND hWnd; //是你程序中将要接收托盘消息的窗口句柄 UINT uID; // 应用程序中定义的托盘图标ID,此参数用作标识 UINT uFlags; //设置属性,低三位有意义,0--7,如下: //第一位//#define NIF_MESSAGE 0x1 // uCallbackMessage参数有效 //第二位//#define NIF_ICON 0x2 // hIcon参数有效 //第三位//#define NIF_TIP 0x4 // szTip参数有效UINT uCallbackMessage; // 自定义的消息ID值,一定不要与以有的消息ID相重。 HICON hIcon; //显示在系统托盘上的Icon的句柄,可以为系统的IDI_WINLOGO等 CHAR szTip[64]; // 用于图标显示的提示字符串 } NOTIFYICONDATA; 为了接收到来自托盘的通知消息你可以将uCallbackMessage设定为你所定义的消息ID值,同时设定NIF_MESSAGE标志。这样当用户在你的托盘图标上移动或按下鼠标时,Windows将发出消息:该消息的messageID是你在uCallbackMessage中定义的值;wParam是你定义的uID值;而lParam是鼠标事件(如WM_LBUTTONDOWN),这样你的应用程序就能响应该事件了。因此,为了将自己的应用程序加入到系统托盘中,首先得建立一处理托盘通知消息的窗口对象,然后将窗口对象与你自己的托盘通知消息联系起来并建立相应的托盘通知消息映射机制,以便你的窗口对象能处理相应的事件。可以看到结构体NOTIFYICONDATA中,其成员变量hWnd,uID,uFlags均用于在窗口对象与你自己的托盘通知消息之间建立联系,而成员变量uCallbackMessage则必须是对应于你的窗口对象的托盘通知消息ID值。于是要完成的工作有: (1)建立一处理托盘通知消息的窗口对象; (2)建立一结构体NOTIFYICONDATA变量,并给变量的相应域赋值以在托盘通知消息与窗口对象之间建立联系; (3)建立相应的托盘通知消息映射机制; (4)调用Shell_NotifyIcon函数以在系统托盘中加入、修改或删除图标; (5)当然别忘了在你的窗口对象中编写相应的事件响应函数。

任务栏右下角usb图标不见了怎么办

任务栏右下角usb图标不见了怎么办 一、在先将闪存插到USB接口,然后在Windows中用鼠标右键单击“我的电脑”图标,依次展开“属性→硬件→设备管理器→磁盘驱动器”,找到“USB Flash Drive USB Device”(不同品牌的闪存名称可能不同),然后双击它打开“USB Flash Drive USB Device属性”对话框。切换到“策略”选项卡,选中“为提高性能而优化”,单击“确定”退出就可以. 以上的方法在我的机子上无法实现。 二、通过Windows 2000操作系统中提供的“添加/删除硬件”的方法来达到目的,具体的操作步骤如下: 1.在系统桌面上用鼠标依次单击选择“开始→设置→控制面板”。 2.在随后出现的窗口中双击"添加/删除硬件" 图标,在随后出现的"添加/删除硬件向导"窗口中单击"下一步"按钮。 3.接着在出现的窗口中选中"卸掉/拔掉设备" 选项,然后单击"下一步"按钮。 4.再在弹出的窗口中选中"拔出/弹出设备"选项,然后单击"下一步"按钮。 5.在"硬件设备"框中选中"USB Mass Storage Device"项并单击"下一步"按钮。 6.接着再选中"USB Mass Storage Device"项并单击"下一步"按钮。 7.最后单击"完成"按钮即可。 这种方法也麻烦。 简单的方法,从c盘找到这个文件 c:\windows\system32\systray.exe (98系统) c:\WINNT\system32\systray.exe (Win2K、WinXP系统) 然后把它放到启动里面,也就是每次启动再次执行一遍,usb图标的问题就解决了。 也可以在注册表里设置: [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run] "SysTray"="%WINDIR%system32\\systray.exe" 打开注册表→开始→运行→Regedit→依次展开 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run 在右边空白区域单击右键→新建→字符串值→Systray.exe→再在新建的Systray.exe上单击右键→修 改→在数据数值里填上C:\WINDOWS\system32\systray.EXE 重起! 试试吧~

钢托盘设计及优点

钢托盘设计及优点 导语:我们在平常的运输和搬运过程中最常见的工具就是托盘,它可以帮助我们运送货物,而传统的木制托盘因为价格便宜,所以是最为常见的托盘工具。但是随着经济的发展,我们运输的东西也在不断地改变,木制托盘因为承载能力较弱,被逐渐淘汰,取而代之的就是钢托盘,不仅耐用还能加大承货量,下面小编将详细介绍钢托盘设计优点及用途。 简介:钢托盘又叫金属托盘或铁托盘(SteelPallet) 托盘(Pallet)是用于集装、堆放、搬运和运输的放置作为单元负荷的货物和制品的水平平台装置。一般用木材、金属、纤维板制作,便于装卸、搬运单元物资和小数量的物资。托盘的种类主要有木质的,塑料的,金属等材料木质是现在使用最广的,因为其价格便宜、结实;塑料托盘比较贵点,载重也较小,但是随着塑料托盘制造工艺的进步,一些高载重的塑料托盘已经出现,正在慢慢的取代木质托盘。金属托盘结实耐用,缺点是易腐蚀,价格较高。 钢托盘的优点: 1、承载能力在托盘中是最强的。 2、100%环保,可以回收再利用,资源不浪费。 3、表面作防滑处理,周边作包边处理。底盘坚固,整体质量轻而钢性强。具备稳定的包装性能; 4、防水,防潮及防锈;与木托盘相比有环保优势(如木托盘容量滋生虫害)。 5、与塑料托盘相比有强度、耐磨、耐温及价格优势。 6、特别是用于出口时,不需要熏蒸、高温消毒或者防腐处理,符合国际环保法规; 7、灵活(四方向的插入设计,无形中提高空间利用和操作的方便性,而且其坚固的底版设计亦符合输送滚输和自动包装系统使用)等。

钢托盘的设计 根据货架的尺寸,如L,W来设计,通常托盘最好与柱片保持5-10公分间距,可以适当放大。根据L.W来确定托盘的长度和宽度,确定进叉方向;托盘高度可以定制,常规高度125.130.150等,可以根据客户需要定制。托盘承载是货架载荷,根据货架一层承载确定。面板可以选用内卷槽,或者C型钢,以及矩管等等。腿,可以用矩管或者冷板折弯,或者内卷槽,C型钢制作。采用C02保护焊焊接,去渣,打磨,之后酸洗磷化,或者抛丸去油去锈,之后喷塑处理。 用途: 钢托盘(钢制托盘)是传统木托盘、塑料托盘的理想换代产品,适合叉车作业,存取货物方便. 主要用于多用途的地面存储、货架存储及货物联运、周转等超轻金属托盘系列。集装、堆放、搬运和运输的放置作为单元负荷的水平平台装置。是现在工业重要的仓储与运输辅助设备之一。主要材料为钢材或镀锌钢板,经专用设备成型,各种型材互相支撑,铆钉连接加强,再经CO2气体保护焊焊接而成。 在钢托盘还没有出现的时候,雨季天气可能是大家最怕的时候,因为木制托盘如果经常遇雨就会被腐蚀,变得不结实,而钢托盘相较于木托盘来说,更加坚固,不怕风吹雨打,更能承载较重的货物。因此,钢托盘将逐渐取代木托盘成为主流,但是因为制作成本较高,钢托盘的价格相较木托盘来说也较高,但是小编相信随着我们科技的不断发展,钢托盘的价格也会慢慢变低!

pb中实现系统托盘

pb 程序托盘化(taskbar status area) 一、涉及的API //托盘程序需要的API 1、shell_notifyicon(long dwmessage,ref nstr_notifyicondata lpdata) 功能:创建、修改、删除托盘图标 参数:dwmessage 0:创建托盘图标;1:修改托盘图标;2:删除图标 lpdata 结构体 结构体定义: long cbsize 结构体长度,固定为88; long hwnd 图标消息接收窗口; long uid 任务栏图标对应的应用程序定义的标识符; long uflags 结构体成员有效标志,1:hicon有效,2:ucallbackmessage有效,4:sztip有效,可以组合 long ucallbackmessage 返回给窗口hwnd的消息 long hicon 图标 character sztip[64] 鼠标移动到图标时显示的文字 pb声明: function integer shell_notifyicon (long dwmessage,ref nstr_notifyicondata lpdata) library "shell32" alias for "Shell_NotifyIconA" 2、loadimage(long hinst,string lpszName,long uType ,long cxDesired ,long cyDesired ,long fuLoad )

功能:装载图片 参数:hinst 包含要装载图片的模块实例的句柄,如果是OEM图片,则此参数为0 lpszName 图片文件名(带路径) uType 装载图片的类型,0:bitmap,2:cursor,1:icon cxDesired utype为1,2时表示图像的宽度(象素),如果utype为0则必须设为0 cyDesired utype为1,2时表示图像的高度(象素),如果utype为0则必须设为0 fuLoad 设为0 pb声明: function long loadimage (long hinst,string lpsz,long un1,long n1,long n2,long un2) library "user32" alias for "LoadImageA" 3、destroyicon(long hicon) 功能:销毁图片 参数:hicon 图片句柄 pb声明: function long destroyicon (long hicon) library "user32" alias for "DestroyIcon" 4、CreatePopupMenu() 功能:创建一个弹出菜单 pb声明:

VB6.0实现窗体最小化时到系统托盘区

VB6.0将窗体最小化到系统托盘区 使用说明:共有两个方法,经个人实际测试(环境:xpsp3 vb6.0)第二个控件法最有效果,第一个方法在启动时确实在右下角,但是弹出后再次最小化就跑到屏幕左下角了,无法最小化,不知道是啥原因,希望大家改进代码。本人力荐第二种小巧有效简单的方法。 ---------------------------------------------------------------------------------------------------- 方法一 托盘,亦即程序最小化后程序图标隐藏到屏幕右下角的任务栏里。这种最小化方法比普通的最小化节约空间,因此备受欢迎,很多软件都具有这样的功能。在VB中,可用API 函数来实现托盘功能,但比较复杂,不太好操作。 相对而言采用一种非常简单易行的方法:控件法,才是最适合最方便的。下面要使用已被微软封装好的控件:csystray1(名称可自定)。 说到控件,大家可能要皱眉头了:去哪找呀?放心!这个控件就躺在你的VB安装盘里(目录为:COMMON\TOOLS\VB\UNSUPPRT\SYSTRAY)!不过,得处理一下:请在Tool 文件夹里查找一个名叫Systray的目录,将它拷贝到硬盘,用VB打开该目录下的工程,必要的话可作些改进(如更换图标、添加功能等),然后编译成ocx控件,可以随意命名。为方便使用起见,最好编译到Windows\System目录下。好了,现在我们就可以在我们的程序中使用此控件来轻松实现托盘功能了。vb中添加控件的方法就不用我说了吧? ---------------------------------------------------------------------------------------------------------- 控件的属性和事件浅析: 该控件的InTray属性是用来设置是否显示在托盘中,True为显示在托盘,False为不显示; 该控件的TrayIcon属性是在托盘中显示的图标式样; 该控件的TrayTip属性是鼠标移动到该控件上面时,显示的提示文字; 该控件的重要事件是几个我们常用的鼠标事件:按下、放开、移动、双击,编程时就是利用这些事件达到在任务栏中控制程序的目的。 ------------------------------------------------------------------------------------------------------- 源代码如下: '使程序最小化时显示到系统托盘 Private Sub Form_Resize() If Me.WindowState = 1 Then '如程序为最小化则—— cSysTray1.InTray = True '隐藏到任务栏 Me.Visible = False '让程序界面不可见 End If End Sub '点击托盘图标后,让程序窗体显示出来 Private Sub CsysTray1_MouseDown(Button As Integer, Id As Long) Me.WindowState = 0 '程序回复到Normal状态 Me.Visible = True '从任务栏中清除图标 cSysTray1.InTray = False '令程序界面可见

c最小化托盘

(一)原理 程序实现:最小化时隐藏至托盘,双击显示窗口,右键弹出快捷菜单“退出”并添加了响应函数。 1、托盘化的原理:首先要将窗口隐藏,然后在右下角托盘中绘制图标。 2、恢复的原理:将窗口显示,再将托盘中的图片删除。 (二)总体程序实现 1、首先建立一个基于对话框的MFC程序"CTrayDlg"。 然后在TrayDlg.h文件里加入自定义消息WM_SHOWTASK: #define WM_SHOWTASK (WM_USER + 0x100)//一般数值大于 100//{{AFX_MSG(CTrayDlg) afx_msg LRESULT OnShowTask(WPARAM wParam,LPARAMlParam);//}}AFX_MSG DECLARE_MESSAGE_MAP() 2、在TrayDlg.cpp文件里加入如下代码: BEGIN_MESSAGE_MAP(CTrayDlg, CDialog) //{{AFX_MSG_MAP(CTrayDlg) 中间加入消息声明: ON_MESSAGE(WM_SHOWTASK,OnShowTask) //}}AFX_MSG_MAP END_MESSAGE_MAP() 3、在CTrayDlg的::OnSysCommand(UINT nID, LPARAM lParam)函数体中增加一个命令响应:

if(nID==SC_MINIMIZE) ToTray();//最小化到托盘的函数 (三)具体函数内容 1、最小化到托盘函数 TrayDlg.h中添加函数声明: voidToTray(); TrayDlg.cpp中定义函数体: voidCTrayDlg::ToTray() { NOTIFYICONDATAnid; //NOTIFYICONDATA结构包含了系统用来处理托盘图标的信息, //它包括选择的图标、回调消息、提示消息和图标对应的窗口等内容。 nid.cbSize=(DWORD)sizeof(NOTIFYICONDATA);//以字节为单位的这个结构的大小 nid.hWnd=this->m_hWnd;//接收托盘图标通知消息的窗口句柄 nid.uID=IDR_MAINFRAME;//应用程序定义的该图标的ID号 nid.uFlags=NIF_ICON|NIF_MESSAGE|NIF_TIP ;//设置该图标的属性 nid.uCallbackMessage=WM_SHOWTASK;//应用程序定义的消息ID号,此消息传递给hWnd nid.hIcon=LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_MAINFRA ME));//图标的句柄 strcpy(nid.szTip,"我的托盘我作主");//鼠标停留在图标上显示的提示信息Shell_NotifyIcon(NIM_ADD,&nid);//在托盘区添加图标de函数,函数说明见文章附录

电脑右下角的图标不见了怎么办

电脑桌面右下角输入法图标不见了怎么办 最近看到很多朋友都在反映电脑右下角的图标不见了打字不方便了不习惯使用ctrl+shift倒是可以切换输入法,没有输入法图标的提示,老是不知道当前处于哪种输入法状态。那么输入法图标不见了怎么办呢?今天就教大家一种方法让他恢复回来 第一种解决输入法图标不见了方法:任务栏单击鼠标右键,弹出快捷菜单,把鼠标移动到工具栏”上,会弹出子菜单,看看其中的语言栏”有没有被选中,如果没有选中,单击选中“语言栏”一般会输入法图标就会出现在桌面右下角了 第二种解决输入法图标不见了方法:依次单击“开始→设置→控制面板”打开控制面板,控制面板中单击“日期→时间→语言和区域设置”单击“语言和区域设置”弹出“语言和区域设置”对话框,单击“语言”标签,文字服务和输入语言”下单击“详细信息”按钮,弹出“文字服务和输入语言”对话框,单击“高级”标签,系统配置”下,把“关闭高级文字服务”前面的对号取消(看到下面的注释了没有,选中“会关闭语言栏”单击“确定”按钮,输入法图标就回来了 第三种解决输入法图标不见了方法:点“开始→运行”键入“msconfig单击“确定”或回车,运行“系统配置实用程序”启动”里把“Ctfmon.ex选中,单击“确定”然后注销或重新启动应该就可以了这是因为Ctfmon.ex控制Alternative User Input Text Processor TIP和Microsoft Offic语言条,提供语音识别、手写识别、键盘、翻译和其它用户输入技术的支持。这个程序没有启动也会造成输入法图标不显示。 提示:没有输入法图标,用快捷键一样可以操作输入法。Ctrl+Space空格键)中、英文输入法之间切换;按Ctrl+Shift组合键可以依次显示系统安装的输入法。 再补充几种方法: 打开“控制面板”依次选择“区域和语言选项”->语言”依次单击“详细信息”->语言栏”按钮,打开的语言栏设置”对话框中选中“桌面上显示语言栏”选项。这时桌面会出现语言栏,单项击右上角的最小化按钮,输入法图标就回到任务栏中去了 如果你语言栏这一项打不开,请执行以下操作: 打开“控制面板”依次选择“区域和语言选项”->语言”依次单击“详细信息”->高级”按钮,"高级"设置界面中,将"系统配置'下面的"关闭高级文字服务"前面的勾去掉,再点"应用"就可以在设置”界面进行语言栏设置了 管理输入法切换的那个托盘图标,其实也是一个程序,就是internat.ex 位于windowssystem32 下,双击运行它右下角立即出现令你兴奋的图标了然后右击输入法图标属性钩选"启用任务栏上的指示器"这样不但治标,而且治本—以后开机,一度丢失的输入法图标重现! 对于Windows XP系统,只需单击“开始”-运行”然后在打开一栏中输入ctfmon回车,重新启动系统后,会发现输入法图标重新出现了而且所有安装的输入法全部都会显示出来,但唯独不能用键盘在不同的输入语言之间切换。 解决办法是右键单击输入法图标,再依次单击“设置”->键设置”->更改按键顺序”按纽,然后

托盘U型架设计指导书

托盘U型架设计总结更改记录 托盘U型架设计总结 SGE项目托盘U型架的图纸中部分关键尺寸没有给出精度要求,个别尺寸精度要求又过于严格,增加了加工和装配的难度,在托盘设计时也没有充分考虑到线上冷试机对托盘的要求。另外由于应力变形,造成实物无法达到图纸的要求,综上对托盘U型架进行如下整改。 1.问题: U型架与垫板通过定位销连接,定位销位置度公差为±0.02mm。由于U型架是 铸件,加工后出现残余应力变形,使得这个公差难以保证,导致垫板装配到U型架上很困难。 分析:工件的位置精度是通过U型架上的工件定位销保证的,而垫板上的工件定位销所通过的孔的直径比定位销的直径大1mm,也即是垫板上的螺栓孔位置度公差不超过±0.5mm就不会影响到工件位置精度。所以取消U型架与垫板之间定位销,同时对螺栓孔给出位置尺寸公差±0.1mm,这样既便于加工又不会影响托盘使用精度。 整改:U型架与垫板取消定位销,保证螺栓孔位置度公差±0.1mm (U型架的结构比较复杂,所以上面的孔是采用加工中心加工出来的,一般加工中心的加工精度为± 0.03mm,加工完成后U型架产生应力变形也能保证±0.1mm)。

2.问题:目前U 型架图纸上工件定位销孔的位置度公差为±0.02mm ,二次定位销孔的位置度公差为±0.02mm ,工件定位销孔与二次定位销孔位置度公差为±0.02mm 。虽然U 型架采用加工中心加工,保证这样的精度也很困难。另外由于U 型架残余应力变形,导致位置度公差继续加大。通过对SGE 已加工完成的U 型架成品进行批量检测可以得出,一百件U 型架成品中,U 型架工件定位销孔的位置度公差在±0.05mm 以内的占70%,二次定位销孔的位置 定位销孔取消

Win7如何将MSN图标显示在系统托盘处

Win7如何将MSN图标显示在系统托盘处 MSN作为一款最流行的即时通讯工具软件,无论是好友聊天、同事交流、或是客户沟通多数时候都需要依靠它的帮忙,于是该软件也成为了许多电脑用户装机必备的软件之一。作为一名MSN的忠实用户,登陆MSN已经成为了每天开机后必做的第一件事情。 自从安装了全新的win7操作系统之后,原本在系统托盘处的MSN图标就消失了,打开Windows7的通知区域的图标管理窗口中也没有发现MSN的影子,为了方便使用只能在全新的任务栏上添加了一个MSN的大图标。原本一直在屏幕右下角的MSN小人图标,突然跑到了任务栏上虽说显眼了不少,但每次下意识的总是去屏幕右下角寻找早已习惯的MSN,结果发现它已经不在这个地方了。一次次地无功而返让我决定还是要把MSN放回右下角的系统托盘处,使用习惯既然不好改索性不改了。经过多番尝试终于成功地让MSN小图标回到了原位,非常兴奋,现在就把操作步骤分享给大家,如果你也与小编一样有着同样的苦恼,现在就马上动手找回自己的使用习惯吧! 首先,打开Windows开始菜单找到Windows Live Messenger的快捷方式图标,然后鼠标右键点击选择打开其“属性”窗口。找到其中的“兼容性”标签,然后重新为其指定兼容模式运行,这里我选择了Windows vista SP2,然后确定重启系统。 以兼容模式启动WLM 现在从win7系统托盘处打开显示隐藏的程序就可以看到MSN的小图标了,此时想要让其一直显示在托盘处就非常容易了。打开Windows 7操作系统的通知区域的图标管理窗口,将MSN设置为显示图标和通知,确定完成之后MSN小图标就真的重现出现在原来的位置了。

VC编程-隐藏某程序托盘的图标

苦苦寻找的隐藏托盘图标的方法,今天终于搞定,献给大家 #include #include #include void ShowTrayIcon(char szIcon[],BOOL show) { HWND hWnd,hWndPaper; unsigned long lngPID; long ret,lngButtons; HANDLE hProcess; LPVOID lngAddress; long lngTextAdr,lngHwndAdr,lngHwnd,lngButtonID; char strBuff[1024]={0}; char*str=NULL; char*pp=NULL; hWnd=FindWindow("Shell_TrayWnd",NULL); hWnd=FindWindowEx(hWnd,0,"TrayNotifyWnd",NULL); hWndPaper=FindWindowEx(hWnd,0,"SysPager",NULL); if(!hWndPaper) hWnd=FindWindowEx(hWnd,0,"ToolbarWindow32",NULL); else hWnd=FindWindowEx(hWndPaper,0,"ToolbarWindow32",NULL); ret=GetWindowThreadProcessId(hWnd,&lngPID); hProcess=OpenProcess(PROCESS_ALL_ACCESS |PROCESS_VM_OPERATION |PROCESS_VM_READ |PROCESS_VM_WRITE, 0, lngPID); lngAddress=VirtualAllocEx(hProcess,0,0x4096,MEM_COMMIT,PAGE_READWRI TE); lngButtons=SendMessage(hWnd,TB_BUTTONCOUNT,0,0); for(int i=0;i

托盘设计

?D?D关于我国托盘应用现状与发展的建议 孟国强孙轲 一般意义上的托盘通常是指可在联运过程中通用的平托盘。托盘作为一种机械化和单元化用具从十九世纪下半叶在欧美地区推行开始。距今已有百余年的历史。随着公路、铁路、水运、航空运输、多式联运等多种运输方式日趋成熟,联运平托盘的应用越来越广泛,托盘运输已成为全球的与集装箱运输、驼背运输并驾齐驱的三种运动方式之一,受到了世界各国的高度关注与重视。据中国物流信息中心发布的数据,目前我国社会物流总成本,提高物流运作效率,推进托盘的标准化和社会化应用是一个不可忽视的重要环节。 托盘应用水平是现代物流发的重要标志 托盘化作业是迅速提高托运效率。控制物流管理天字第一号的有效手段。 一般来说,一个国家托盘的拥有问题是衡量这个国家物流现代化运作水平高低的标志之一。有关资料显示,美国的托盘拥有问题约为15亿-20亿个,人均占有7-8个;日本的托盘拥有问题已10接近亿,人均占有4-5个;韩国国内托盘的应用状况与邻国日本相似,拥有问题也非常大,人均占有1.1个;澳大利亚、欧洲等国家和地区的托盘化运输应用也非常广泛。与国外相比,我国托盘应用水平的差距很大,据有关行业组织调查,截止到2002年底,我国托盘拥有问题保守的估计约为5000-7000万个。根据这个统计,即使每年以2000万个托盘的速度增加,到2004年底我国托盘拥有问题也不过1亿个左右,人均不到0.1个。

从使用情况看,我国绝大多数托盘都没有形成一个顺畅合理的周转流通机制。托盘的使用范围仅限于仓库内部和运输环节之间的搬运作业,即便是从事物流服务的企业,托盘也仅限于企业内部周转。由于产品从生产商、分销商、零售商到最终用户的供应链过程中要更换数次托盘来实现运输和存储,经过多次倒换托盘,极大地降低了运作效率,使产品附加成本大为增加。目前我国除规模较大、经营管理水平较先进的生产企业外,一般企业的物料搬运费所占产品总成本的比例高达40%左右,这不能不说与我国托盘应用水平较低有极大关系。 据国外托盘权威组织公布的数字表明,一个托盘从投入使用到报废,在承载的产品流通过程中,可平均节约贮存、装卸和运输费用500多美元,相当于其自身成本的几十倍,但是需要有一个前提条件,即托盘必须在全社会范围内多次循环使用。我国托盘使用过程中的一个突出矛盾是,用于产品流通的托盘,大部分随着产品权的转移便结束了其使用寿命,基本上都是一次性的,这就造成了许多生产企业每年不得不重新启动大量资金用于托盘的制造、购买和使用,这部分费用附加在所承载的商品价值上,商品成本大大。由于托盘应用主要是限制在企业内部作业范围内,目前我国托盘的循环利用率非常低,发展托盘社会化应用的步伐十分缓慢。 在韩国,为提高托盘的利用率,政府采取对使用者给予补偿的办法,大力提倡使用不易损坏、原料可以再生的塑料托盘。我国木质托盘约占托盘总量的90%,塑料托盘约占8%,钢制、塑木以及其它材质的托盘约占2%,而一棵成材大树最多只能制造6个标准托盘。我国企业所以大量生产和使用木制托盘,主要原因是钢制和塑料材质的托盘价格偏高,如果不能反复循环使用,企业边际成

隐藏或显示托盘图标

'éù?÷?¨ò? Option Explicit Private Const WM_USER = &H400 Private Const TB_BUTTONCOUNT = (WM_USER + 24) Private Const TB_HIDEBUTTON = (WM_USER + 4) Private Const TB_GETBUTTONTEXTA = (WM_USER + 45) Private Const TB_AUTOSIZE = (WM_USER + 33) Private Const MEM_COMMIT = &H1000 Private Const MEM_RESERVE = &H2000 Private Const MEM_RELEASE = &H8000 Private Const PAGE_READWRITE = &H4 Private Const PROCESS_VM_OPERATION = (&H8) Private Const PROCESS_VM_READ = (&H10) Private Const PROCESS_VM_WRITE = (&H20) Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hwnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long Private Declare Function VirtualAllocEx Lib "kernel32.dll" (ByVal hProcess As Long, lpAddress As Any, ByRef dwSize As Long, ByVal flAllocationType As Long, ByVal flProtect As Long) As Long Private Declare Function VirtualFreeEx Lib "kernel32.dll" (ByVal hProcess As Long, lpAddress As Any, ByRef dwSize As Long, ByVal dwFreeType As Long) As Long Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hWnd As Long, lpdwProcessId As Long) As Long Private Declare Function ReadProcessMemory Lib "kernel32" (ByVal hProcess As Long, lpBaseAddress As Any, lpBuffer As Any, ByVal nSize As Long, lpNumberOfBytesWritten As Long) As Long Private Declare Function WriteProcessMemory Lib "kernel32" (ByVal hProcess As Long, lpBaseAddress As Any, lpBuffer As Any, ByVal nSize

如何隐藏任务栏右下角的图标

如何隐藏任务栏右下角的图标 地址栏右键-属性-自定义-把不想要的设成隐藏 开始-->运行-->gpedit.msc 左面分级展开 用户配置-->管理模板-->任务栏和开始菜单 右面倒数第三个 隐藏通知区域 将这个配置成启用 重新启动计算机 巧妙删除电脑右下角任务栏启动图标方法 运行注册表进入HKEY_LOCAL_MACHINEsoftwareMicrosoftwindowscurrent VersionRun 主键分支其中:intrnat.ext为En图标 systemtray 为小喇叭图标 一个朋友问了这个问题。其实就是隐藏系统托盘。 本来这也算不上什么问题,因为WinXP等系统就提供这样的功能。 在Windows XP中,你可以设置个性化的系统托盘图标显示情况。 在任务揽上点击鼠标右键,选择属性,选中隐藏不活动的图标,点击自定义按钮,接着会显示一个新的窗口,在这个窗口中你可以设置每个系统托盘图标的显示和隐藏情况:不活动时隐藏,总是隐藏,总是显示。选中一个你想要设置的程序的图标,右侧的行为栏目下降会出现一个下拉菜单,在这里你可以按照自己的需要设置显示或者隐藏的方式。 可是这位老兄的想法并不仅仅如此,他不想别人通过同样的方法再将图标找出来,于是我又告诉他:用编辑注册表更改,永久隐藏而且可以用于他的WIN2000 。

方法是在注册表: [HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionPoliciesExplorer] 增加"NoTrayItemsDisplay"=dword:00000001(隐藏系统托盘图标)。 问题又来了。他不想全部隐藏系统托盘,而只是仅仅想隐藏其中之一。比如PEER,他是激活账户,每天可以坐等银子自动地跑到他的腰包中。 这是个比较麻烦的问题。 在这个项下: [HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorerTrayNotify] "IconStreams"键值储存着当前系统托盘图标的情况,但这是一个十六进制数,每个系统又都不一样,因此无法提供一个常规的编辑方法。 所以给他两个建议: 一是我在前面说的,这样就挺好,没必要一定隐藏得那么深。 二是可以尝试着在PEER在注册表中的键值中查找一下有关其图标的设置,这样的键值一般会包含“TrayIcon”之类的字样,尝试改变它的值,看看效果。如果没有,试着建立这样一个键值:"DisableTrayIcon"=dword:00000001 ,再看看效果。 电脑右下角的图标,如小喇叭、安全删除硬件等,有时候会消失,虽试过许多方法,能暂时找回来,但重新启动电脑后又消失了,如果其他方法无效的话,您可以将 https://www.doczj.com/doc/8310120117.html,/regs_edits/xp_taskbar_desktop_fixall.vbs 文件下载到硬盘上,运行即可.(注,若反病毒探测提示报警,需要选择认可执行此脚本。)重启后试试看. 右下角图标消失解决.这种时候只要在注册表里的启动项恢复被删除的项就行。 “开始”——“运行”输入regedit打开注册表以后,依次打开 HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun 在它的右窗口新建字串"Systray"(在Run上右键点新建),键值(在Systray上双击编辑)为"c:windowssystem32Systray.exe",如果是win2000系统,则为"c:winntsystem32Systray.exe"这样就可以了 .

实现将程序图标显示在系统托盘

长久以来,一直很好奇类似QQ等软件的图标是如何显示在系统托盘的,这次有个项目正好用到,所以就研究了一下。 具体方法如下: 1、首先我们需要在工具栏找到NotifyIcon这个控件,找到后将其拖到Form中。 然后,我们需要设置其Icon属性、Text属性和Visible属性。 其中: Icon属性是设置显示在右下角系统托盘的图标。 Text属性是设置当鼠标移动到系统托盘图标时显示的文字,一般设置为软件的名称。 Visible属性是设置小图标是否显示在系统托盘。注意:如果程序退出前没有将其设置为false,那么小图标将一直停留在系统栏,直到鼠标从上面经过时才会消失。 2、基本属性设置完之后,我们要将程序主窗体的ShowInTaskBar设置为True。这样小图标才可以显示在系统托盘中,一般,这个属性默认就是True。 3、设置完属性,我们就需要对NotifyIcon方法进行实现。 我要做的实现是当点击最小化时,让程序的图标出现在“系统托盘”的位置上,而不显示在“任务栏”中。当双击系统托盘上的图标时,还原程序窗体,再次双击时最小化到系统托盘。点击程序的关闭按钮,正常退出程序。 要实现上面的功能我们需要实现两个方法: 一个方法是主窗体的SizeChanged事件。 view plai n 1.///

2./// 最小化时到系统托盘 3./// 4./// 5./// 6.private void MainForm_SizeChanged(object sender, EventArgs e) 7.{ 8.if (this.WindowState == FormWindowState.Minimized) //判断是否最小化 9. { 10.this.ShowInTaskbar = false; //不显示在系统任务栏 11. } 12.}

C++托盘

背景需求: 1、MFC 对话框最小化时,只显示系统右下角托盘图标。 2、双击托盘,对话框还原。 3、右键点击托盘,弹出“关闭”菜单,可关闭对话框。 实现步骤: 1、创建MFC 对话框程序(本例程序名为TaskbarIcon ),属性中设置“MinimizeBox”为true 。 2、定义自定义消息宏。 1 #define NOTIFY_SHOW WM_USER+2500 3、OnSysCommand (系统消息响应函数)添加对话框最小化执行代码。 01 void CTaskbarIconDlg::OnSysCommand(UINT nID, LPARAM lParam) 02 { 03 if (SC_MINIMIZE == nID) 04 { 05 NOTIFYICONDATA nid; 06 nid.cbSize = (DWORD)sizeof(NOTIFYICONDATA); 07 nid.hWnd = this->m_hWnd; 08 nid.uID = IDR_MAINFRAME; 09 nid.uFlags = NIF_ICON|NIF_MESSAGE|NIF_TIP ; 10 nid.uCallbackMessage = NOTIFY_SHOW;//自定义的消息名称 11 nid.hIcon = LoadIcon(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDR_MAINFRAME)); 12 wcscpy_s(nid.szTip, _T("图标测试"));//信息提示条 13 14 Shell_NotifyIcon(NIM_ADD,&nid);//在托盘区添加图标 15 ShowWindow(SW_HIDE);//隐藏主窗口 16 return; 17 } 18 19 //...系统自带代码 20 } 4、托盘自定义消息响应

托盘图标消失的修复方法

托盘图标不见了 托盘图标莫名隐藏是XP的的一个老问题了,通常是由于连接并在网上邻居显示UPNP(通用即插即用设备,比如路由器、MODEM之类)引起的。没有太彻底的解决办法,但一般可以这样做: 第一种办法是,如果系统为XP SP2或SP3,双击打开网上邻居,在左边点击“隐藏联网的UPNP设备的图标”,等整个设置完成,重启计算机即可。如果是XP_SP1可以打开控制面板——添加或删除程序——添加/删除windows组件——选“网络服务”——点“详细信息”——然后去掉“UPNP用户界面”前面的勾。然后一样是重启机子即可。其实不显示UPNP设备并不影响正常的使用,它只是方便对UPNP设备的管理而已。 第二种办法,假如不想隐藏UPNP设备图标。那么可以开机完成后,注销一次,也能恢复托盘图标的显示,不过比较麻烦。 第三种办法,可以设定每次开机必须必须输入密码。(此方法未经试验,感觉应该可行。)方法是在“开始”——“运行”里输入这串英文命令: rundll32 netplwiz.dll,UsersRunDll 在“要使用本机,用户必须……”前面打上钩,然后重

启。前提是你必须知道自己的用户名和密码。如果安装XP 时没有设置过,那么通常密码为空,到时候敲一下回车就可以了。 第四种方法,关闭SSDP Discovery Service就能修复这个问题 第五种:“控制面板”——“声音和音频设备”——“将音量图标放入任务栏”曾经手动关掉了。只要打开就行了。 第六种:“将音量图标放入任务栏”打勾,无效。丢失sndvol32.exe,文件路径C:\WINDOWS\system32,可以在别的机子上传个sndvol32.exe,或找个系统光盘找到sndvol32.ex_文件复制到system32后,重命名为sndvol32.exe 第七种:如果你曾用软件删除过启动项目,而不小心删除了音量图标的启动。这种时候,”将音量图标放入任务栏”打勾,音量图标出现,但重新开机后音量图标没有恢复,必须重新在控制面板里设置。(这种情况,网络连接图标可能也消失)。 这种时候只要在注册表里的启动项恢复被删除的项就行。 “开始”——“运行”输入regedit打开注册表以后,依次打开HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\

相关主题
文本预览
相关文档 最新文档