在好例子网,分享、交流、成长!
您当前所在位置:首页C# 开发实例C#文件解析和处理 → RPA自动化软件源码,可录制操作脚本(财务处理系统)

RPA自动化软件源码,可录制操作脚本(财务处理系统)

C#文件解析和处理

下载此实例
  • 开发语言:C#
  • 实例大小:1.73M
  • 下载次数:125
  • 浏览次数:3404
  • 发布时间:2018-07-01
  • 实例类别:C#文件解析和处理
  • 发 布 人:10.10@163.com
  • 文件格式:.zip
  • 所需积分:5
 相关标签: 系统 财务 机器人 自动化

实例介绍

【实例简介】可录制操作脚本,并实现 重新操作。流程录制以及自动化模拟操作。

【实例截图】

from clipboard


from clipboard


from clipboard

【核心代码】


using System;
using System.Drawing;
using System.IO;
using System.Runtime.InteropServices;
using System.Windows.Forms;
using ZMC.Macro;
using ZMC.Forms.Setting;

namespace ZMC
{
    public partial class RPA : Form
    {
        private Point mouseXY;
        [DllImport("User32")]
        public extern static bool GetCursorPos(ref Point lpPoint);
        [DllImport("user32.dll")]
        public static extern int GetAsyncKeyState(int vKey);
        [DllImport("user32.dll")]
        public static extern UInt32 RegisterHotKey(IntPtr hWnd, UInt32 id, UInt32 fsModifiers, UInt32 vk);
        [DllImport("user32.dll")]
        public static extern UInt32 UnregisterHotKey(IntPtr hWnd, UInt32 id);

        //private WebHelper wh;
        public RPA()
        {
            InitializeComponent();
        }

        //热键处理
        protected override void WndProc(ref Message m)
        {
            if (_recorder.IsRunning && (GetAsyncKeyState(0x00A2) & 0x8000) == 0x8000 && (GetAsyncKeyState(0x0001) & 0x8000) == 0x8000)
            {
                mouseXY = new Point();
                GetCursorPos(ref mouseXY);
                _recorder.mouseXY = mouseXY;
                controlMenu.Show(mouseXY);
                return;
            }
            int WM_F7 = (int)Keys.F7;
            switch (m.Msg)
            {
                case 0x312:
                    if (m.WParam.ToInt32() == WM_F7)
                    {
                        _player.IsPlaying = !_player.IsPlaying;
                    }
                    break;
            }
            base.WndProc(ref m);
        }
        private void RPA_Load(object sender, EventArgs e)
        {
            RegisterHotKey(this.Handle, (int)Keys.F7, 0, (int)Keys.F7);//暂停/继续
        }
        private void RPA_FormClosing(object sender, FormClosingEventArgs e)
        {
            UnregisterHotKey(this.Handle, (int)Keys.F7);
        }
        private const string ConfigurationFilePath = "config.json";
        private readonly MacroRecorder _recorder = new MacroRecorder();
        private readonly MacroPlayer _player = new MacroPlayer();

        private void stopControlButton_Click(object sender, EventArgs e)
        {
            //停止录制
            _recorder.StopRecording();
            this.recordControlButton.Visible = true;
            this.stopControlButton.Visible = false;
            this.buttonState();
            //wh.ClearListen();
            //wh = null;
        }

        private void playControlButton_Click(object sender, EventArgs e)
        {
            //检查是否有宏记录供播放
            if (_recorder.CurrentMacro == null || _recorder.CurrentMacro.Events.Length == 0)
            {
                MessageBox.Show("error_save_nomacro_message","error_save_nomacro_title", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
            //读取和播放宏
            _player.LoadMacro(_recorder.CurrentMacro);
            _player.PlayMacroAsync();
            _player.currentHandle = this.Handle;
            this.pauseControlButton.Visible = true;
            this.playControlButton.Visible = false;
            this.buttonState();
        }

        private void clearControlButton_Click(object sender, EventArgs e)
        {
            //确认是否清理宏.
            if (_recorder.CurrentMacro != null && _recorder.CurrentMacro.Events.Length > 0)
            {
                var result = MessageBox.Show("confirm_clear_message",
                    "confirm_clear_title", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
                if (result == DialogResult.Yes)
                    _recorder.Clear();
            }
        }

        private void openControlButton_Click(object sender, EventArgs e)
        {
            //确认是否清理宏.
            if (_recorder.CurrentMacro != null && _recorder.CurrentMacro.Events.Length > 0)
            {
                var result = MessageBox.Show("confirm_open_message","confirm_clear_title", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
                if (result == DialogResult.Yes)
                {
                    _recorder.Clear();
                }
            }

            //浏览打开宏文件
            var dialog = new OpenFileDialog
            {
            };

            //读取宏文件到记录
            if (dialog.ShowDialog() == DialogResult.OK)
            {
                var loadedMacro = new Macro.Macro();
                loadedMacro.Load(dialog.FileName);
                _recorder.LoadMacro(loadedMacro);
            }
        }

        private void saveControlButton_Click(object sender, EventArgs e)
        {
            //检查是否有宏文件可以保存
            if (_recorder.CurrentMacro == null || _recorder.CurrentMacro.Events.Length == 0)
            {
                MessageBox.Show("error_save_nomacro_message",
                    "error_save_nomacro_title", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            //将文件保存到指定目录
            var dialog = new SaveFileDialog
            {
            };

            //保存文件
            if (dialog.ShowDialog() == DialogResult.OK) { 
                _recorder.CurrentMacro.Save(dialog.FileName);
            }
        }

        private void loopControlButton_Click(object sender, EventArgs e)
        {
            _player.Pause();
            //设置重复播放次数
            var dialog = new RepetitionsDialog { Repetitions = _player.Repetitions };
            if (dialog.ShowDialog() == DialogResult.OK)
                _player.Repetitions = dialog.Repetitions;
        }

        private void recordControlButton_Click(object sender, EventArgs e)
        {
            //确认是否已有的宏是否保存
            if (_recorder.CurrentMacro != null && _recorder.CurrentMacro.Events.Length > 0)
            {
                var result = MessageBox.Show("confirm_append_message","confirm_append_title", MessageBoxButtons.YesNoCancel,
                    MessageBoxIcon.Warning);
                if (result == DialogResult.No)
                    _recorder.Clear();
                else if (result == DialogResult.Cancel)
                    return;
            }
            //开始录制
            _recorder.StartRecording();
            _recorder.currentHandle = this.Handle;
            this.recordControlButton.Visible = false;
            this.stopControlButton.Visible = true;
            this.buttonState();
        }

        private void pauseControlButton_Click(object sender, EventArgs e)
        {
            _player.Pause();
            this.pauseControlButton.Visible = false;
            this.playControlButton.Visible = true;
            this.buttonState();
        }

        private void buttonState()
        {
            if (this.stopControlButton.Visible == true || this.pauseControlButton.Visible == true)
            {
                this.recordControlButton.Enabled = false;
                this.loopControlButton.Enabled = false;
                this.openControlButton.Enabled = false;
                this.saveControlButton.Enabled = false;
                this.playControlButton.Enabled = false;
            }
            else
            {
                this.recordControlButton.Enabled = true;
                this.playControlButton.Enabled = true;
                this.loopControlButton.Enabled = true;
                this.openControlButton.Enabled = true;
                this.saveControlButton.Enabled = true;
            }
        }

        private void FileDownload(string excel, string vba, string template)
        {
            _recorder.ExcelConver(excel, vba, template);
        }
        private void TSM_OpenIE_Click(object sender, EventArgs e)
        {
            _recorder.OpenIE();
        }

        private void TSM_OpenSoftWare_Click(object sender, EventArgs e)
        {
            _recorder.OpenApplication("SOFTWARE");
        }

        private void TSM_MakeRules_Click(object sender, EventArgs e)
        {
            _recorder.MakeTimeRule();
        }


        private void TSM_ClearAD_Click(object sender, EventArgs e)
        {
            _recorder.ClearAD();
        }

        private void TSM_CloseMenu_Click(object sender, EventArgs e)
        {
            _recorder.MenuClose();
        }

        private void TSM_copy_Click(object sender, EventArgs e)
        {
            //_recorder.Copy();
        }

        private void TSM_Test_Click(object sender, EventArgs e)
        {

        }

        private void settingControlButton_Click(object sender, EventArgs e)
        {
            Setting set = new Setting();
            set.ShowDialog();
            if (set.DialogResult == DialogResult.OK)
            {

            }
            set.Dispose();
        }

        private void TSM_BrowerWrite_Click(object sender, EventArgs e)
        {
            _recorder.BrowerReadWrite();
        }

        private void TSM_ClearAd_Click_1(object sender, EventArgs e)
        {
            _recorder.BrowerClearAd();
        }

        private void TSM_BrowerClick_Click(object sender, EventArgs e)
        {
            _recorder.BrowerClick();
        }

        private void TMS_Javascript_Click(object sender, EventArgs e)
        {
            _recorder.ExecJavascript();
        }

        private void TSM_SaveVar_Click(object sender, EventArgs e)
        {
            _recorder.SaveGlobalVar();
        }

        private void TSM_ReadVar_Click(object sender, EventArgs e)
        {
            _recorder.ReadGlobalVar(0);
        }
    }
}


实例下载地址

RPA自动化软件源码,可录制操作脚本(财务处理系统)

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

第 1 楼 jayto001 发表于: 2018-11-15 17:29 08
操作不精确么

支持(0) 盖楼(回复)

第 2 楼 1755868984 发表于: 2019-12-13 11:12 38
可以用,先谢楼主

支持(0) 盖楼(回复)

发表评论

(您的评论需要经过审核才能显示)

查看所有3条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警