【问题标题】:where to put a while loop in a system tray application so that loop starts with the app在系统托盘应用程序中放置while循环的位置,以便循环从应用程序开始
【发布时间】:2013-07-05 13:45:06
【问题描述】:

我在 Visual Studio 2008 中使用 Windows 窗体模板 (Visual C++) 创建了一个系统托盘应用程序。我使用了 ContextMenuStripNotifyIcon。这是一个托管代码,因为我使用了表单和拖放操作。

我希望此系统托盘应用程序一启动,它就会开始轮询连接的任何新 USB 设备(来自特定供应商)。

除了我不知道“把这个while(1) 循环放在哪里?”之外,逻辑已经准备好了。

它在我制作的控制台应用程序中运行良好,但现在我们希望它集成到系统托盘应用程序中。

这里是sn-p的代码:

        int numDevices, n = 0;
                while(1)
        {

            Sleep(5000);
            numDevices = usb_find_devices();
            if(connectedDevices > numDevices)
            {
                enumDevices();
                                    connectedDevices++;

            }
        }

如果有人能建议我一些关于如何进行的指示,那将非常感激。

【问题讨论】:

标签: visual-c++ while-loop managed systray


【解决方案1】:

谢谢汉斯!我用 WM_DEVICECHANGE 添加了一个新的“组件类”,它工作正常。

以防万一有人需要此信息: 如果需要在 Windows 窗体应用程序启动后立即调用某个函数(在我的情况下为 Systray 应用程序),则可以在调用“InitializeComponent()”函数后调用相应的函数。尽管明确提到了“TODO:在此处添加构造函数代码”,但仍然是初学者(像我一样)对“将此函数调用放在哪里??”有禁忌。希望这对某人有所帮助..

【讨论】: