怎么托盘化运行某程序????

怎么托盘化运行某程序????,第1张

这是我见过的最强大的同类型软件,这从其复杂的设置就可以看出。类似的软件还有超强最小化(minimum)、Window Minimizer等,这些软件的做得都非常简单,相对的功能也比较弱。而那个Actual Window Minimizer我就不鸟它了,一个最小化的软件搞到了3MB,怎么都觉得不舒服,这又走到了另外一个极端。能不能找一个折中点的呢?现在介绍的这款TrayIt!就是我非常喜欢的,只有100多KB,小巧而实用。以后就是装机必备了。 简介: 许多程序都不包含任务栏托盘功能,但有时这却非常常用,TrayIt! 允许你将任意程序变成任务栏小图标,这样可以节省任务栏任务列表的空间.利用它你可以轻松将一些长时间使用的软件例如播放软件挪到托盘中而不是整天留在任务栏中无所事事。 配置: 点击工具栏上的“修改应用选项”按钮或菜单栏上的“编辑/选项”命令。打开“TrayIt!应用选项”窗口,勾选“应用”下的“始终启动时最小化”、“启动装载到托盘”和“因TrayIt!应用而创建托盘图标”三项,以后TrayIt!就可以随系统启动,并自动最小化到托盘为你服务了。另外,还要勾选“分组”下的“各自应用相似分组的托盘图标”,该设置项可以使同类窗口图标(比如多个文件夹窗口图标)以组的形式,仅在托盘区显示一个图标,点击时会出现下拉菜单供你选择。至于其它设置项,根据自己需要选择就OK了。 使用: 1、临时想让某个程序最小化到系统托盘,在关闭窗口的叉叉按键上右键即可。 2、如果你想一直让某个程序点击最小化后就缩小到系统托盘,选中程序,点击工具栏第四个按钮(凹进去那个),就会看到程序前多了一个TrayIt!的图标(如DFX 8 Winamp)。这个是一劳永逸的,只要TrayIt!运行着,设置就有效。(注意:并不是即时显示运行的程序,你需要按一下第一个刷新按钮) 3、系统托盘有些图标不是经常要用到的,放着也占地方,那你可以把它隐藏了。在程序主窗口,依次选择:编辑 → 程序图标,如下图所示,取消掉前面的钩钩,系统托盘的图标就没了。 4、设置窗口总是前端显示和透明度:在主界面上右键某一个运行的程序,选择窗口属性,如下图设置: 还有很多“乱七八糟”的复杂设置,有兴趣慢慢研究吧。这个软件的中文翻译让我非常困惑,单从字面上看不出某个设置是用来干嘛的……不过我认为做好了上面的基本配置,用起来已经很顺手了。 具体的使用介绍请看这两个页面: http://www.freegroup.org/freeware-tray-it http://www.officeba.com.cn/news/htmldata/detail/2008/7/30/479.html 下载: TrayIt! V4.6.5.5┊允许你将任意程序变成任务栏小图标的功能┊汉化绿色免费版

我的笔记如下帮你解决:

基于对话框的托盘程序实现

NOTIFYICONDATA结构体传递托盘消息,是windows底层API中定义的一个结构体;圆形如下:

typedef struct _NOTIFYICONDATA{

DWORD cbSize //结构体的大小,以字节为单位

HWNDhWnd //窗口的句柄

UINT uID//应用程序定义的任务栏图标的标识符

UINT uFlag; //此成员表明具体哪些其他成员为合法数据

UINT uCallbackMessage //应用程序定义的消息标识符

HICONhIcon //增加、修改或删除的图标的句柄

TCHAR szTip[64] //指向一个以\0结束的字符串的指针

DWORD dwState //Version 5.0,图标的状态

DWORD dwStateMask//指明dwState成员的哪些位可以被设置或访问

TCHAR szInfo[256] //指向一个以\0结束的字符串的指针

union {

UINT uTimeout

UINT uVersion'

}

TCHAR szInfoTitle[64]

DWORD dwInfoFlags

GUID guidItem

}NOTIFYICONDATA,*PNOTIFYICONDATA

1、创建一个MFC对话框程序,名为TrayDialog,为CTrayDialogDlg类添加自定义消息WM_TRAY_NOTIFYICONDATA

2、关联消息映射,消息处理函数如下:

LONG CTrayDialog::OnTrayNotifyicondata(WPARAM wparam,LPARAM lparam)

{

switch (lParam)

{

case WM_RBUTTONUP://在托盘上右键d起时相应处理消息

case WM_LBUTTONDBLCLK://双击托盘的相应消息

ShowWindow(SW_SHOW)

TrayMessage(m_hWnd,NIM_DELETE,NULL,L"")

default:

}

return 0

}

3、添加全局函数TrayMessage(),该函数用来实现托盘信息发送,从而使托盘化,代码如下

BOOL TrayMessage(HWND hWnd,DWORD dwMessage,HICON hIcon,wchar_t* pszTip)

{

BOOL bReturn

NOTIFYICONDATA Notifydata

Notifydata.cbSize = sizeof(NOTIFYICONDATA)

Notifydata.hWnd=hWnd

Notifydata.uID=IDR_MAINFRAME

Notifydata.uFlags=NIF_MESSAGE|NIF_ICON|NIF_TIP

Notifydata.uCallbackMessage=WM_TRAY_NOTIFYICONDATA

Notifydata.hIcon=hIcon

lstrcpynW(Notifydata.szTip,pszTip,sizeof(Notifydata.szTip))

bReturn=Shell_NotifyIcon(dwMessage,&Notifydata)

if (hIcon)

{

DestroyIcon(hIcon)

return bReturn

}

}

4、为类CTrayDialog的OnSysCommand()加入最小化处理事件,加入如下代码:

if ((nID &0xFFF0) == IDM_ABOUTBOX)

{

CAboutDlg dlgAbout

dlgAbout.DoModal()

} //=============================

else if (nID==SC_MINIMIZE)

{

TrayMessage(m_hWnd,NIM_ADD,NULL,L"托盘实例")

TrayMessage(m_hWnd,NIM_MODIFY,m_hIcon,L"托盘实例")

ShowWindow(SW_HIDE)

}

在对话框上添加一个按钮,名字为最小化为托盘,为该按钮单击事件添加如下代码:

TrayMessage(m_hWnd,NIM_ADD,NULL,L"托盘实例")

TrayMessage(m_hWnd,NIM_MODIFY,m_hIcon,L"托盘实例")

ShowWindow(SW_HIDE)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11091425.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-13
下一篇 2023-05-13

发表评论

登录后才能评论

评论列表(0条)

保存