John Nay Ответов: 1

Делаю на C# для Windows эмулятор ОС нужен совет!


Эй мне нужен совет по этому вопросу

Я создаю эмулятор windows, и мне нужно знать, с чего мне нужно начать

То, что я построил до сих пор, я не хочу выдавать свой код прямо сейчас, поэтому любой совет без примеров кода был бы лучше для меня, спасибо...


Я построил простой лаунчер на c#, который может запускать любой внешний exe-файл внутри родительской winform в visual studio, поэтому я иду по правильному пути, но мне нужно знать, как загрузить ОС windows на winform, которую я построил внутри родительской winform...

Я думаю, что другие эмуляторы используют что-то вроде freedos для установки и эмуляции ОС внутри родительской winform, но они также эмулируют аппаратное обеспечение, поэтому я блуждаю, если есть более простой способ сделать это без большого количества кодирования. Я просто хочу сэкономить много времени на этом, не тратя много времени на кодирование строк и строк кода я знаю, что мне нужно кодировать некоторые вещи, но я не хочу тратить много времени, поэтому любой совет будет очень признателен.....

Что я уже пробовал:

Я построил лаунчер, который может запускать любой внешний exe-файл внутри родительской winform в visual studio 2017

BillWoodruff

"Мне нужно знать, как загрузить ОС windows на winform, которую я построил внутри родительской winform"

Вы смотрели на Докера ?

John Nay

Да, мне не нравится этот вариант...

Dave Kreskowiak

Итак, как же вы написали этот "лаунчер" и заставили исполняемое окно появиться в вашей собственной форме?

Для меня это звучит так, как будто вы просто написали код вокруг экземпляра процесса для запуска целевого исполняемого файла и просто повторно создали главное окно приложения с вызовом функции Win32 setparent.

John Nay

Я использовал эту демонстрацию в качестве базовой точки вы можете получить ее здесь https://www.codeproject.com/Articles/9123/Hosting-EXE-Applications-in-a-WinForm-project

Затем я выбрал menustrip и добавил открытую функцию в menustrip, а затем написал этот вид кода c# для вызова exe-файла для запуска внутри родительской формы windows..

Процесс Р = процесс.Начало("C:\\Program файлы (x86)\\DOSBox-0.74\\DOSBox.exe");
Нить.Сон(500);
п. WaitForInputIdle();
Setparent осуществляет(п. MainWindowHandle, это.Ручка);

И он вызывает exe-файл и загружает его в мой winform launcher, который имеет инструмент application_control из набора инструментов, который поставляется с загрузкой, которую я отправил вам выше по этой ссылке, надеюсь, это ответит на ваш вопрос...

Кроме того, я убедился, что у меня есть isMidiContainer установлен в true

Richard MacCutchan

Использование Процесса.Start-это миллион миль от того, чтобы быть эмулятором ОС Windows. Вам нужно понять, как выделить место в памяти для нового процесса, как загрузить его в память вместе с соответствующими библиотеками и как установить связь с его основной отправной точкой. И это лишь малая часть конечного продукта.

Dave Kreskowiak

Да, эта статья нигде не находится на пути к "эмулятору Windows". Нет никакого способа расширить существующий проект для поддержки "загрузки Windows".

Серьезно, нет никакого способа написать среду виртуализации для выполнения "эмуляции" Windows, не написав "много кода".

То, что вы сделали, больше похоже на предоставление очень простого рабочего стола для отображения окон приложений, и ничего больше.

John Nay

Я загрузил видео для доказательства, если вам это нужно, лол!

Richard MacCutchan

- Куда же?

F-ES Sitecore

Если ты;

а) хотите написать эмулятор ОС, но не знаете, с чего начать
б) подумайте, что изменение родительского файла EXE на ваш winform-это начало
в) Хотите сделать это, не написав много кода
Г) даже не могу понять, что вам нужно использовать кнопку "ответить" при ответе на комментарии

..Я бы сказал со всей честностью, что эта задача в настоящее время вам не по силам. Это огромная вещь и потребует *много* кода, и, вероятно, даже невозможно использовать c#

John Nay

Well how about that I make one and let you eat your words if you think I cant do it that's funny there's always more ways of doing things kinda like the way I showed you when you thought that it would be difficult to make a exe run inside of a parent program when you even wanted to know how I pulled it off a good programmer knows not one way but many ways to doing a hard task That's what makes a great programmer and all honesty most programmer's lack this kind of skill and make comments like this to people I'm not hating on you but I do make a point for sure. I will post the download on this site when I'm finished to let you gaze at it in amazement for sure lol... mabe it might make you think a little about other ways of doing things because what I am good at is doing it the easier way That's what makes me stand out from the others for sure.

Dave Kreskowiak

Хахахахаха!!! Позвольте мне подсказать вам кое-что о вашем маленьком проекте, где вы хотите "загрузить Windows" в окне. То, что вы описываете, - это переписывание "VMware Workstation" с нуля. Если вы сможете это сделать, вы не будете писать статью здесь на CP, потому что, серьезно, их будут сотни! Вы будете слишком заняты, зарабатывая много денег, крадя кусок пирога VMware.

Удачи вам!

1 Ответов

Рейтинг:
9

Gerry Schmitz

Вы говорите о "размещении виртуальных машин".

VM Box; Hyper-V; "параллели".

Как минимум, вам нужно перехватить все вызовы "Windows API" через ваш "гипервизор".

Итак, можно начать с рассмотрения "архитектуры гипервизора" для виртуальных машин.


John Nay

Большое вам спасибо за то что нашли время помочь мне очень ценю это спасибо вы помогли мне больше чем другие которые опубликовали так что действительно спасибо что совет хороший

Gerry Schmitz

Пожалуйста.

(Oracle) VM Box также имеет открытый исходный код; если вы хотите посмотреть на код.

John Nay

Хорошо, спасибо за совет...

Gerry Schmitz

Вот спецификации MS для создания совместимого с windows гипервизора:

https://docs.microsoft.com/en-us/virtualization/hyper-v-on-windows/reference/tlfs

Maciej Los

5ed!

Gerry Schmitz

Спасибо!

John Nay

Достигнет ли кто-нибудь эмуляции с помощью opencv или это не похоже на гипервизор

https://github.com/opencv/opencv

Gerry Schmitz

Совершенно другая область применения: "компьютерное зрение" (распознавание).

Больше всего это связано с "виртуальной реальностью" (в наши дни).

(Я подтвержду, когда прибудет мой Ryzen 7 GTX 1070).

John Nay

Я ревнивец у меня всего 950 серий