开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 1910|回复: 9
收起左侧

[完成] 求将下面翻译为易代码

 关闭 [复制链接]
结帖率:62% (8/13)
发表于 2020-11-17 18:44:18 | 显示全部楼层 |阅读模式   广东省东莞市
5精币
[DllImport("advapi32.dll", SetLastError = true, CharSet = CharSet.Auto)]
        [return: MarshalAs(UnmanagedType.Bool)]
        public static extern bool ChangeServiceConfig2(IntPtr hService, int dwInfoLevel, IntPtr lpInfo);

        [DllImport("advapi32.dll", SetLastError = true, CharSet = CharSet.Auto)]
        public static extern IntPtr OpenSCManager(string MachineName, string DatabaseName, uint DesiredAcces);

        [DllImport("advapi32.dll", SetLastError = true, CharSet = CharSet.Auto)]
        public static extern IntPtr OpenService(IntPtr scHandle, string serviceName, int DesiredAccess
);
        [DllImport("advapi32.dll", SetLastError = true, CharSet = CharSet.Auto)]
        public static extern bool CloseServiceHandle(IntPtr hSCObject);

        public struct SC_ACTION
        {
            public int Type;
            public int Delay;
        }

        public struct SERVICE_FAILURE_ACTIONS
        {
            public int dwResetPeriod;
            public string lpRebootMsg;
            public string lpCommand;
            public int cActions;
            public IntPtr lpsaActions;
        }
        static void ChangeFailureActions(string ServiceName)
        {
            IntPtr scHandle = IntPtr.Zero;
            IntPtr svcHandle = IntPtr.Zero;
            string serviceName = ServiceName;
            try
            {
                scHandle = OpenSCManager(null, null, (uint)0xF003F);
                if (scHandle == IntPtr.Zero)
                {
                    throw new Exception(String.Format("Error connecting to Service Control Manager. Error provided was: 0x{0:X}", Marshal.GetLastWin32Error()));
                }

                svcHandle = OpenService(scHandle, serviceName, (int)0xF01FF);
                if (svcHandle == IntPtr.Zero)
                {
                    throw new Exception(String.Format("Error opening service for modifying. Error returned was: 0x{0:X}", Marshal.GetLastWin32Error()));
                }

                SC_ACTION action = new SC_ACTION();
                action.Type = 1;
                action.Delay = (int)TimeSpan.FromMinutes(1).TotalMilliseconds;

                IntPtr lpsaActions = Marshal.AllocHGlobal(Marshal.SizeOf(action)*2);
                if (lpsaActions == IntPtr.Zero)
                {
                    throw new Exception(String.Format("Unable to allocate memory for service action, error was: 0x{0:X}", Marshal.GetLastWin32Error()));
                }

                Marshal.StructureToPtr(action, lpsaActions, false);

                IntPtr nextAction = (IntPtr)(lpsaActions.ToInt64() + Marshal.SizeOf(action));
                action.Type = 1;

                Marshal.StructureToPtr(action, nextAction, false);

                SERVICE_FAILURE_ACTIONS failureActions = new SERVICE_FAILURE_ACTIONS();
                failureActions.dwResetPeriod = (int)TimeSpan.FromDays(1).TotalSeconds;
                failureActions.lpRebootMsg = "";
                failureActions.lpCommand = "";
                failureActions.cActions = 2;
                failureActions.lpsaActions = lpsaActions;

                IntPtr lpInfo = Marshal.AllocHGlobal(Marshal.SizeOf(failureActions));
                if (lpInfo == IntPtr.Zero)
                {
                    Marshal.FreeHGlobal(lpsaActions);
                    throw new Exception(String.Format("Unable to allocate memory, error was: 0x{0:X}", Marshal.GetLastWin32Error()));
                }

                Marshal.StructureToPtr(failureActions, lpInfo, false);

                if (!ChangeServiceConfig2(svcHandle, 2, lpInfo))
                {
                    Marshal.FreeHGlobal(lpInfo);
                    Marshal.FreeHGlobal(lpsaActions);
                    throw new Exception(String.Format("Error setting service config, error was: 0x{0:X}", Marshal.GetLastWin32Error()));
                }

                Marshal.FreeHGlobal(lpInfo);
                Marshal.FreeHGlobal(lpsaActions);
            }
            catch (Exception ex)
            {
            }
            if (svcHandle != IntPtr.Zero)
            {
                CloseServiceHandle(svcHandle);
            }

            if (scHandle != IntPtr.Zero)
            {
                CloseServiceHandle(scHandle);
            }
        }

将上面代码翻译为易代码。设置系统服务恢复选项卡的

最佳答案

查看完整内容

你这语气,凭什么给你翻译!
结帖率:100% (47/47)

签到天数: 3 天

发表于 2020-11-17 18:44:19 | 显示全部楼层   广东省惠州市
你这语气,凭什么给你翻译!
回复

使用道具 举报

结帖率:78% (70/90)

签到天数: 7 天

发表于 2020-11-17 19:01:05 | 显示全部楼层   河北省廊坊市
你这语气,凭什么给你翻译!
而且,这么多,自己花钱找人翻译吧!
回复

使用道具 举报

结帖率:90% (9/10)

签到天数: 13 天

发表于 2020-11-17 19:02:20 | 显示全部楼层   湖北省荆州市
没人这么闲吧,这个只能花钱
回复

使用道具 举报

结帖率:50% (1/2)
发表于 2020-11-17 19:03:37 | 显示全部楼层   海南省海口市
你这个也太牛了,要翻译就去定制吧,这太难了
回复

使用道具 举报

头像被屏蔽
结帖率:80% (4/5)
发表于 2020-11-17 19:07:44 | 显示全部楼层   河南省焦作市
5个精币你就想翻译嘛?
回复

使用道具 举报

签到天数: 18 天

发表于 2020-11-17 19:21:12 | 显示全部楼层   山东省青岛市
用百d翻译吧
回复

使用道具 举报

结帖率:93% (41/44)

签到天数: 1 天

发表于 2020-11-17 19:25:59 | 显示全部楼层   安徽省滁州市
精币当英镑?
回复

使用道具 举报

结帖率:90% (9/10)

签到天数: 19 天

发表于 2020-11-17 19:51:14 | 显示全部楼层   重庆市重庆市
这么多……
回复

使用道具 举报

结帖率:62% (8/13)

签到天数: 16 天

 楼主| 发表于 2020-11-17 20:22:18 | 显示全部楼层   广东省东莞市
杨辰浩 发表于 2020-11-17 18:44
你这语气,凭什么给你翻译!

哈哈,不好意思,没注意!zc表达到了效果。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表