实例介绍
【实例简介】可录制操作脚本,并实现 重新操作。流程录制以及自动化模拟操作。
【实例截图】
【核心代码】
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); } } }
好例子网口号:伸出你的我的手 — 分享!
网友评论
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
支持(0) 盖楼(回复)
支持(0) 盖楼(回复)