注册 登录
编程论坛 Windows论坛

windows后台服务与桌面进程通信问题

gpp6025 发布于 2013-03-29 12:56, 105 次点击
主要结构是这样的,我写了个后台服务程序A,开启了共享和允许与桌面交互,然后想通通过内存共享的方式与一个有界面的程序B之间实现数据共享,问题出来了,我写了个控制台的测试程序和B之间可以进行通信,但是同样的代码放到后台服务中就没有实现。环境是在windows xp 下面运行的。还有尝试了通过dll来交互数据,界面程序B总是得不到传来的值!急求解~~

望路过的各位大大们指点呀~~
3 回复
#2
wp2319572013-03-29 13:44
关注
#3
gpp60252013-03-29 17:31
以下是引用gpp6025在2013-3-29 12:56:39的发言:

主要结构是这样的,我写了个后台服务程序A,开启了共享和允许与桌面交互,然后想通通过内存共享的方式与一个有界面的程序B之间实现数据共享,问题出来了,我写了个控制台的测试程序和B之间可以进行通信,但是同样的代码放到后台服务中就没有实现。环境是在windows xp 下面运行的。还有尝试了通过dll来交互数据,界面程序B总是得不到传来的值!急求解~~

望路过的各位大大们指点呀~~

我在dll里面是这样写两个函数来传递的,不知道对不对!求证啊~
程序代码:

PSYS_VARIABLE    psysvariable=new SYS_VARIABLE;//dll 全局变量
extern "C" __declspec(dllexport) void SetSysVariable(SYS_VARIABLE sysdata)//后台服务程序传传递出来的结构变量
{
        strcpy(psysvariable->ErMessage,sysdata.ErMessage);
        for(int i=0;i<=AXIS_COUNT;i++)
        {
            psysvariable->axisrelated[i]=sysdata.axisrelated[i];
        }
        psysvariable->iopt= ;
}

extern "C" __declspec(dllexport) void GetSysVariable(SYS_VARIABLE sysdata)//界面程序传递进来的结构来得到我要的值
{
    strcpy(sysdata.ErMessage,psysvariable->ErMessage);
    for(int i=0;i<=AXIS_COUNT;i++)
    {
        sysdata.axisrelated[i]=psysvariable->axisrelated[i];
    }
    sysdata.CCDVariable = psysvariable->CCDVariable;
    return ;
}
#4
gpp60252013-03-30 08:25
回复 3楼 gpp6025
问题解决了,GetLastError得到错误解答时权限问题,因为后台服务是SYSTEM权限的,测试用的控制台是admin的权限~
1