我想要这个服务程序有普通的程序界面,而且, 我想让这个程序启动以后,有一个托盘再任务栏里!可以吗?  最好能有代码例子……

解决方案 »

  1.   

    http://www.vckbase.com/document/finddoc.asp?keyword=%CD%D0%C5%CC
      

  2.   

    可以,不过必须创建一个窗口接受消息
    并且将服务设值为能和当前桌面交互
    HDESK hdeskUser = OpenDesktop("Default",0,FALSE,MAXIMUM_ALLOWED);
    SetThreadDesktop(hdeskUser); 或者,在使用CreateService创建服务时dwServiceType参数设为SERVICE_INTERACTIVE_PROCESS
      

  3.   

    用一下调用序列,把当前桌面绑定到Service1 判断是否有用户登录
    2 OpenWorkStation
    3 OpenDesktop
    4 SetThreadWorkStation
    5 SetThreadDesktop
    …………
    当程序将要退出的时候,记得:
    6 CloseDesktop
    7 CloseWorkStation
      

  4.   

    http://www.vckbase.com/document/viewdoc.asp?id=492
    这个网址有比较详细的说明,下面是它说的不是很清晰的,刚做过,熟的很
    1.trayIcon构造函数制定的icon的ID号就是要显示的Menu的ID号,
    显示制定的icon用seticon,参数为零时为删除
    2。显示的菜单对应的消息处理函数是”父“窗口的相应的消息处
      理函数
    3。引用时,只需Trayicon。h和相应的cpp文件
    4。跟随的这个帖子相当有用
    5。正常显示,隐藏ShowWindow(SW_NORMAL);或者改为SW_HIDEN
    6。notraynotification相当重要
      

  5.   

    托盘
    NOTIFYICONDATA nid;
    nid.cbSize = sizeof(nid);
    nid.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP;
    nid.hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);strcpy(nid.szTip,"你要显示的东东");
    nid.uCallbackMessage = WM_USER + 200;
    nid.uID = 10;
    nid.hWnd =m_hWnd;
    Shell_NotifyIcon(NIM_ADD, &nid);