Отправить нажатие клавиши в непрофильном приложении Windows - PullRequest
0 голосов
/ 14 июня 2019

Мне нужно захватывать изображение с веб-камеры каждые X секунд. Первоначально я создал скрипт на Python, который использовал OpenCV, но он работал ужасно, поэтому, поскольку встроенное в камеру приложение для Windows 10 могло создавать нормальные изображения, я подумал, что просто сделаю программу, которая будет отправлять нажатия клавиш, оставаясь в фоновом режиме, чтобы я все еще мог использовать компьютер Сначала я создал что-то, что отправляло ключи очень хорошо, но отправляло их в приложение переднего плана, что недопустимо

Я перебрал несколько вопросов по Stackoverflow, но, похоже, ничего не работает так, как я хочу

Le код:

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

namespace This_project
{
    class Program
    {
        [DllImport("User32.dll")]

        public static extern IntPtr PostMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam);

        static void Main(string[] args)
        {
            Process p = Process.Start("microsoft.windows.camera:");

            const uint WM_KEYDOWN = 0x100;
            const uint WM_KEYUP = 0x0101;
            IntPtr edit = p.MainWindowHandle;

            Thread.Sleep(2500);

            PostMessage(edit, WM_KEYDOWN, (IntPtr)(Keys.Space), IntPtr.Zero);
            PostMessage(edit, WM_KEYUP, (IntPtr)(Keys.Space), IntPtr.Zero);
        }
    }
}

Я ожидаю, что программа откроет приложение камеры и нажмет пробел, чтобы сделать снимок, даже если все не на переднем плане. Кроме того, код, который я собрал, выдает исключение во время выполнения: Unhandled Exception: System.NullReferenceException: Object reference not set to an instance of an object. at Snap_webcam.Program.Main(String[] args) in C:\Users\username\source\repos\This project\This project\Program.cs:line 21, это строка, где код говорит: IntPtr edit = p.MainWindowHandle; с какой целью назначить, в какое окно отправлять нажатия клавиш, но оно, вероятно, работает только с настольными приложениями

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