lizf2019 发表于 2022-11-25 18:08

C#服务 启动失败 -错误1064

本帖最后由 lizf2019 于 2022-11-25 18:12 编辑

搞了一个能每三分钟截取一次屏幕的服务
代码很简单 就while循环延时三分钟
安装是用cmd安装的:
%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\installutil.exe G:\静心_修为\GetScreen\bin\Debug\GetScreen.exe

pause
但是点击启动就报错:


/* 省略using */
namespace GetScreen
{
    public partial class Service1 : ServiceBase
    {
      public Service1()
      {
            InitializeComponent();
      }
      public string _filePath;
      public string _fileName;
      public string _suffix;                              //后缀
      public ImageFormat _imageFormat;
      // public string _cutSize;

      //鼠标截屏
      public bool _screenShotFlag;
      public bool _mouseDownFlag;
      public Point _start, _end;
      protected override void OnStart(string[] args)
      {
            //初始化

            _filePath = @"C:\PicLogs\";    //默认保存路径
            _imageFormat = ImageFormat.Jpeg;                               //默认图片格式(JPG)
            _suffix = ".jpg";

            if (!Directory.Exists(_filePath))
            {
                Directory.CreateDirectory(_filePath);
            }
            string time = DateTime.Now.Year.ToString() +
                            string.Format("{0:D2}", DateTime.Now.Month) +
                            string.Format("{0:D2}", DateTime.Now.Day) +
                            string.Format("{0:D2}", DateTime.Now.Hour) +
                            string.Format("{0:D2}", DateTime.Now.Minute) +
                            string.Format("{0:D2}", DateTime.Now.Second);
            Rectangle rect = new Rectangle();
            while (true)
            {
                rect = Screen.PrimaryScreen.Bounds;                  //获取主显示屏的边界
                _screenShotFlag = true;
                Image myImage = new Bitmap(rect.Width, rect.Height);
                Graphics myGraphics = Graphics.FromImage(myImage);   //创建绘图
                myGraphics.CopyFromScreen(new Point(0, 0), new Point(0, 0), rect.Size);
                //保存图片
                string filePathName = string.Concat(_filePath, @"\", _fileName);
                myImage.Save(filePathName, _imageFormat);
                MessageBox.Show("截图成功,图片保存至路径:" + _filePath, "提示");
                Thread.Sleep(1000);//三分钟 180000
            }
      }

      protected override void OnStop()
      {
            Application.Exit();
      }
    }
}

一点启动就会报错1064
求助大佬指点{:301_997:}

咬字分开念 发表于 2022-11-25 18:17

本帖最后由 咬字分开念 于 2022-11-25 02:19 编辑

sbs

是不是少了 restart 方法导致
Graphics 在system账户貌似也截取不到屏幕信息吧

lizf2019 发表于 2022-11-25 18:19

咬字分开念 发表于 2022-11-25 18:17
sbs

是不是少了 restart 方法导致

好像自带的就没有restart

00031300 发表于 2022-11-25 18:21

谢谢您的指导 学习新知识了

lizf2019 发表于 2022-11-25 18:22

00031300 发表于 2022-11-25 18:21
谢谢您的指导 学习新知识了

谢谢您的回复 学习新聊法了

lizf2019 发表于 2022-11-25 18:25

咬字分开念 发表于 2022-11-25 18:17
sbs

是不是少了 restart 方法导致


好像是哦 账户权限那些好烦人{:301_992:}
要不我还是直接winform后台一直挂着算了 但是就怕它不稳定

coolcalf 发表于 2022-11-25 18:50

建议早点转到无敌的.net 7

jidesheng6 发表于 2022-11-25 20:38

lizf2019 发表于 2022-11-25 18:25
好像是哦 账户权限那些好烦人
要不我还是直接winform后台一直挂着算了 但是就怕它不稳定

用winsw把你这个注册成服务试试?

Broadm 发表于 2022-11-25 20:41

建议加上异常捕获,可以把异常写到文件中,方便调试

lizf2019 发表于 2022-11-25 20:43

jidesheng6 发表于 2022-11-25 20:38
用winsw把你这个注册成服务试试?

可以注册winform吗
页: [1] 2
查看完整版本: C#服务 启动失败 -错误1064