public async Task Execute(IJobExecutionContext context) { JobDataMap dataMap = context.JobDetail.JobDataMap; SequenceKeyData model = dataMap.Get("param") as SequenceKeyData; while (GlobalVars.isworking) { Thread.Sleep(10); } try { GlobalVars.isworking = true; Task task = Task.Run(() => { if (model.iscombomode) { Debug.WriteLine($"-----연속 키 입력 시작: 동시입력 모드 ----- {context.JobDetail.Key}"); for (int i = 0; i < model.sendkeys.Count; i++) { if (model.isholding) { if (model.sendkeys[i] != 0) { KeyboardInputs.PressKeyMulti(model.holdkey, model.sendkeys[i]); Debug.WriteLine($"연속 키 입력: 동시입력 모드 동시입력 {(VirtualKeyCode)model.holdkey}, {(VirtualKeyCode)model.sendkeys[i]}"); Thread.Sleep(model.interval); } } else { if (model.sendkeys[i] != 0) { KeyboardInputs.PressKey(model.sendkeys[i]); Debug.WriteLine($"연속 키 입력: 동시입력 모드 단독입력 {(VirtualKeyCode)model.sendkeys[i]}"); Thread.Sleep(model.interval); } } if (model.unholdafter.Contains(i)) { model.isholding = false; } else if (model.reholdafter.Contains(i)) { model.isholding = true; } } Debug.WriteLine($"-----연속 키 입력 종료: 동시입력 모드----- {context.JobDetail.Key}"); } else { Debug.WriteLine($"-----연속 키 입력 시작: 단독입력 모드----- {context.JobDetail.Key}"); for (int i = 0; i < model.sendkeys.Count; i++) { if (model.sendkeys[i] != 0) { KeyboardInputs.PressKey(model.sendkeys[i]); Debug.WriteLine($"연속 키 입력: 단독입력 모드 단독입력 {(VirtualKeyCode)model.sendkeys[i]}"); Thread.Sleep(model.interval); } } Debug.WriteLine($"-----연속 키 입력 종료: 단독입력 모드----- {context.JobDetail.Key}"); } model.isholding = true; }); try { Task.WaitAll(task); } catch (AggregateException exception) { exception.Handle(ex => { return(true); }); return; } await Task.Delay(100); } finally { GlobalVars.isworking = false; } }
public static void SetQuartzJobs() { GlobalVars.scheduler.Clear(); using (StreamReader sr = new StreamReader("settings/data.json")) { string json = sr.ReadToEnd(); GlobalVars.mainSchedule = JsonConvert.DeserializeObject <ScheduleModel>(json, settings); } if (currentSetting.parsemode == "string") { foreach (var x in GlobalVars.mainSchedule.presskey) { try { PressKey newjob = new PressKey(); int param = KeyboardInputs.VKStringtoInt(x.sendkey); GlobalVars.scheduler.AddJobRow(x.cronexpression, newjob, param); } catch { continue; } } } else { foreach (var x in GlobalVars.mainSchedule.presskey) { try { PressKey newjob = new PressKey(); GlobalVars.scheduler.AddJobRow(x.cronexpression, newjob, int.Parse(x.sendkey)); } catch { continue; } } } if (currentSetting.parsemode == "string") { foreach (var x in mainSchedule.presskeymulti) { try { PressKeyMulti newjob = new PressKeyMulti(); List <int> param = x.sendkeys.ConvertAll(KeyboardInputs.VKStringtoInt); GlobalVars.scheduler.AddJobRow(x.cronexpression, newjob, param); } catch { continue; } } } else { foreach (var x in mainSchedule.presskeymulti) { try { PressKeyMulti newjob = new PressKeyMulti(); GlobalVars.scheduler.AddJobRow(x.cronexpression, newjob, x.sendkeys.ConvertAll(int.Parse)); } catch { continue; } } } if (currentSetting.parsemode == "string") { foreach (var x in mainSchedule.sequencekey) { SequenceKeyData param = new SequenceKeyData(); if (x.holdkey != string.Empty) { param.holdkey = KeyboardInputs.VKStringtoInt(x.holdkey); param.iscombomode = true; } else { param.iscombomode = false; param.holdkey = 0; } param.interval = TimeSpan.FromSeconds(x.interval); param.unholdafter = x.unholdafter; param.reholdafter = x.reholdafter; param.sendkeys = x.sendkeys.ConvertAll(KeyboardInputs.VKStringtoInt); param.sendkeys.Insert(0, 0); param.isholding = true; GlobalVars.scheduler.AddJobRow(x.cronexpression, new SequenceKey(), param); } } else { foreach (var x in mainSchedule.sequencekey) { SequenceKeyData param = new SequenceKeyData(); if (x.holdkey != string.Empty) { param.holdkey = int.Parse(x.holdkey); param.iscombomode = true; } else { param.iscombomode = false; param.holdkey = 0; } param.interval = TimeSpan.FromSeconds(x.interval); param.unholdafter = x.unholdafter; param.reholdafter = x.reholdafter; param.sendkeys = x.sendkeys.ConvertAll(int.Parse); param.sendkeys.Insert(0, 0); param.isholding = true; GlobalVars.scheduler.AddJobRow(x.cronexpression, new SequenceKey(), param); } } App.Logger.Info(GlobalVars.scheduler.GetAllGroupList()); }