public ComboClient(IntPtr flashHandle) { sender = new MessageSender(flashHandle); // スレッドの初期化 comboThread = new Thread(() => { while (true) { // 123457869→15分待機 sender.Key(KeyCode.VK_KEY_1); sender.Key(KeyCode.VK_KEY_2); sender.Key(KeyCode.VK_KEY_3); sender.Key(KeyCode.VK_KEY_4); sender.Key(KeyCode.VK_KEY_5); sender.Key(KeyCode.VK_KEY_7); sender.Key(KeyCode.VK_KEY_8); sender.Key(KeyCode.VK_KEY_6); sender.Key(KeyCode.VK_KEY_9); Thread.Sleep((15 * 60 + 2) * 1000); // 89123457→2分半待機 sender.Key(KeyCode.VK_KEY_8); sender.Key(KeyCode.VK_KEY_9); sender.Key(KeyCode.VK_KEY_1); sender.Key(KeyCode.VK_KEY_2); sender.Key(KeyCode.VK_KEY_3); sender.Key(KeyCode.VK_KEY_4); sender.Key(KeyCode.VK_KEY_5); sender.Key(KeyCode.VK_KEY_7); Thread.Sleep((2 * 60 + 30 + 1) * 1000); // 12→2分半待機 sender.Key(KeyCode.VK_KEY_1); sender.Key(KeyCode.VK_KEY_2); Thread.Sleep((2 * 60 + 30 + 1) * 1000); // 12→2分半待機 sender.Key(KeyCode.VK_KEY_1); sender.Key(KeyCode.VK_KEY_2); Thread.Sleep((2 * 60 + 30 + 1) * 1000); // 1234→2分半待機 sender.Key(KeyCode.VK_KEY_1); sender.Key(KeyCode.VK_KEY_2); sender.Key(KeyCode.VK_KEY_3); sender.Key(KeyCode.VK_KEY_4); Thread.Sleep((2 * 60 + 30 + 1) * 1000); // 12→2分半待機 sender.Key(KeyCode.VK_KEY_1); sender.Key(KeyCode.VK_KEY_2); Thread.Sleep((2 * 60 + 30 + 1) * 1000); // 12→2分半待機 // ここまでのSleepに遊びを入れるのでこのフェイズを無効にしておく // sender.Key(KeyCode.VK_KEY_1); // sender.Key(KeyCode.VK_KEY_2); Thread.Sleep((2 * 60 + 30) * 1000); } }) { IsBackground = true }; // スレッドの開始 comboThread.Start(); }
public MessageClient(IntPtr flashHandle, Config config) { sender = new MessageSender(flashHandle); cts = new CancellationTokenSource(); token = cts.Token; // タスクの初期化 if (!(config.DontClick)) { clickTask = Task.Factory.StartNew(() => { while (true) { sender.Click(900, 320); var interval = 1000 / config.ClickInterval; Thread.Sleep(interval); try { if (token.IsCancellationRequested) { token.ThrowIfCancellationRequested(); } } catch (OperationCanceledException) { return; } } }, token, TaskCreationOptions.None, TaskScheduler.Default ); } capturingTask = Task.Factory.StartNew(() => { while (true) { using (var screen = ScreenCapture.GrayCapture(flashHandle)) { var recognizers = new ImageRecognitionBase[] { new Clickable(), }; foreach (var recognizer in recognizers) { if (recognizer.Check(screen)) { sender.Click(recognizer.X, recognizer.Y); } } } try { if (token.IsCancellationRequested) { token.ThrowIfCancellationRequested(); } } catch (OperationCanceledException) { return; } Thread.Sleep(15000); } }, token, TaskCreationOptions.None, TaskScheduler.Default ); }