Simply call the MessageBox function using the MB_SERVICE_NOTIFICATION flag.

解决方案 »

  1.   

    我是加了一个通过对话框Insert New ATL  Object插入了一个对话框!不过我以前用一个MessageBox也是这种情况!我等一下用你讲的方法试验一下MessageBox!不管能不能成功!先
    给你20分!
      

  2.   

    Volition2k兄:你知道我说的第一种情况怎么解决吗?通过Insert New ATL  Object插入了一个对话框?做DCOM分布式应用的时候能不能弹出这个对话框?
      

  3.   

    我没有做过DCOM,只知道做Service的情况,而且我那句是MSDN里copy来的,
    所以20分受之有愧阿。你给5分就可以了。
    以后做DCOM我还要问你呢。
      

  4.   

    对话框会弹出来,不过是在服务器上弹出来,而不是在客户机上弹出来。
    通常 有界面元素的组件不是适合作成DCOM
      

  5.   

    我的EXE形式的DCOM,用DOS下的那个什么编译(不是MIDL,我记不得了),怎么找不到头文件路径,如RPCPROX.h,rpc.h,还有windows.h,总之就是找不到头文件(我的系统路径里都有的,除非我把文件路径写到头文件里去(这要改到什么时候?)),
    各位帮忙诊断一下
      

  6.   

    程序在服务器上运行怎么可能在客户端弹出呢
    运行VCVARS32.BAT试试
      

  7.   

    wyzegg(蛋):
           你回答了我好多的问题!谢谢你!也看了你的很多在别的贴子上的回答!
           我知道是弹出在服务器端,可是好长时间没有反应,并且出现这样一个对话框,“服务器占线”(标题),“服务器程序忙,此操作无法完成,请使用[切换]命令来激活正在使用的程序,并更正问题!”(正文)。
           蛋,在远程弹出对话框跟在本地弹出对话框有什么不同之处!如果你知道的话,麻烦你跟我说说,这个问题已经困扰我很长时间了!
      

  8.   

    请在Server的控制面板中重新配置你的服务程序,并在登录属性页中选择“允许与桌面交互”即可
      

  9.   

    请在Server的控制面板中重新配置你的服务程序,并在登录属性页中选择“允许与桌面交互”即可 ,注意,先用 xxx.exe /service 开关运行你的服务
      

  10.   

    sunhui(无名氏):
            谢谢你的指教。我的Server是Win2000,应该怎么配置?劳驾在此指点!
      

  11.   

    开发服务程序(ATL服务),编译后,用 /service开关运行服务,通常,服务程序是运行在另一个桌面系统(Windows 系列是多桌面的,但只有一个是可见的),为使你的界面出现在当前桌面,必须在服务管理器中将其设置成可与当前桌面“交互”,如果你的Server 是Window2000,请在开始菜单中选择程序组“Administrative Tools,中文版为:管理工具”中的“Service”,此时会出现服务管理控制台(Microsoft MMC界面),检查你的服务是否列在其中,如果没有,请用/service注册你的服务,然后步骤同上,找到你的服务后,双击鼠标,会出现一个关于此服务的“属性页”,选择“Log On(中文版对应什么?,忘了!)”页,会出现“Local system account”,下面的选项是:“Allow service to interact with desktop”,选中即可,重新启动服务后,你的界面即可出现
      

  12.   

    我的服务器是ATL开发的EXE服务器!怎么用 /service开关运行服务?并且我的客户和服务器运行在两台机器上?
      

  13.   

    出现这个对话框的原因就是有一个MESSAGEBOX框弹出,当服务器程序执行到
    MessageBox(NULL,"hello world","haha",MB_OK);
    是弹出消息框,此时你如果想结束客户程序
    服务器占线”(标题)
    “服务器程序忙,此操作无法完成,请使用[切换]命令来激活正在使用的程序,并更正问题!”(正文)。
    就出现啦
    去服务器上点击确定
    就可以退出客户程序,我遇到的情况是这样的,因为服务器的线程阻塞。
      

  14.   

    wyzegg(蛋):
           现在的问题是我的对话框根本就不能弹出来!在服务器端也看不到对话框!(这个对话框是我通过Insert New ATL  Object插入的!)
           如果是消息框MessageBox(NULL,"hello world","haha",MB_OK)的话,必须加一个标志
    MB_SERVICE_NOTIFICATION ,否则消息框在服务器端也看不到!在服务器端弹出消息框我已经能做到了!就是不知道对话框怎么能弹出来??
           
      

  15.   

    我没有做过这样的例子。能否给我参考一下
    [email protected]
    [email protected]
      

  16.   

    wyzegg(蛋):
             我已经将我的服务器和客户端发送给你的[email protected]油箱了,麻烦你看看!我知道一般不会用DCOM的服务器端来显示界面,我就是想试一试能不能这样做!
      

  17.   

    蛋:COM本质里面的那个聊天程序你看了吗?他的服务器怎么注册和运行都有问题呀!
      

  18.   

    我想你做的应该是service吧,你需要获得WinSta0的权限!
      

  19.   

    jhyu119(鱼儿),你好!
    能把你跟蛋说的:COM本质里面的那个聊天程序源代码给我吗??我也想研究研究!
    E-MAIL:[email protected]
    谢谢!!
      

  20.   

    MB_SERVICE_NOTIFICATION is used for a service application.Please check your DCOM server's Runas setting by DCOMCnfg, you can set it to run as interactive user, then your server will run in winstation/desktop that can interactive desktop. This way you should be able see the dialogAnother way is set your server to runas some account, then it will run in a non-interactive winstation/desktop, you can programmatically switch your server to interactive winstation/desktop before displaying the dialog, however as the above post already said, using UI in DCOM server is not good practice.
      

  21.   

    我的意思是使用server push,就是连接点,
    在客户端弄一个线程显出来,这下总该可以了吧。