• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >vc/mfc > 服务中创建的隐含窗口在2000Pro/XP下可见,在2000Server/2003Server下不可见的问题(急))

服务中创建的隐含窗口在2000Pro/XP下可见,在2000Server/2003Server下不可见的问题(急))

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-04

佚名通过本文主要向大家介绍了 服务中创建的隐含窗口在2000Pro/XP下可见,在2000Server/2003Server下不可见的问题(急))等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 服务中创建的隐含窗口在2000 Pro/XP 下可见,在2000 Server/2003 Server 下不可见的问题(急))
描述:

我是在Win32 Service程序中创建了一个隐含窗口,然后在另外一个对话框程序中查找这个隐含窗口,
在2000/XP 下,用VC自带的Spy++可以看到这个隐含窗口,可是在2003 Server中就看不到(可是创建窗口已经成功了),这是为什么?
服务程序如下:
void AgIceRunService(AGICE_VOID)
{
//COPYDATASTRUCT pcds;
MSG msg;
//create window to handle msgs
hWnd = AgIceBuildHiddenWindow();
if(AGICE_NULL == hWnd)
{
AGICE_WRITE_LOG(0, "Failed to create window for service!\n");
return;
}
else
{
AGICE_WRITE_LOG(0, "Successful to create window for service!\n");
}
AGICE_WRITE_LOG(0, "Begin to handle windows msg!\n");
while(-1 != GetMessage(&msg, hWnd, 0, 0))
{
AGICE_WRITE_LOG(0, "Handle window msg after receiving it!\n");
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
/********************************************************************
*
*       Fun:   AgIceMakeWorkerWindow
*
*       Desc:  
*
*       Notes: n/a
*       
*       Parameters:
*********************************************************************/
HWND AgIceBuildHiddenWindow(AGICE_VOID)
{
   WNDCLASS wndclass;
   HWND hWindow;
   memset(&wndclass, 0, sizeof(WNDCLASS));
   wndclass.style = CS_GLOBALCLASS;
   wndclass.lpfnWndProc = (WNDPROC)AgIceWindowProc;
   wndclass.cbClsExtra = 0;
   wndclass.cbWndExtra = 0;
   wndclass.hInstance = AGICE_NULL;
   wndclass.hIcon = LoadIcon(AGICE_NULL, IDI_APPLICATION);
   wndclass.hCursor = LoadCursor(AGICE_NULL, IDC_ARROW);
   wndclass.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH);
   wndclass.lpszMenuName = AGICE_NULL;
   wndclass.lpszClassName =  DEF_WINDOW_CLASS;
   if (RegisterClass(&wndclass) == 0)
   {
      AGICE_WRITE_LOG(0, "RegisterClass() failed with error %d\n");
      return AGICE_NULL;
   }
   // Create a window.
   hWindow = CreateWindowEx(AGICE_NULL, 
      DEF_WINDOW_CLASS,
      "Myexe",
      WS_OVERLAPPED | WS_MINIMIZE,
      1,
      1,
      1,
      1,
      AGICE_NULL,
      AGICE_NULL,
      AGICE_NULL,
      AGICE_NULL);
   if (hWindow == AGICE_NULL)
   {
      AGICE_WRITE_LOG(0, "CreateWindow() for Myexe failed!\n");
      return AGICE_NULL;
   }
   return hWindow;
}
void WINAPI ServiceMain(DWORD argc, LPTSTR* argv)
{
    // Register the control request handler
    status.dwServiceType = SERVICE_WIN32_SHARE_PROCESS 
  | SERVICE_INTERACTIVE_PROCESS ;
    status.dwCurrentState = SERVICE_START_PENDING;
    status.dwControlsAccepted = 0;
    status.dwWin32ExitCode = 0;
    status.dwServiceSpecificExitCode = 0;
    status.dwCheckPoint = 0;
    status.dwWaitHint = 10000;
    hServiceStatus = RegisterServiceCtrlHandler(DEF_SERVICE_NAME, ServiceCtrl);
    if(0 == hServiceStatus)
{
return;
}
    if (!SetServiceStatus(hServiceStatus, &status)) {
}
status.dwServiceType = SERVICE_WIN32_SHARE_PROCESS 
  | SERVICE_INTERACTIVE_PROCESS ;
    status.dwCurrentState = SERVICE_RUNNING;
    status.dwCheckPoint = 0;
    status.dwWaitHint  =0;
    status.dwControlsAccepted = SERVICE_ACCEPT_STOP|SERVICE_ACCEPT_PAUSE_CONTINUE;
    if (!SetServiceStatus(hServiceStatus, &status)) 
{
}
AGICE_WRITE_LOG(0, "Begin to create hidden window!\n");
AgIceRunService();
    return;
}
void WINAPI ServiceCtrl(DWORD dwOpcode)
{
//COPYDATASTRUCT pcds;
    switch(dwOpcode)
{
    case SERVICE_CONTROL_PAUSE:
status.dwCurrentState = SERVICE_PAUSED;
// Send current status.
if (!SetServiceStatus (hServiceStatus, &status))
{
AGICE_WRITE_LOG(0, "Failed to change the status of service!\n");
}
        break;
    case SERVICE_CONTROL_CONTINUE:
        status.dwCurrentState = SERVICE_RUNNING;
// Send current status.
if (!SetServiceStatus (hServiceStatus, &status))
{
AGICE_WRITE_LOG(0, "Failed to change the status of service!\n");
}
        break;
    case SERVICE_CONTROL_STOP:
        status.dwWin32ExitCode = 0;
        status.dwCurrentState = SERVICE_STOPPED;
        status.dwCheckPoint = 0;
        status.dwWaitHint = 0;
//set service status
if (!SetServiceStatus (hServiceStatus, &status))
{
 AGICE_WRITE_LOG(0, "Failed to stop service!\n");
}
return;
    case SERVICE_CONTROL_INTERROGATE: 
      // Fall through to send current status. 
      &n

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 服务中创建的隐含窗口在2000Pro/XP下可见,在2000Server/2003Server下不可见的问题(急))

相关文章

  • 2017-06-05 MessageBox是否存在漏洞
  • 2017-06-05 文件映射对象问题(ymbymb毛病大哥请进)
  • 2017-06-04 自己写的ActiveX在应用程序中创建控件变量的时候出错:扩展程序提供程序未能为该对象返回扩展程序
  • 2017-06-04 添加控件之后,对话框无法创建了。。。
  • 2017-06-05 求助:vc++2005errorLNK2019:无法解析的外部符号……
  • 2017-06-04 !!请“arxing(阿行)”回答!!about对象池!!!!
  • 2017-06-04 如何在新生成的工具条中添加一个按钮呢?
  • 2017-06-05 HOOK资源管理器的窗口标题。UP有分,满意答案(类似源代码)另开帖放分200!!!
  • 2017-06-04 抱歉!该用户已被禁用,如果您有任何问题,可以与管理员联系
  • 2017-06-04 求救!ATL高手复合控件问题昨天贴的

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 客户端上手动注册ocx不成功,弹出找不到指定程序
    • 用MFC编写的DLL在DELPHI中可以使用吗?
    • Win98下,我全局APIHook随便一个函数都不行。而在2000下面可以啊!
    • dll调用问题
    • Realease的进程外组件,非得装VC才能正确可以运行啊?
    • 用dumpbin/export将DLL导出的内容的意义?
    • 怪事,我ATL调用C#写的组件(用regasm注册并创建了Com),单步调试进去,其中一个BOOL型返回值,在net下返回是true,到VC++下就变成-1了
    • 散分!求多线程书籍下载。
    • VS2012打开不了项目了
    • 创建一个新线程时为什么有错误

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有