标题:windows后台服务与桌面进程通信问题
取消只看楼主
gpp6025
Rank: 1
等 级:新手上路
帖 子:57
专家分:0
注 册:2010-7-8
结帖率:84.62%
已结贴  问题点数:20 回复次数:2 
windows后台服务与桌面进程通信问题
主要结构是这样的,我写了个后台服务程序A,开启了共享和允许与桌面交互,然后想通通过内存共享的方式与一个有界面的程序B之间实现数据共享,问题出来了,我写了个控制台的测试程序和B之间可以进行通信,但是同样的代码放到后台服务中就没有实现。环境是在windows xp 下面运行的。还有尝试了通过dll来交互数据,界面程序B总是得不到传来的值!急求解~~

望路过的各位大大们指点呀~~
2013-03-29 12:56
gpp6025
Rank: 1
等 级:新手上路
帖 子:57
专家分:0
注 册:2010-7-8
得分:0 
以下是引用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 ;
}
2013-03-29 17:31
gpp6025
Rank: 1
等 级:新手上路
帖 子:57
专家分:0
注 册:2010-7-8
得分:0 
回复 3楼 gpp6025
问题解决了,GetLastError得到错误解答时权限问题,因为后台服务是SYSTEM权限的,测试用的控制台是admin的权限~
2013-03-30 08:25



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-402264-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.239732 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved