在windows 10操作系统,用delphi XE5编程语言,如何把其它程序而不是本软件在通知区域Tray的图标隐藏?不是关闭进程。请举个详细代码例子
时间: 2023-03-09 17:41:48 浏览: 83
你可以使用Delphi XE5的Windows API函数Shell_NotifyIcon来实现这一功能,下面是一个简单的代码例子: procedure TForm1.Button1Click(Sender: TObject);
var
NotifyIconData: TNotifyIconData;
begin
FillChar(NotifyIconData, SizeOf(NotifyIconData), 0);
NotifyIconData.cbSize := SizeOf(NotifyIconData);
NotifyIconData.Wnd := Handle;
NotifyIconData.uID := 1;
NotifyIconData.uFlags := NIF_ICON or NIF_MESSAGE;
NotifyIconData.uCallbackMessage := WM_USER + 1;
NotifyIconData.hIcon := LoadIcon(0, IDI_APPLICATION);
Shell_NotifyIcon(NIM_DELETE, @NotifyIconData);
end;
相关问题
操作无法完成,因为文件已在VMware Tray Process中打开
抱歉,我无法为您提供关于 VMware Tray Process 的具体操作指导。您可以尝试通过以下步骤解决此问题:
1. 尝试重新启动计算机,然后再次尝试打开文件。
2. 如果文件仍然无法打开,请确保您具有足够的权限来访问该文件。您可以尝试使用管理员权限打开文件。
3. 如果您使用的是 VMware 虚拟机软件,请确保您已正确退出 VMware Tray Process。您可以在任务管理器中查找并结束该进程。
4. 如果问题仍然存在,您可以尝试卸载并重新安装 VMware 虚拟机软件,以确保没有任何冲突。
5. 如果以上方法都无效,您可以考虑联系 VMware 支持团队获取进一步的帮助和指导。
请注意,这些是一般性的建议,具体解决方法可能因个人操作系统和软件配置而异。如果您需要更详细的指导,请提供更多的上下文信息,以便我可以更准确地回答您的问题。
mfc对话框启动就直接隐藏在右下角显示托盘图标
您可以在MFC对话框的OnInitDialog()函数中添加以下代码来实现该功能:
```cpp
// 加入以下头文件
#include "Shellapi.h"
// 在OnInitDialog()函数中添加以下代码
NOTIFYICONDATA nid; // 定义托盘图标结构体
nid.cbSize = sizeof(NOTIFYICONDATA);
nid.hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
nid.hWnd = this->GetSafeHwnd();
nid.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP;
nid.uCallbackMessage = WM_USER_SHELLICON;
lstrcpy(nid.szTip, _T("您的应用程序名称"));
Shell_NotifyIcon(NIM_ADD, &nid); // 在托盘区添加图标
ShowWindow(SW_HIDE); // 隐藏对话框窗口
```
此外,您还需要添加以下消息映射函数:
```cpp
BEGIN_MESSAGE_MAP(CYourDialog, CDialogEx)
// ...
ON_MESSAGE(WM_USER_SHELLICON, OnTrayNotification)
END_MESSAGE_MAP()
LRESULT CYourDialog::OnTrayNotification(WPARAM wParam, LPARAM lParam)
{
UINT uID;
UINT uMsg;
uID = (UINT)wParam;
uMsg = (UINT)lParam;
if (uID != IDR_MAINFRAME)
return 0;
if (uMsg == WM_RBUTTONUP)
{
CMenu menu;
VERIFY(menu.LoadMenu(IDR_MENU_TRAY));
CMenu* pSubMenu = menu.GetSubMenu(0);
ASSERT(pSubMenu != NULL);
// 获取鼠标位置,并转换为屏幕坐标
POINT pt;
GetCursorPos(&pt);
// 显示菜单
SetForegroundWindow();
pSubMenu->TrackPopupMenu(TPM_LEFTALIGN | TPM_LEFTBUTTON | TPM_RIGHTBUTTON, pt.x, pt.y, this);
PostMessage(WM_NULL, 0, 0);
}
else if (uMsg == WM_LBUTTONDBLCLK)
{
ShowWindow(SW_SHOW); // 显示对话框窗口
Shell_NotifyIcon(NIM_DELETE, &nid); // 在托盘区删除图标
}
return 0;
}
```
这样,当您的MFC对话框启动时,它将会隐藏在系统托盘区中,并显示您指定的托盘图标。当用户单击托盘图标时,对话框窗口将会显示出来。