Редактировать код на основе строки во время выполнения - PullRequest
0 голосов
/ 30 ноября 2018

У меня есть программа, в которой пользователь вводит строку, которую должен набрать код, используя пакет InputSimulator NuGet.

Можно ли мне набрать код, заполнить пробелы строками и запустить его?вот что это значит:

Inputsimulator sim = new Inputsimulator();
   sim.Keyboard.KeyPress(WindowsInput.Native.VirtualKeyCode.VK_A);

(VK_A будет заменено на "VK_" + MyLetter)

Есть ли способ изменить или заставить код работать во время выполнения?

Я ценю любую помощь, спасибо.

Ответы [ 3 ]

0 голосов
/ 30 ноября 2018

Я не знаю о WindowsInput.Native.VirtualKeyCode.VK_A, но, очевидно, он выглядит как enum, поэтому они должны иметь инкрементные целочисленные значения, поэтому:

int a = (int)WindowsInput.Native.VirtualKeyCode.VK_A;

даст вам значение VK_A и VK_B будет равно + 1 и т. д. ...

int a = (int)WindowsInput.Native.VirtualKeyCode.VK_A;
for(int i=0; i<26; i++)
   sim.Keyboard.KeyPress((WindowsInput.Native.VirtualKeyCode)(a + i));

Вы можете использовать такой метод: WindowsInput.Native.VirtualKeyCode KeyCode (char chr) {int a = (ИНТ) WindowsInput.Native.VirtualKeyCode.VK_A;if (a> = 'A' и a <= 'Z') return (WindowsInput.Native.VirtualKeyCode) (chr - a);// еще делаем другие случаи} </p>

И тогда вы можете использовать это так:

sim.Keyboard.KeyPress(KeyCode('B'));
0 голосов
/ 30 ноября 2018

Я уверен, что вы не можете сделать это, потому что у вас должен быть компилятор на машине, и даже если у вас есть компилятор на машине, вы не можете сделать это во время выполнения, потому что Windows будет использовать файл .exe икомпилятор не может его изменить.

0 голосов
/ 30 ноября 2018

Вы можете просто использовать метод TextEntry вместо:

sim.Keyboard.TextEntry("Say hello!");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...