При использовании SendKeys.SendWait в фоновом режиме, почему я слышу 3-х секундный звуковой сигнал? - PullRequest
0 голосов
/ 23 сентября 2018

Как форма1, возможно, не в фокусе, когда она выполняет SendKeys?

Основной целью в конце будет симуляция комбинации нажатий клавиш Ctrl + S, когда конкретное окно процесса находится впереди в фокусе.

Проблема в том, что теперь окно процесса находится спереди, и я использую его меню. Каждый раз, когда таймер отправляет такие клавиши, как Form1 или используемый мной процесс, его меню не издает звуковые сигналы.фокус.Не уверен.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Process_Window
{
    public partial class Form1 : Form
    {

        public Form1()
        {
            InitializeComponent();

            timer1.Enabled = true;
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            System.ComponentModel.BackgroundWorker worker = new System.ComponentModel.BackgroundWorker();

            worker.DoWork += Worker_DoWork;
            worker.ProgressChanged += Worker_ProgressChanged;
            worker.RunWorkerCompleted += Worker_RunWorkerCompleted; ;
            worker.RunWorkerAsync();
        }

        private void Worker_DoWork(object sender, DoWorkEventArgs e)
        {
            SendKeys.SendWait("^s");
        }

        private void Worker_ProgressChanged(object sender, ProgressChangedEventArgs e)
        {

        }

        private void Worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {

        }
    }
}

1 Ответ

0 голосов
/ 23 сентября 2018

SetForeGroundWindow

Вы можете использовать это непосредственно перед вызовом SendKeys.SendWait(), так что вы совершенно уверены, что отправили Ctrl + S в хорошее окно, вы можете использовать SetForeGroundWindow с FindWindow, если япомните имя правильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...