|
|
|
|
|
для: Commander
(08.10.2009 в 04:13)
| | То что вы не понимаете сущностей и не знаете, как это реализовать, еще не означает, что это невозможно.
Я когда то баловался ассемблером и написал именно то, о чем вы сейчас говорите, т.е. запускал несколько виртуальных машин с поддержкой своих драйверов парой клавиатур, парой мониторов и принтером. При этом программы не путались. Вы же сами написали, что программа получает события от системы, так разделите эти системы.
Если бы мне это было нужно и интересно, я бы нашел возможность как это реализовать, а не стал бы искать причины, которые мешают это сделать. | |
|
|
|
|
|
|
|
для: Киналь
(07.10.2009 в 21:17)
| | Да, сначала написал, а потом уж подумал. Учитывая, что таких "велосипедов" пока что мало, может, изобретут новый. | |
|
|
|
|
|
|
|
для: GeorgeIV
(07.10.2009 в 21:44)
| | Посмотрите мое сообщение, на которое Вы ответили. Драйвер написать не проблема - вопрос в том, как связать одну клавиатуру с одной программой, а вторую - с другой. И как при этом одновременно сделать обе программы активными, да еще с фокусом ввода. Я почему и говорю, что требуется две оси - и эмулятор здесь не поможет, он, как и любая другая программа получает события от системы, а она не станет сообщать, какая именно клава вызвала событие onkeypress. | |
|
|
|
|
|
|
|
для: Commander
(07.10.2009 в 19:08)
| | Как то поздно заглянул в эту ветку. Все это решаемо и даже есть в вариациях. Писать драйвер не такая уж большая проблема, тем более что для клавиатур можно обойтись HID драйвером. Запускать несколько ОС на одном компе современные виртуализаторы могут прекрасно. В чем вы сложности видите. Две видеокарты тоже можно поодерживать без проблем. Не делайте проблемы. | |
|
|
|
|
|
|
|
для: DJ Paltus
(07.10.2009 в 18:19)
| | Да вы им всё удовольствие портите=)) | |
|
|
|
|
|
|
|
для: cheops
(07.10.2009 в 18:32)
| | Вроде алгоритм я придумал. Если писать программу, которая будет переключателем для разных пользователей, то она без проблем сможет просто сама переключать фокус ввода с одного приложения на другое, в зависимости от того, какая программа какому пользователю принадлежит. Сложность в том, как этой программе отличить сигналы одной клавы от сигналов другой. Система таких данных не предоставляет. С драйвером напрямую взаимодействовать невозможно. Разве что писать свой драйвер. Да еще и решать проблему, как одному пользователю передать один рабочий стол, а другому - другой.
Кроме этого, будет весомая проблема с производительностью - немалая доля процессорного времени будет уходить на работу самой программы. Ведь ей нужно определить, какой программе передать сигнал от клавиатурного, мышиного события и т.д., какой рабочий стол обновить.
Но основная проблема в том, как определить, какая клава (мышь) дергает прерыванием (то есть посылает событие нaшей прикладной программе). Если Вы, cheops, знаете - можно написать такую программу. По-моему, это невозможно. Система не дает нам данных об устройстве, которое вызвало событие - она просто сообщает, что событие произошло. Чтобы понять, какое устройство вызвало событие, нужно спускаться на системный уровень, то есть заменить собой библиотеку аппаратных абстракций (в ней перехватывается прерывание от клавы) и часть ядра системы (в котором генерируются события). Впрочем, часть ядра заменить невозможно - ядро представляет собой один exe-файл. | |
|
|
|
|
|
|
|
для: cheops
(07.10.2009 в 18:57)
| | Опечатался. Хотел спросить, какие учетные записи Вы имеете в виду. | |
|
|
|
|
|
|
|
для: Commander
(07.10.2009 в 18:48)
| | >>управления учетными записями
>
>Какие ученые записи Вы имеете в виду?
Хм... вроде правильно написал "учетные", а не "ученые"... | |
|
|
|
|
|
|
|
для: cheops
(07.10.2009 в 18:34)
| | >управления учетными записями
Какие ученые записи Вы имеете в виду? | |
|
|
|
|
|
|
|
для: cheops
(07.10.2009 в 18:32)
| | >PS Скорее проблема будет в другом - в фокусах - два одновременно активных окна по умолчанию не создать - вот это не знаю можно обойти или нет.
В этом-то вся проблема. | |
|
|
|
|