Pull to refresh

Comments 28

Полезная тулза, спасибо!
А код и релизные файлы удобнее хранить на гитхабе.
Менеджер буфера обмена — это очень удобная вещь, когда привыкаешь им пользоваться. Я с давних времён пользовался функцией PuntoSwitcher «Следить за буфером обмена», но она периодически глючила. Потом использовал 3dclipboard, но там тоже появлялась та же ошибка, что в PuntoSwitcher. Сейчас пользуюсь clipdiary. Эта программа вроде работает довольно неплохо и удобна сама по себе.

А почему бы не разместить исходники на каком-нибудь хостинге проектов, например, на Bitbucket или Github?
Возможно, что ваша программа со временем станет лучше всех, да ещё и Open Source! :)
clipdiary — ставил, мне ей не удобно пользоваться, поскольку для того, чтоб получить нужный элемент в истории, необходимо открывать окно программы, к тому же я не люблю разного рода лицензии (а эта программа не совсем свободна по условию использования, цитирую первую строку из условий: "Использование программы дома (за исключением случаев, когда домашний компьютер является рабочим — удаленная работа, фриланс )").

На Github уже залил.
… поскольку для того, чтоб получить нужный элемент в истории, необходимо открывать окно программы

Не обязательно, есть глобальные горячие клавиши:
Скрытый текст



В общем, на вкус и цвет…
Это действительно на вкус и цвет, мне просто это не удобно. Возможно дело многолетней привычки в Linux, когда клипер всегда выводил в трее список истории — поэтому именно таки реализовал.
Все более менее известные перепробовал — ничего не удобно, самые хорошие менеджеры только под Linux — простые и ничего лишнего например клипер под KDE. В ditto — относительно много всего, но мне не нужны настройки, я хочу в контекстном меню в трее, сразу видеть меню из элементов истории, а не пункты по настройке программы.
Для меня менеджер буфера обмена — это не более удобного блокнотика, который сам запишет все что я копирую и когда нужно я с него возьму.
Тоже использую ditto. В настройки даже не заглядывал) Когда надо выбрать что-то из буфера, я нажимаю Ctrl + ` и стрелками выбираю. Никаких лишних движений.
ЗЫ: надо бы сесть и что-то подобное под андроид написать
У меня тоже есть подобное творение. Правда, всё никак не соберусь довести до ума. Но раз уж пошла такая тема, оставлю ссылочку :)





Немного вопрос не в тему, увидел использование Windows Forms и хотел спросить, вообще их ещё имеет смысл использовать, или всё таки надо WPF?
PS интересно, кстати, какая позиция MS по этому поводу.
PS2 программка полезная, поставил звездочку на гитхабе :)
Мне кажется, здесь особо без разницы, что использовать) Тут внешнего дизайна, по сути, практически нет.
Но насколько помню со времён моих ковырятельств в С#, работать с треем, юзая winforms, легче
Сейчас используют WPF. Он же сейчас стандарт в Windows 8 и Windows Phone. Впрочем, никто не запрещает использовать Windows Forms, но он более не развивается и предоставляет меньше возможностей по построению интерфейса.
Magistr_AVSH, я не специалист, просто любитель, но как по мне, не вижу смысла писать XAML там, где можно мышкой перетащить пару элементов формы и все будет работать, как задумано. Я бы выбирал то, что будет удобней в конкретной ситуации. Конечно интересные приложения, к тому же рассчитанные под тачпад, я бы лепил через WPF — возможностей больше и шаблоны облегчают жизнь.
Ну подходы разные. Но в xaml по умолчанию писать никто не заставляет. Можно точно также перетаскивать элементы формы и расставлять их как удобно. А там немного потом коде поправить если нужно. События нажатий кнопок и т.д. Кому что больше нравится
ClipX стоит давно, неплохая програмулина, хоть и старенькая.
Microsoft.Win32.Registry.LocalMachine

Это требует прав администратора, что странно для такого рода приложения. Лучше использовать Registry.CurrentUser, тогда и предпочтения одного пользователя не будут навязываться всем остальным.
Как-то не задумывался по этому поводу, но большое спасибо — поправлю.
VirtualClipBoard_History[key].Replace(@"<", @"<").Replace(@">", @">")

Это разные кодировки? Или что это?
// Очистка словаря от лишних элементов

Как то сложно, для простого удаления n элементов с одного из концов списка…
// Чистим историю буфера

Зачем это делать, если load_configs только при запуске формы?
Вообще чем обусловлено использование Dictionary<int, string>, а не простого List?
За программку спасибо, давно уже пора было поставить подобный софт:)
Это разные кодировки? Или что это?

Посмотрите строку из цитаты в исходниках, там html сущности скобок. Использование html сущностей данных кавычек избавляет нас от ошибок во время парсинга XML.

Вообще чем обусловлено использование Dictionary<int, string>, а не простого List?

Вообще можно написать и с помощью списков, но мне больше по душе именно словари, поскольку индекс элемента не изменяется.

Зачем это делать, если load_configs только при запуске формы?

load_configs — принципиально запускается только при старте программы и очистка файла истории происходит именно в этот, это по двум причинам: 1) Не хотелось тратить ресурсы и чистить после появления каждой новой записи, поскольку как правило моя история порядка 500 записей и бывают разные размеры элементов, 2) Если что-то случится, например погаснет свет или еще что-то, я всегда смогу восстановить всю историю предыдущей сессии (вряд ли понадобится, но в жизни всякое бывает).

P.S. Исходный код выложил специально, чтоб каждый желающий мог изменить его под себя, т.к. мелочи сугубо индивидуальная штука и каждому свое.
Не проверял. Но теоретически, мы используем WinApi, а не слушаем каждое приложение, поэтому причин, чтоб это не работало не вижу.
Ещё одна программа, в «копилку знаний» — CLCL www.nakka.com/soft/clcl/index_rus.html. Жаль, что не развивается. Но из массы протестированных, остановился на ней.
Вроде даже отвечает всем хотелкам автора :)
Тоже когда-то делал аналог для Rainmeter — может пригодится кому:)
Автор, при запуске программы и клике на пустом пространстве в поле истории, возникает такая ошибка:

See the end of this message for details on invoking 
just-in-time (JIT) debugging instead of this dialog box.

************** Exception Text **************
System.Collections.Generic.KeyNotFoundException: The given key was not present in the dictionary.
   at System.Collections.Generic.Dictionary`2.get_Item(TKey key)
   at VirtualClipBoard.VirtualClipBoard.list_clipboard_SelectedIndexChanged(Object sender, EventArgs e)
   at System.Windows.Forms.ListBox.OnSelectedIndexChanged(EventArgs e)
   at System.Windows.Forms.ListBox.WmReflectCommand(Message& m)
   at System.Windows.Forms.ListBox.WndProc(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


А со второго раза вообще перестала запускаться :(
Надо бы пофиксить эти баги.
Позже выложу обновленную версию
Sign up to leave a comment.

Articles