在2000下,我建立了一个服务,改服务中使用了
HWND hwnd = FindWindow("Shell_trawnd", NULL);
ShowWindow(hwnd, SW_HIDE);
来隐藏任务栏,可不知道为什么,单独运行该代码有效,可是开机自动由服务运行则
不能达到禁止的目的,希望高手指点一二

解决方案 »

  1.   

    你的测试程序中“任务栏”的窗体名称写错了,应该是Shell_TrayWnd,用你的程序调试发现hwnd返回值为NULL,错误值为2以下程序调试通过,请参照。HWND hwnd=FindWindow("Shell_TrayWnd",NULL);
    if (NULL == hwnd )
    {
    TRACE("FindWindow Error %d",GetLastError());
    }
    else 
    {
    ShowWindow(hwnd, SW_HIDE);
    }
      

  2.   

    重要补充:
    在创建服务时,确保你的服务具有与桌面交互的属性,即SERVICE_INTERACTIVE_PROCESS属性SC_HANDLE hService = ::CreateService(
      hSCM, 
      m_szServiceName, 
      m_szServiceName,
      SERVICE_ALL_ACCESS, 
      SERVICE_WIN32_OWN_PROCESS | SERVICE_INTERACTIVE_PROCESS ,//Note here
      SERVICE_DEMAND_START, 
      SERVICE_ERROR_NORMAL,
      szFilePath, 
      NULL, NULL, 
      _T("RPCSS\0"), 
      NULL, NULL);