我需要弄清楚如何以编程方式从单独的应用程序的系统托盘图标中查找和选择上下文菜单项。我能想到的实现这一点的唯一方法是使用mouse_event()和一些硬编码的x/y值,并将图标设置为始终显示。除了一般的硬编码的hacky使用之外,这里的问题是图标将保留其位置的假设(这可能会在另一个应用程序加载/卸载时中断)。我想知道是否有人知道解决此问题的其他方法? 最佳答案 根据应用程序的编写方式,从上下文菜单中选择项目将导致WM_COMMAND消息发布到属于该应用程序的窗口。您可以使用像Spy++这样的工具来检查这一点。如果是这种情况,那么您所
我正在尝试编写一个应用程序来放置当前温度(从在线资源中获取)并在系统托盘/通知(适用于Windows7+)的应用程序图标中显示温度(作为文本)。我正在使用DelphiTTrayIcon组件,但我不知道如何在图标区域显示文本。我过去有其他应用程序可以执行此操作,所以它一定是可能的。 最佳答案 通知图标就是这样。图标。他们无法显示您提供给他们的文本。因此,为了实现您的目标,您需要动态创建一个包含文本的图标并将其作为通知图标提供。请注意,通知图标是一个小图标,其大小由SM_CXSMICON给出。系统指标。
我想创建一个非常类似于位于系统托盘中的Windows7音量栏的应用程序。我是Windows开发的新手,希望能指出正确的方向。我是否应该制作一个普通的应用程序并放入系统托盘?我不需要应用程序的主窗口,它只能通过系统托盘访问(我只需要音量条,不需要其他)...我该怎么做?用C++而不是C#编写它会更好吗?如何检测Windows输出的声音的“音量”(即使系统声音已静音)?感谢您的回复。 最佳答案 您可以使用类NotifyIcon.只需谷歌搜索即可找到样本。Hereisone. 关于c#-Win
我有一个C控制台应用程序,它曾经在Windows的CMD终端中的前台运行,并接受用户击键输入。但是,现在需要将其移至后台并且不需要用户输入。我已经创建了一个系统托盘,它是通过右键单击退出和右键单击关于来正确实现的。并有一个执行该功能的终端程序。我不想再次重写程序,而是希望能够创建一个线程来调用我现有程序中不需要终端的函数。只是为了强调这一点,控制台交互方面已从代码中删除,应用程序对击键的响应等也已从代码中删除。希望这能稍微澄清一些事情。问题:这可能吗?我将如何实现?(我通常不是使用更多嵌入式C的PC程序员,所以.NET对我来说很陌生。非常感谢任何帮助) 最佳
我想将Delphi应用程序最小化到系统托盘而不是任务栏。必要的步骤似乎如下:创建应显示在系统托盘中的图标。当用户点击[-]最小化应用程序时,执行以下操作:隐藏表单。将图标(第1步)添加到系统托盘。隐藏/删除应用程序在任务栏中的条目。当用户双击系统托盘中的应用程序图标时,执行以下操作:显示表格。再次取消最小化应用程序并将其置于最前面。如果“WindowState”为“WS_Minimized”,则设置为“WS_Normal”。隐藏/删除系统托盘中的应用程序图标。当用户终止应用程序时,执行以下操作:隐藏/删除系统托盘中的应用程序图标。就是这样。对吧?如何在Delphi中实现这一点?我找到了
我创建了一个通知图标:notifyIcon.cbSize=sizeof(NOTIFYICONDATA);notifyIcon.hWnd=mainWnd;notifyIcon.uID=100;notifyIcon.uFlags=NIF_ICON|NIF_TIP|NIF_MESSAGE;notifyIcon.hIcon=LoadIcon(hInstance,MAKEINTRESOURCE(IDI_LOGO));notifyIcon.dwState=NIS_SHAREDICON;notifyIcon.uVersion=NOTIFYICON_VERSION;notifyIcon.uTimeou
我已经编写了一小段代码来使用DeviceIoControlAPI和适当的IOCTL打开/关闭cd/dvd驱动器托盘,但我似乎无法检查托盘状态。根据msdn页面(http://msdn.microsoft.com/en-us/library/aa363404%28v=VS.85%29.aspx),IOCTL_STORAGE_CHECK_VERIFY应该在驱动器加载有效媒体时成功,否则会失败并显示相应的错误代码。因此,当DeviceIoControl失败时,我希望21在托盘打开时为lasterror,在托盘关闭时为1112但没有设备中的媒体。然而,它只会返回21,直到加载了适当的媒体。我错
我一直在尝试让Tomcat8系统托盘图标出现在WindowsServer2012盒子上,但我遇到了问题。我按照说明here把Tomcat8的图标放到系统里试试。所以,我运行了以下命令C:\..\bin>tomcat8w//MS//Tomcat8该图标按预期显示在系统托盘中,但是当我重新启动我的机器时该图标不再存在,我必须运行相同的命令才能使其再次出现。我可以做些什么来确保该图标始终保持不变? 最佳答案 对此有多种解决方案。对我有用的是:创建一个.bat以在打开tomcat图标托盘的Windows登录时运行。为此,只需使用您之前发布的
我正在尝试制作一个Windows应用程序,它可以在后台检查某些内容,并通过系统托盘图标通知用户。该应用程序是使用非托管C++制作的,没有切换到.net或Java的选项。如果用户想停止应用程序,他将使用托盘图标。由于系统托盘方面的原因,该应用程序不能成为服务,因为它必须在不在用户计算机上安装任何东西的情况下运行(它是单个.exe)使用典型的Win32程序结构(RegisterClass、WndProc等)我不知道如何放置一些代码来分开窗口消息循环。也许我必须使用CreateProcess()或CreateThread()?这是处理多线程环境的正确方法吗?如果我必须使用CreateProc
通知/警报窗口(显示在Windows系统托盘上方)是否像下面的示例一样只是一个标准窗口,所有者绘制HMENU还是使用NOTIFYICONDATA实现的?注意:我知道实际的系统托盘图标是使用NOTIFYICONDATA实现的,但是通知窗口是否也是使用这个结构实现的?在我的WinAPIC++应用程序中,我想显示一个类似的通知,它会出现在系统托盘图标上方,有按钮、水平滚动条等。我知道我可以创建一个新的HWND,将它放在系统托盘上方并显示,但如果有特定的WinAPI“系统托盘通知”类/函数,我更愿意使用它,因此我的问题。 最佳答案 Aren