• windows 气泡提示


    windows 气泡使用API Shell_NotifyIcon,首先需要使用Shell_NotifyIcon 的ADD添加一个通知icon,就是windows通知小窗口里面的小图标,之后再利用NIM_MOIDFY显示对应的气泡

    大致代码 AddNotificationIcon

    BOOL AddNotificationIcon(HWND hwnd)
    {
        NOTIFYICONDATA nid = {sizeof(nid)};
        nid.hWnd = hwnd;
        // add the icon, setting the icon, tooltip, and callback message.
        // the icon will be identified with the GUID
        nid.uFlags = NIF_ICON | NIF_TIP | NIF_MESSAGE | NIF_SHOWTIP | NIF_GUID;
        nid.guidItem = __uuidof(SpiderIcon);
        //nid.uCallbackMessage = WMAPP_NOTIFYCALLBACK;
         
        LoadIconMetric(GetModuleHandle(NULL), MAKEINTRESOURCE(IDI_NOTIFICATIONICON), LIM_SMALL, &nid.hIcon);
        //LoadString(GetModuleHandle(NULL), IDS_TOOLTIP, nid.szTip, ARRAYSIZE(nid.szTip));
        std::wstring test = L"Spider";
         
        wcscpy(nid.szTip, test.c_str());
        //memcpy(nid.szTip, test.c_str(), test.size());
        Shell_NotifyIcon(NIM_ADD, &nid);
     
        // NOTIFYICON_VERSION_4 is prefered
        nid.uVersion = NOTIFYICON_VERSION_4;
        return Shell_NotifyIcon(NIM_SETVERSION, &nid);
    }

    ShowPrintJobBalloon

    BOOL ShowPrintJobBalloon()
    {
        // Display a balloon message for a print job with a custom icon
        NOTIFYICONDATA nid = {sizeof(nid)};
        nid.uFlags = NIF_INFO | NIF_GUID;
        nid.guidItem = __uuidof(SpiderIcon);
        nid.dwInfoFlags = NIIF_USER | NIIF_LARGE_ICON;
        std::wstring title = L"Spider集控";
        std::wstring szInfo = L"打扰了,收到来自集控的关机指令,将在您用完之后执行";
     
        //wcscpy(nid.szInfoTitle, title.c_str());
        wcscpy(nid.szInfo, szInfo.c_str());
        //LoadString(g_hInst, IDS_PRINTJOB_TITLE, nid.szInfoTitle, ARRAYSIZE(nid.szInfoTitle));
        //LoadString(g_hInst, IDS_PRINTJOB_TEXT, nid.szInfo, ARRAYSIZE(nid.szInfo));
        LoadIconMetric(g_hInst, MAKEINTRESOURCE(IDI_NOTIFICATIONICON), LIM_LARGE, &nid.hBalloonIcon);
        return Shell_NotifyIcon(NIM_MODIFY, &nid);
    }

    注意点:

    1. Notification需要一个唯一ID(再win7以及win7以上),第一次运行程序时会将这个uuid和你的应用程序绑定再一起(注意是和你的决定路径),你的exe如果路径变了UUID也需要变,即一个uuid对应着一个你的应用程序(绝对路径)
    2. 你的窗口可以是隐藏的,但是如果处在全屏模式或者投影等模式,windows将会自动开启专注助手以防止用户受打扰,所以再开启之后你的通知将不会显示,解决这个有两种方案,一将窗口显示出来,二是禁止专注助手。
  • 相关阅读:
    Git教程
    test
    Android中的权限机制
    Android中<uses-library>的理解
    权限机制
    总是听到有人说AndroidX,到底什么是AndroidX?Android和AndroidX的区别
    VMware Tools按钮变灰色,无法安装的解决方法
    VMware Tools (ubuntu系统)安装详细过程与使用
    Android studio常用快捷键
    CVE漏洞分析
  • 原文地址:https://www.cnblogs.com/gd-luojialin/p/15028196.html
Copyright © 2020-2023  润新知