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

怎么托盘化运行某程序????,第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┊耐亏允许你将任意程序变成任务栏小图标的功能┊汉化绿色免费版

要实现将程序最小化到托盘,就要截获WM_SIZE消息,并作出相应的消息响应。(WM_SIZE在窗口大小改变时被抛出)

可以重载OnSize()方法,实现托盘图标。

数据结构NOTIFYICONDATA用来储存托盘图标的信息,结构如下:

typedef struct _NOTIFYICONDATA {

DWORD cbSize

HWND hWnd

UINT uID

UINT uFlags

UINT uCallbackMessage

HICON hIcon

WCHAR szTip[64]

} NOTIFYICONDATA, *PNOTIFYICONDATA

首先要在对话框类中加入NOTIFYICONDATA变量:

NOTIFYICONDATA nid;

然后要在OnInitDialog()中对nid进行一些初宏并始化:

nid.cbSize = (DWORD)sizeof(NOTIFYICONDATA) //数据的大小

nid.hWnd = this->GetSafeHwnd() //获取当前窗口句柄

nid.uID = 100 //凳绝升指定该nid的ID

nid.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP //定义图标的属性:图标有效|自定义消息有效|鼠标指向显示文字有效

nid.uCallbackMessage = WM_TRAYICON_RESTORE//定义CALLBACK消息名称,用来响应对托盘图标的 *** 作

nid.hIcon = m_hIcon//指定显示的图标

wcscpy(nid.szTip, _T("TrayIcon")) //鼠标指向图标时的提示框

当然在头文件中要定义好WM_TRAYICON_RESTORE,

#defined WM_TRAYICON_RESTORE WM_USER+101 //这个值一般要大于100

重载OnSize()方法,假如对话框类是CTrayIconDlg;

void CTrayIconDlg::OnSize(UINT nType, int cx, int cy)

{

CDialog::OnSize(nType, cx, cy)

if (nType==SIZE_MINIMIZED)//如果事件为最小化

{

Shell_NotifyIcon(NIM_ADD,&nid) //在托盘区添加图标

ShowWindow(SW_HIDE) //隐藏主窗口

}

}

运行程序,最小化窗口,是不是成功将窗口藏到系统托盘了。

现在还不能让程序窗口还原,无论单击,双击小图标都没反应,那是因为没有对其消息进行处理。

首先在CTrayIconDlg类中加入方法:

afx_msg LRESULT OnRestore(WPARAM wParam, LPARAM lParam)

实现如下:

LRESULT CTrayIconDlg::OnRestore(WPARAM wParam, LPARAM lParam)

{

if( lParam == WM_LBUTTONDOWN ) //如果在图标中单击左键则还原

{

ShowWindow(SW_SHOWNORMAL) //显示主窗口

this->SetWindowPos(&wndTopMost,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE)//使窗口总是在最前面

//枣老Shell_NotifyIcon(NIM_DELETE,&nid) //若加入这行,则在窗口还原后删除托盘图标,否则保留托盘图标

}

return 0

}

把该方法加入消息映射表:

将ON_MESSAGE(WM_TRAYICON_RESTORE, OnRestore)插到映射表中

BEGIN_MESSAGE_MAP(CForexDemoDlg, CDialog)

...

...

ON_MESSAGE(WM_TRAYICON_RESTORE, OnRestore)

END_MESSAGE_MAP()


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

原文地址:https://www.54852.com/yw/12430122.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存