функциональность значка рабочего стола в окне

Моя жена жалуется, что у меня слишком много значков на рабочем столе Windows XP-Pro.

Мне нравится иметь возможность быстро перетащить файл на значок приложения, которое я хочу открыть. И мне нравится переходить по ссылке, чтобы открывать часто используемые глубоко вложенные папки, а не перемещаться по ним. Таким образом, у меня на рабочем столе более 100 иконок.

(У нас одна и та же учетная запись пользователя, потому что мы так часто переключаемся туда и обратно и потому что нам обоим нужен доступ к одной и той же электронной почте, поэтому отдельные учетные записи - это не ответ.)

Я хотел бы написать программу, которая имела бы функциональность, аналогичную рабочему столу Windows. Затем я мог бы открыть это окно, чтобы выполнить перетаскивание, но в свернутом виде я оставил бы экран рабочего стола малозаселенным для моей жены. В качестве дополнительного бонуса я мог реализовать лучшую организацию значков, чем позволяет рабочий стол.

Это похоже на то, что делает окно проводника, за исключением того, что рабочий стол позволяет вам выполнять некоторую компоновку значков. (Например, значки программ слева (наиболее часто используемые - вверху), папки вверху, файлы данных справа.)

  1. Как мне сделать так, чтобы значок отображался в форме Windows (или в соответствующем элементе управления в форме)? (Например, если я добавлю ссылку на Блокнот или ссылку на папку с файлами.)

  2. Как мне выполнить то же действие, что и на рабочем столе, если дважды щелкнуть значок? (Например, если дважды щелкнуть ссылку на папку.)

  3. Как мне выполнить то же действие, что и на рабочем столе, если на значок что-то перетащено? (Например, текстовый файл перетаскивается на значок Блокнота.)

Я использую Visual Studio и C # .NET для программирования.

Я знаю, как выполнять простое перетаскивание.

Я не знаю:
A. Какие элементы управления использовать в форме для отображения значков
Б. как найти значок
В. Какие команды создаются на рабочем столе в различных ситуациях (чтобы я мог эмулировать функционал)

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


person Mark T    schedule 04.10.2009    source источник


Ответы (2)


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

Ключевой элемент, на который вы захотите обратить внимание, - это Drag / Drop, который очень хорошо поддерживается WinForms. Если вы реализуете свои значки как ImageBoxes, вы можете установить свойство AllowDrop для значков программы, а затем обработать событие DragDrop и заставить его вызывать перегрузку System.Diagnostics.Process () для запуска приложения с отброшенным именем файла в качестве аргумента.

Что касается поиска значков, то в большинстве программ их значки включены в качестве ресурса в их .EXE-файл или в связанную .DLL.

Что касается вопроса C, основной вопрос заключается в том, какое поведение рабочего стола вы хотели бы иметь в своей программе? Explorer.exe - это масштабное приложение, которое делает гораздо больше, чем то, что вам нужно, или то, что вам нужно или вы хотите реализовать. После того, как вы решите, какие функции вам нужны, поиграйте со списком событий IntelliSense для элементов управления формы и изображения. Вы обнаружите, что многие действия предоставляются вам бесплатно в общих элементах управления Windows, а дополнительное поведение довольно легко добавить, обработав соответствующие события.

person Phillip Knauss    schedule 04.10.2009
comment
Спасибо за ответ. Действия, которые я хочу, перечислены в исходном вопросе: добавить значок программы с помощью перетаскивания, открыть значок программы с помощью двойного щелчка, перетащить элемент на значок программы и позволить этой программе открыть выпавший элемент. Большинство дополнительных «функций» в Explorer мне не нравятся и не нужны. - person Mark T; 05.10.2009
comment
Этот вопрос был ответом на вопрос C, другие упомянутые вами функции описаны в другом месте. Интересной особенностью перетаскивания является то, что он работает между WInForms и другими частями окон, поэтому вы можете установить свойство AllowDrop своей основной формы, а затем перетащить значки со своего рабочего стола на форму, чтобы создать новый ImageBox, соответствующий этой программе. Вы можете открыть программу двойным щелчком, вызвав System.Diagnostics.Process (программа) в обработчике событий DoubleClick для полей значков. - person Phillip Knauss; 06.10.2009

Почему бы вам просто не использовать виртуальный рабочий стол ??

Попробуйте http://virtuawin.sourceforge.net/

Вы пропустите много кода.

Прямо со своей страницы: «VirtuaWin - это менеджер виртуальных рабочих столов для операционной системы Windows (Win9x / ME / NT / Win2K / XP / Win2003 / Vista). Диспетчер виртуальных рабочих столов позволяет вам организовывать приложения на нескольких виртуальных рабочих столах (также называемых« рабочими пространствами »). Виртуальные рабочие столы очень распространены в Unix / Linux, и как только вы привыкнете их использовать, они станут неотъемлемой частью производительного рабочего процесса ».

person Luis Lobo Borobia    schedule 04.10.2009
comment
Спасибо за предложение. У меня были проблемы с Visual Studio, которая плохо играла с VirtuaWin ... но я обновлюсь до последней сборки и попробую еще раз. Я много лет любил использовать несколько рабочих столов в UNIX. Но это не решает полностью проблему значков. Все значки, которые я использую, будут на всех моих виртуальных рабочих столах, включая значок электронной почты, которым я поделился с моей женой. - person Mark T; 05.10.2009