描述:
1) 我用ATL做了一个进程外服务器(EXE)名字是Assistant.exe,然后又做了一个测试程序,但是问题是我如果不先执行一下Assistant.exe的话我的测试程序就不能用,真的这么麻烦吗?能有方法让它自动执行吗?
2) 另外,用ATL做进程外服务器怎么能让它能够自动现实一个界面窗体呢,也就是说进程外服务器中有没有类似WinMain的主函数呢(不知道这样问对不对)?
解决方案1:
第一个问题不太明白,客户端调用服务端接口方法,服务端自然就会运行起来,怎么还需要先运行服务端?
第二个问题,窗口可以使用ATL类CWindow、CWindowImpl或者CAxWindow,对话框可以使用CDialogImpl、CAxDialogImpl、CSimpleDialog
1,好像不用
在OnInitDialog()加入,应该就可以了吧
HRESULT hr=CoInitialize(NULL);
if(FAILED(hr))
{
return FALSE;
}
hr=pPtr.CreateInstance(__uuidof(**));
if (FAILED(hr))
{
_com_error err(hr);
AfxMessageBox(err.ErrorMessage());
return FALSE;
}
1。建议令服务随系统启动。不过你坚持的话,你可以判断一下服务是否启动,没有的时候就用WINEXE启动它。
2。实现窗口如楼上两位所说。不过一般来说服务是不要窗口的,人们是用另一个进程通过SOCKET控制和设置服务。你可以在服务器写个SOCKET监听,也可以用DCOM代理存根。
1. Create a service and make it auto startup when system boots
2. There is WinMain in it
可以的;
windows服务程序中都可以显示界面的;