Вверх ↑
Этот топик читают: Гость
Ответов: 893
Рейтинг: 18
#1: 2009-01-16 16:37:21 ЛС | профиль | цитата
Помогите разобратся , я хочу написать утилитку для создания второго рабочего стола , но как запустить explorer отдельным потоком незнаю..



Такой запуск приведёт к простому открытию окна но не старту рабочего стола , а нужно стартовать паралельный рабочий стол ...
карма: 0
Время верстки: %cr_time% Текущее время: %time%
0
Администрация
Ответов: 15295
Рейтинг: 1519
#2: 2009-01-16 17:24:26 ЛС | профиль | цитата
Byuik писал(а):
а нужно стартовать паралельный рабочий стол ...

это невозможно
карма: 27
0
Ответов: 2125
Рейтинг: 159
#3: 2009-01-16 18:10:34 ЛС | профиль | цитата
Можно лишь скрывать и показывать окна на десктопе, а также следить за появлением новых. А вот иконки explorer-а расставлять по своим местам на каждом десктопе - сложнее, а уж как определить, что они переместились - вообще непонятно.
карма: 1

0
Ответов: 893
Рейтинг: 18
#4: 2009-01-16 19:00:07 ЛС | профиль | цитата
Dilma, tsdima, вот ета тулза запускает explorer отдельным потоком и организовывает 4 рабочих стола ftp://yw.ath.cx/install_arhiv/%D0%E0%E1%EE%F7%E8%E9%20%F1%F2%EE%EB/Ibdesk.rar

Dilma писал(а):
это невозможно


оказывается возможно.

tsdima писал(а):
Можно лишь скрывать и показывать окна на десктопе, а также следить за появлением новых. А вот иконки explorer-а расставлять по своим местам на каждом десктопе - сложнее, а уж как определить, что они переместились - вообще непонятно.


Нет программа не следит за ярлыками она всеголиш организовывает ещё один поток explorera , по моим догадкам возможно даже не того пользователя который запустил её.
------------ Дoбавленo:

конечно хотелось бы создать такое на hiasm не занимаясь обратной разработкой чужих программм
карма: 0
Время верстки: %cr_time% Текущее время: %time%
0
Администрация
Ответов: 15295
Рейтинг: 1519
#5: 2009-01-16 19:11:34 ЛС | профиль | цитата
на сессию пользователя возможен только один запуск explorer. На не серверных ОС возможна только одна рабочая сессия пользователя в каждый момент времени
карма: 27
0
Ответов: 1088
Рейтинг: 112
#6: 2009-01-16 19:52:41 ЛС | профиль | цитата
Byuik, и чем эта тулза отличается от к примеру http://softsearch.ru/programs/46-715-virtual-desktop-download.shtml
Есть кстате несколько 3D рабочих столов под XP...
карма: 0
Время верстки: %cr_time% Текущее время: %time%
0
Ответов: 2125
Рейтинг: 159
#7: 2009-01-16 20:39:15 ЛС | профиль | цитата
Dilma писал(а):
на сессию пользователя возможен только один запуск explorer

На самом деле запустить второй explorer можно:
code_11398.txt

Только потом начнутся вопросы: а как переключаться между ними? И т.д. и т.п.

Если кто-то отважится запустить этот пример, имейте ввиду - чтобы закрыть эксплорер, его надо "убить" TaskManager-ом, а потом нужно "убить" и сам TaskManager, который был вызван на другом десктопе. Главное не ошибиться в выборе процесса Если окно "потаскать" по экрану, то в TaskManager-е заметна его активность.

Но можно и просто "разлогиниться", тогда закроются все приложения на всех десктопах.
карма: 1

0
файлы: 1code_11398.txt [1.7KB] [545]
Администрация
Ответов: 15295
Рейтинг: 1519
#8: 2009-01-16 20:51:47 ЛС | профиль | цитата
посмотрел эту программу(Ibdesk) и убедился, что запускать explorer дважды всетаки невозможно, о чем с самого начала и говорилось в теме. В коде code_11398 видимо все тоже самое делается. Это не создание нового потока - это создание какой-то виртуальной сессии на компе, после которой все запускаемые впоследствие программы принадлежат уже разным виртуальным средам. Проявляется это скажем на том, что стандартные комбинации через клавишу Win обрабатываются только первой копией Explorer(из основной сессии) и все запускаемые таким образом приложения(TaskMan, Run, Explorer и прочие) не видно до тех пор, пока не переключишся на первый десктоп. Если попробовать вывести список окон, то можно заметить, что и там присутствуют только те, которые были открыты именно с текущего десктопа и перетащить их никуда больше не получится.

