开发服务程序(ATL服务),编译后,用 /service开关运行服务,通常,服务程序是运行在另一个桌面系统(Windows 系列是多桌面的,但只有一个是可见的),为使你的界面出现在当前桌面,必须在服务管理器中将其设置成可与当前桌面“交互”,如果你的Server 是Window2000,请在开始菜单中选择程序组“Administrative Tools,中文版为:管理工具”中的“Service”,此时会出现服务管理控制台(Microsoft MMC界面),检查你的服务是否列在其中,如果没有,请用/service注册你的服务,然后步骤同上,找到你的服务后,双击鼠标,会出现一个关于此服务的“属性页”,选择“Log On(中文版对应什么?,忘了!)”页,会出现“Local system account”,下面的选项是:“Allow service to interact with desktop”,选中即可,重新启动服务后,你的界面即可出现
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.
给你20分!
所以20分受之有愧阿。你给5分就可以了。
以后做DCOM我还要问你呢。
通常 有界面元素的组件不是适合作成DCOM
各位帮忙诊断一下
运行VCVARS32.BAT试试
你回答了我好多的问题!谢谢你!也看了你的很多在别的贴子上的回答!
我知道是弹出在服务器端,可是好长时间没有反应,并且出现这样一个对话框,“服务器占线”(标题),“服务器程序忙,此操作无法完成,请使用[切换]命令来激活正在使用的程序,并更正问题!”(正文)。
蛋,在远程弹出对话框跟在本地弹出对话框有什么不同之处!如果你知道的话,麻烦你跟我说说,这个问题已经困扰我很长时间了!
谢谢你的指教。我的Server是Win2000,应该怎么配置?劳驾在此指点!
MessageBox(NULL,"hello world","haha",MB_OK);
是弹出消息框,此时你如果想结束客户程序
服务器占线”(标题)
“服务器程序忙,此操作无法完成,请使用[切换]命令来激活正在使用的程序,并更正问题!”(正文)。
就出现啦
去服务器上点击确定
就可以退出客户程序,我遇到的情况是这样的,因为服务器的线程阻塞。
现在的问题是我的对话框根本就不能弹出来!在服务器端也看不到对话框!(这个对话框是我通过Insert New ATL Object插入的!)
如果是消息框MessageBox(NULL,"hello world","haha",MB_OK)的话,必须加一个标志
MB_SERVICE_NOTIFICATION ,否则消息框在服务器端也看不到!在服务器端弹出消息框我已经能做到了!就是不知道对话框怎么能弹出来??
[email protected]
[email protected]
我已经将我的服务器和客户端发送给你的[email protected]油箱了,麻烦你看看!我知道一般不会用DCOM的服务器端来显示界面,我就是想试一试能不能这样做!
,
能把你跟蛋说的:COM本质里面的那个聊天程序源代码给我吗??我也想研究研究!
E-MAIL:[email protected]
谢谢!!
在客户端弄一个线程显出来,这下总该可以了吧。