using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis.CSharp;
using Microsoft.CodeAnalysis.CSharp.Scripting;
using Microsoft.CodeAnalysis.Scripting;
using System.Runtime.InteropServices;
namespace Testapp
{
internal class Program
{
static async Task Main(string[] args)
{
var codeToCompile = @"
[DllImport(""user32.dll"")]
static extern void mouse_event(int dwFlags, int dx, int dy, int dwData, int dwExtraInfo);
[DllImport(""user32.dll"")]
static extern void keybd_event(byte bGAK, byte bScan, int dwFlags, int dwExtraInfo);
[DllImport(""user32.dll"")]
static extern short GetAsyncKeyState(int GAKey);
if((GetAsyncKeyState(0x26) & 0x8000) != 0)//проверка на стрелочку вверх
{
mouse_event(0x0001, 0, -10, 0, 0);// курсор вверх на 10 пикселей
}
if ((GetAsyncKeyState(0x28) & 0x8000) != 0)//проверка на стрелочку вниз
{
mouse_event(0x0001, 0, 10, 0, 0);// курсор вниз на 10 пикселей
}
if ((GetAsyncKeyState(0x25) & 0x8000) != 0)//проверка на стрелочку налево
{
mouse_event(0x0001, -10, 0, 0, 0);// курсор влево на 10 пикселей
}
if ((GetAsyncKeyState(0x27) & 0x8000) != 0)//проверка на стрелочку направо
{
mouse_event(0x0001, 10, 0, 0, 0);// курсор вправо на 10 пикселей
}
";
var options = ScriptOptions.Default;
options = options.WithImports("System", "System.Console");
Script compiledScript = CSharpScript.Create(codeToCompile, options);
Console.WriteLine("Executing code...");
while (true) { var result = await compiledScript.RunAsync(); }// зацикливает код, всё что дальше - бессмысленно
//Console.WriteLine(result.ReturnValue);
Console.WriteLine("Code executed...");
Console.ReadKey();
}
}
}