Оболочка C # InputSimulator - как ее использовать? - PullRequest
5 голосов
/ 07 июля 2011

Я хочу смоделировать щелчок клавиатуры для внешней программы. Я пробовал SendMessage, PostMessage, SendKeys, но они не отправляют ключ одной конкретной программе.Поэтому я хотел попробовать SendInput, и я скачал хорошую оболочку для SendInput - http://inputsimulator.codeplex.com/

Я добавил сборку в свой проект, но пока не могу начать использовать ни одну из функций...

Что мне делать?Что «Использование» я должен добавить?

Ответы [ 4 ]

5 голосов
/ 07 июля 2011

Я считаю, что вам нужно

Using WindowsInput; 

Если это не так, вы можете просмотреть его в Обозревателе объектов и увидеть пространство имен. Просто щелкните правой кнопкой мыши ссылку в обозревателе решений и нажмите кнопку Обзор.

2 голосов
/ 07 июля 2011

Вы можете смоделировать ввод с клавиатуры в программу следующим образом:

  • перенести программу, которую вы хотите отправить, на передний план, используя SetForegroundWindow из user32.dll

  • используйте метод SendKeys.SendWait для отправки фактического ключа в окно программы

Пример кода (запустить блокнот перед тестированием):

using System;
using System.Windows.Forms;
using System.Runtime.InteropServices;

namespace SendKeyboardInput
{
    public class SendKey
    {
        [DllImport("user32.dll")]
        public static extern bool SetForegroundWindow(IntPtr hWnd);

        public void Send()
        {
            System.Diagnostics.Process[] p = System.Diagnostics.Process.GetProcessesByName("notepad"); //search for process notepad
            if (p.Length > 0) //check if window was found
            {
                SetForegroundWindow(p[0].MainWindowHandle); //bring notepad to foreground
            }

            SendKeys.SendWait("a"); //send key "a" to notepad
        }
    }
}
1 голос
/ 16 августа 2013

У меня была такая же проблема, но мне удалось сделать это, выполнив эти 3 шага

  1. Извлеките содержимое InputSimulator куда-нибудь разумное, например URL вашего проекта

  2. В Visual Studio Нажмите Project-> Add Reference и найдите файл DLL InputSimulator

  3. Добавьте пространство имен WindowsInput в проект, добавив «using WindowsInput;»
0 голосов
/ 07 июля 2011

Хотя я не могу сказать вам, какие директивы вам могут понадобиться, я не уверен, что этот инструмент позволит вам отправлять ввод в определенное окно.В разделе «История» на странице, на которую вы ссылались, указано:

Первоначально он был написан для использования в проекте WpfKB (клавиатура с сенсорным экраном WPF) для имитации ввода реальной клавиатуры с active * 1005.* window.

Единственное решение этой проблемы, о котором я знаю, включает SendMessage, может быть, вы могли бы объяснить, где была проблема с этим?

...