public VirtualBoxControl(string name, int width, int height) { // boot Console.WriteLine("# booting vm"); VirtualBox.VirtualBoxClass vbox = new VirtualBox.VirtualBoxClass(); vm = vbox.FindMachine(name); session = new VirtualBox.SessionClass(); VirtualBox.IProgress progress = vbox.OpenRemoteSession(session, vm.Id, "gui", null); progress.WaitForCompletion(-1); vm.ShowConsoleWindow(); // Wait while (vm.State != VirtualBox.MachineState.MachineState_Running) { Thread.Sleep(1000); } // buffer int x = 0, y = 0; session.Console.Display.GetFramebuffer((uint)0, out buffer, out x, out y); // disable mouse integration Thread.Sleep(3000); Console.WriteLine("disabling mouse integration"); DisableMouseIntegration(name, width, height); }
static unsafe void Screenshot(VirtualBox.Session session) { var img = new byte[10_000_000];