使用系统托盘图标创build一个后台进程

我试图做一个Windows应用程序,在后台检查一些事情,并通过系统托盘图标通知用户。

该应用程序使用Not managed C ++制作,没有选项切换到.net或Java。

如果用户想要停止应用程序,他将使用托盘图标。

该应用程序不能是一个服务,因为系统侧,因为它必须运行,而无需在用户计算机上安装任何东西(这是一个单一的.exe)

使用典型的Win32程序结构(RegisterClass,WndProc等)我不知道如何放置一些代码来运行窗口消息循环。 也许我必须使用CreateProcess()或CreateThread()? 这是处理multithreading环境的正确方法吗?

如果我必须使用CreateProcess()/ CreateThread(),我怎么可以在两个线程之间交stream?

谢谢 ;)

Solutions Collecting From Web of "使用系统托盘图标创build一个后台进程"

至于系统托盘图标,则需要Shell_NotifyIcon。

请参阅http://msdn.microsoft.com/en-us/library/bb762159.aspx

我怀疑你想创建新的进程来做到这一点,你想在你的应用程序中创建一个线程。 这样做的API是CreateThread 。 但是如果你使用的是C ++,你应该真的在研究框架和类库的使用,而不是从头开始写有效的C代码。

属于应用程序的所有线程共享应用程序的全局变量,因此可用于通信。 您需要像关键部分那样保护这样的多线程访问。

那么,首先我会考虑你是否真的需要在一个单独的线程上运行你的监控代码。 如果您只是定期轮询某些值或系统状态,那么您可能会使用计时器在主线程上运行所有内容。 假设这不是一个选项,使用CreateThread创建一个单独的工作线程,就像已经建议的那样。 在主线程上创建一个不可见的消息窗口。 当工作人员需要更新主线程时,它应该向您的窗口发送消息。 主线程将根据需要更新系统托盘图标进行响应。