Сделан же этот режим для использования удаленных терминалов(Remote desktop и Telnet) и не для чего больше.

Правильно построенный виртуальный рабочий стол можно найти в примере из пакета WindowsVirtDesk.sha
карма: 27
0
Ответов: 2125
Рейтинг: 159
#9: 2009-01-16 21:08:08 ЛС | профиль | цитата
Dilma писал(а):
стандартные комбинации через клавишу Win обрабатываются только первой копией Explorer

Ясное дело, кто первый "хукнул", тот и обрабатывает. Вопрос был: как запустить второй эксплорер, я дал ответ.
карма: 1

0
Гость
Ответов: 17029
Рейтинг: 0
#10: 2009-01-16 21:14:35 правка | ЛС | профиль | цитата


Редактировалось 4 раз(а), последний 2025-01-20 13:18:51
карма: 0

0
Ответов: 893
Рейтинг: 18
#11: 2009-01-16 21:17:01 ЛС | профиль | цитата
Сори забыл залогинется на радостях . 192-6-113-92.pool.ukrtel это был я
карма: 0
Время верстки: %cr_time% Текущее время: %time%
0
Администрация
Ответов: 15295
Рейтинг: 1519
#12: 2009-01-16 21:27:03 ЛС | профиль | цитата
tsdima, если давать такие решения без просветления о сути происходящего так и будешь получать подобные вопросы
192-6-113-92.pool.ukrtel. писал(а):
Как доделать точку hendle запущенного эксплорера для управления ним как окном ?


карма: 27
0
Ответов: 2125
Рейтинг: 159
#13: 2009-01-16 21:36:35 ЛС | профиль | цитата
Byuik писал(а):
У меня его к сожалению нет

Шутишь? Этот пример был сделан аж 1 мая 2005 года ElementsDelphiExampleWindowsVirtDesk.sha
Правда, он работает только при наличии hook.dll, а эту DLL не все любят

Byuik писал(а):
для управления ним как окном ?

Переключаться между десктопами можно только используя API SwitchDesktop, а показывать-скрывать окно тут уже не поможет, т.к. другой десктоп - это другой набор окон. По этой-же причине нельзя перетащить окно с одного десктопа на другой. А при использовании КОЛ-а вообще нельзя создать окно на другом десктопе, т.к. все дочерние окна принадлежат окну Applet-а. Единственный вариант - запустить твоё приложение ещё раз на другом десктопе (с параметром, чтобы после запуска были произведены другие действия). Кстати, все копии твоего приложения могут общаться через named pipes, первая копия создаст named pipe, а остальные будут его использовать. Тогда и параметр не нужен, если named pipe уже есть, то данная копия не главная.
карма: 1

0
Администрация
Ответов: 15295
Рейтинг: 1519
#14: 2009-01-16 21:39:08 ЛС | профиль | цитата
ну может теперь смысл фразы
Dilma писал(а):
Сделан же этот режим для использования удаленных терминалов и не для чего больше.

станет наконец понятен...
карма: 27
0
Ответов: 893
Рейтинг: 18
#15: 2009-01-16 21:57:20 ЛС | профиль | цитата
tsdima, нашол пример , нет он однозначно неподходит , нужен функционал такойже как ввыше приведённой тулзе.

tsdima писал(а):
Переключаться между десктопами можно только используя API SwitchDesktop, а показывать-скрывать окно тут уже не поможет

Понял что нельзя , ток как реализовать переключение через API SwitchDesktop
------------ Дoбавленo:

Думаю естли зделать компонент доплнительный рабочий стол многие наверно егоб использовали .
А перетаскивание программ с десктопа на десктоп мне вроди такого не требовалось , хотя лично на моей машине такая фича есть
карма: 0
Время верстки: %cr_time% Текущее время: %time%
0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)