Почетный модератор
21398 / 9132 / 1083
Регистрация: 11.04.2010
Сообщений: 11,014
|
|||||||
1 | |||||||
Готовые решения и полезные коды на Visual Basic .NET (Часть-1)18.08.2011, 22:44. Показов 540696. Ответов 250
Предлагаю в этой теме размещать ответы на часто задаваемые вопросы и просто делиться полезными кодами.
Обращаю внимание на некоторые моменты, которые являются дополнением к основным правилам
Просьба к постившим: не спешите постить решения "сгоряча", тщательно обдумайте список вопросов, их тематику и порядок Если вы найдете информацию, которой можно было бы дополнить ваши предыдущие сообщения, что-то изменить или перегруппировать, пишите в л/с.
Примечание: некоторые коды приведены без учета строгой типизации (Параметр Strict), поэтому для их использования необходимо выполнить приведение типов
55
|
18.08.2011, 22:44 | |
Ответы с готовыми решениями:
250
Готовые решения и полезные коды на Visual Basic .NET (Часть-2) Готовые решения и полезные коды на Visual Basic 6.0 Продам готовые коды и решения на Visual Basic за 400 рублей Basic4Android. Готовые решения полезные коды |
Почетный модератор
21398 / 9132 / 1083
Регистрация: 11.04.2010
Сообщений: 11,014
|
|||||||||||||||||||||||||||||||||||
14.12.2011, 21:54 [ТС] | 21 | ||||||||||||||||||||||||||||||||||
Динамическая компиляция
Рассмотрим 2 основных, и я полагаю, не единственных, способа, как можно откомпилировать исходный код. В первом случае мы будем компилировать код не из файла, а из текстового поля формы. В результате этого мы получим исполняемый exe-файл, который по окончании формирования мы можем запустить на выполнение.
Второй способ – компиляция из командной строки. Предполагает наличие файла с исходным кодом программы Синтаксис: Код
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\vbc /target:winexe 2.vb Pause В данном случае приложение будет работать, используя версию 2.0 .NET Framework, В команде можно указать другую. target:winexe Это указывает на то, что при работе приложения не будет показано консольное окно. 2.vb – непосредственно сам файл с исходным кодом, который должен находиться в одном каталоге с Бат-файлом. Содержание файла прежнее:
Например, если программа делает скриншот экрана, сохраняет в файл и запускает, то, по крайней мере, нужно будет точно использовать
Компиляцию оконных приложений здесь мы рассматривать не будем
14
|
1708 / 1196 / 227
Регистрация: 23.12.2010
Сообщений: 1,526
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
15.12.2011, 15:55 | 22 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
Обмен данными в локальной сети по UDP-протоколу
Базовые процедуры, переменные и константы (объявляются на уровне модуля):
Ну все, принимать мы научились, возьмемся за передачу данных на нужный адрес
Все, база есть. Осталось получить список компов в сети (чтобы ручками не вбивать адреса). Можно просто получить все компы (я не буду приводить код, можно найти по ключам: "список компьютеров всети" или аналогично). Но это не совсем то... было бы неплохо получать список только тех компов, где запущена аналогичная программа, способная принять и отобразить сообщение. Для этого я усложнил процедуру UDP_DataArrival
Естественно, наша прога должна в определенный момент (у меня при старте) тоже отправить кодовое сообщение (мол, я вот она) причем широковещательно:
Ну и конечно, при закрытии программы нам надо прервать поток, в котором ведется прослушивание порта входящих сообщений:
Ну и, естественно, комплект изображений, которые я использовал в интерфейсе. Проект выполнен в студии версии 2008. Если у кого более старая версия - открывайте сорцы блокнотом и собирайте проект с нуля. Проект скомпилен под .Net Framework 2.0, готовый экзешник не требует установки и весит немного (примерно 0,5МБ), история сохраняется в папке с экзешником. Проверено и эксплуатируется на работе в локальной сетке на 20 компов.
23
|
32 / 32 / 3
Регистрация: 20.07.2011
Сообщений: 407
|
|||||||||||
30.12.2011, 21:00 | 23 | ||||||||||
Как влючить компютер по сети или "Wake on LAN" (WOL)
На компютере, который нужно включать по сети, в BIOS должна быть включена функция Wake on LAN = Enabled
5
|
Почетный модератор
21398 / 9132 / 1083
Регистрация: 11.04.2010
Сообщений: 11,014
|
||||||||||||||||||||||||||||||||||||
01.01.2012, 21:54 [ТС] | 24 | |||||||||||||||||||||||||||||||||||
Небольшие вопросы на разную тематику
Разделение Gif-файла на кадры с сохранением в папку (автор кода eJ_Studio)
Разделение Gif-файла на кадры с сохранением в папку (автор кода eJ_Studio)
Узнать глобально раскладку клавиатуры (автор кода Дмитрий Юпатов)
Узнать глобально раскладку клавиатуры (автор кода Дмитрий Юпатов)
Узнать и установить раскладку для нашего приложения. Информация об установленных языках (автор кода Дмитрий Юпатов)
Узнать и установить раскладку для нашего приложения. Информация об установленных языках (автор кода Дмитрий Юпатов)
Вступление изменений в реестре в силу без перезагрузки компьютера
Вступление изменений в реестре в силу без перезагрузки компьютера
Привести числовой массив к строковому (автор кода SSTREGG)
Привести числовой массив к строковому (автор кода SSTREGG)
Извлечь иконки из файлов и библиотек
Извлечь иконки из файлов и библиотек
Если нам нужна иконка файла, можно использовать простой код:
15
|
1708 / 1196 / 227
Регистрация: 23.12.2010
Сообщений: 1,526
|
||||||||||||||||
12.01.2012, 22:37 | 25 | |||||||||||||||
Рассмотрим на примере надстройки Excel 2007. Создадим простейшую надстройку, которая при запуске создает Вкладку на ленте, группу для элементов управления на вкладке и размещает в группе 2 кнопки.
При нажатии на кнопки отображаются сообщения (см. рис.1). Итак, приступим. В окне выбора проекта для создания выбираем "Другие типы проектов">"Общая надстройка" и далее следуем указаниям мастера создания в студии (см. рис.2) В итоге мы получим решение, включающее в себя 2 проекта: собственно, надстройку и ее установщик. Перво-наперво в проекте установки переходим к редактору реестра и правим там согласно рис.3. Дело в том, что если оставить как есть, то надстройка нормально стартует только на той машине, где компилилась. Такой вот баг... Теперь переходим к проекту надстройки. Добавляем недостающие ссылки в него (см. рис.4) Добавляем в ресурсы xml файл. Я его назвал SimpleExcelAddinRibbon Он содержит описание вкладки на ленте для нашей надстройки Листинг файла SimpleExcelAddinRibbon.xml
Добавляем в ресурсы также пару картинок (можно png с прозрачностью 128х128), которые будут отображаться на кнопках, я их назвал Test1Img и Test2Img. В целом, можно в ресурсы и не добавлять, а включить в дистрибут файлы и читать оттуда в рантайме Далее, создаем новый класс с именем ConvertImage. В нем будет только одна функция, которая картинку переводит в структуру IPictureDisp, которую понимает офис. Листинг класса ConvertImage.vb
Листинг класса Connect.vb
Ну... в коде даны пояснения в комментариях. Чтобы потестить надо:
Надстройка видна в списке таких же в Экселе (рис.5). Удаляется через "Установку и удаление программ", где она видна под именем проекта установки. P.S. Создание сборки для более ранних версий отличается только наличием кода создания панели инструментов и контролов на ней. Ну и плюс, если надстройка универсальная - перед созданием панели проверяем номер версии экселя: если 11 или меньше - панель надо (версия не более 2003), если 12 или больше - панель не надо, имеем 2008 или старше. Полный архив с тестовой надстройкой прилагается к посту. Добавлю: при создании проекта надстройки с целевой версией .NetFramework версии 2.0 нужно также скачать и установить заплатку от Microsoft, которая это исправляет. Также ее надо будет подключать к проекту установки, т.е. вносить в список необходимых компонентов. При распространении дистрибута надо будет распространять весть комплект, который создается в папке bin проекта установщика (файлы msi, exe и папка с установщиком заплатки) и установку производить через запуск файла msi для автоустановки заплатки на конечной машине. Зачем нужна эта заплатка? Потому что надстройка работает только на той машине, где компилилась. Заплатка этот баг устраняет. Ну а если речь идет о версии .NetFramework 3.0 или старше, то все в порядке, заплата не нужна. Кроме того, надстройки можно создавать с помощью инструментария MS Visual Studio Tools For Office. Что касается работы с лентой, там все намного удобнее - можно работать визуально, а можно открыть xml. Кроме того, дополнительно о ленте можно почитать тут и тут. Ну и погуглить по словам Fluent Ribbon Добавлено через 22 минуты Вот! Нашел наконец-то довольно ценную статью от Microsoft. Охватывает и ленту и создание AddIn. Читаем
11
|
67 / 41 / 3
Регистрация: 07.12.2010
Сообщений: 328
|
|||||||||||
26.03.2012, 17:19 | 26 | ||||||||||
Печать RichTextBox на принтере с сохранением форматирования
Новый проект. На нём только кнопка. Проект -> Добавить класс... Имя класса пишем RichTextBoxPrintCtrl Вставляем код: Класс компонента
Кидаем PrintDialog на форму. В кнопку пишем код:
10
|
62 / 62 / 1
Регистрация: 23.01.2012
Сообщений: 254
|
||||||
30.03.2012, 09:42 | 27 | |||||
Снчала на форму кинем label1 и labe2 в первом вес файла во 2 скорость скачивания и ещё progressbar для показа степени загрузки файла ,BackgroundWorker и кнопку .
Теперь перейдём к коду
8
|
96 / 96 / 3
Регистрация: 01.12.2011
Сообщений: 94
|
||||||||||||||||||||||||||||||||||||
02.04.2012, 19:27 | 28 | |||||||||||||||||||||||||||||||||||
Сегодня решил написать о скриншотах, а именно: как сфотографировать окно по заголовку, как сфотографировать объект system.windows.forms, сфотографировать рабочий стол и рабочий стол с панелью задач.
фотографирование окна по заголовку Класс для работы
Пример использования этого класса
функция для фотографирования
функции использования для фотографирования только экрана
Вот и всё. Спасибо за внимание!
10
|
96 / 96 / 3
Регистрация: 01.12.2011
Сообщений: 94
|
|||||||||||
11.04.2012, 19:41 | 29 | ||||||||||
все мы знаем, как управлять прозрачностью формы:
однако это не та прозрачность, просмотрите во вложениях скриншот формы, код:
24
|
1708 / 1196 / 227
Регистрация: 23.12.2010
Сообщений: 1,526
|
|||||||||||
11.05.2012, 13:28 | 30 | ||||||||||
Создание собственного элемента управления
Попробуем создать собственный ProgressBar (известно, что штатный далеко не всегда отвечает требованиям разработчика). 1. Создаем новый проект WindowsForms 2. Добавляем к проекту файл класса с именем UserProgressBar и заполняем его следующим кодом
4. В ресурсы проекта добавляем рисунки, служащие заливкой бара (2шт - для вертикального и горизонтального стилей (имена h_fillelement и v_fillelement соответственно). Рисунки во вложениях №1 и 2) 5. Создаем решение 6. На панели инструментов (если перейти в конструктор формы) мы увидим, что добавлен контрол UserProgressbar 7. Создаем тестоую форму: при создании проекта студия нам добавила пустую форму, вот ею и воспользуемся. Размещаем на форме 4 наших прогрессбара и NumericUpDown Прогрессбар2 - устанавливаем свойство FillStyle=Texture Прогрессбар3 - свойство ProgressOrientation=Vertical Прогрессбар4 - свойства ProgressOrientation=Vertical и FillStyle=Texture Больше ничего не меняем. 8. Открываем код формы и меняем его следующим образом
9. Запускаем проект нажатием F5. Если все выполнено верно, появится форма (см. вложение №3). Попробуйте менять значения в NumericUpDown1 А теперь немного о коде класса UserProgressBar. Класс унаследован от Control. В регионе Enums содержатся перечисления, необходимые для красивого задания свойств нашего контрола: OrientationEnum - ориентация направления заполнения бара (горизонт и вертикаль) WTenum - отображаемый текст на контроле (строка из свойства Text, число процентов заливки, число процентов заливки со значком процента, доля заливки (0...1), ничего) FillStyleEnum - стиль заливки (сплошным цветом или текстурой (вспоминаем о картинках в ресурсах) В регионе PublicProperties содержатся свойства, которые добавляются нами как недостающие и доступны в панели свойств проекта (см. вложение №4): Minimum, Maximum, CurrentValue - имеют тип Uinteger (целое не меньше 0 то есть) и думаю, значение их понятно. ProgressOrientation - ориентация заливки (горизонт и вертикаль) FillColor - цвет заливки при выбранном стиле заливки Solid WrittenText - выбор типа отображаемого текста (см. перечисление WTenum) FillStyle - стиль заливки (см перечисление FillStyleEnum) Процедура New - выполняется при создании нового экземпляра UserProgressBar (независимо от того, программное создание или в конструкторе). Тут задаются значения по умолчанию для свойств контрола Процедура DrawProgress - вот она и рисует полосу прогресса с учетом свойств. Обратите внимание, что для немедленной перерисовки процедура вызывается в каждом свойстве (см. код региона PublicProperties) Процедура UserProgressBar_Changed - тут также вызывается перерисовка прогресса при некоторых унаследованных событиях. В данном случае это происходит при изменении размера, смены цвета подложки, и цвета шрифта, типа шрифта. Все это также повышает удобство пользования. Ну и напоследок: Для изменения шрифта текста, который отрисовывается на баре используются свойства контрола Font и ForeColor, при установленном в позицию Text свойстве WrittenText рисуется строка из свойства Text элемента управления. Весь проект лежит в архиве во вложении №5 Проект написан в VS 2008/
28
|
62 / 62 / 1
Регистрация: 23.01.2012
Сообщений: 254
|
|||||||||||
11.05.2012, 20:45 | 31 | ||||||||||
Для работы,добавляем в проект и импортируем штатную библиотеку shell32.dll Потом для упаковки пишем
22
|
557 / 434 / 21
Регистрация: 16.12.2010
Сообщений: 953
|
||||||
07.07.2012, 21:56 | 32 | |||||
Сбор мусора. (используется в основном при
MSDN о GC.Collect
Сообщение от http://msdn.microsoft.com
Сообщение от http://msdn.microsoft.com
7
|
1708 / 1196 / 227
Регистрация: 23.12.2010
Сообщений: 1,526
|
|||||||||||
12.07.2012, 14:50 | 33 | ||||||||||
Писателям лаунчеров посвящается... Пример программы для загрузки обновлений. Внешний вид окна - см. вложение. Полный код формы
Что необходимо на сервере: 1) файл UpdateInfo.upd, который расположен по пути, указанному в переменной NetFolder 2) файлы обновлений, которые предстоит скачать. Расположение - где угодно, хоть на другом сервере (пути к ним прописываются в файле из п.1) Структура файла UpdateInfo.upd - текстовый, с разделителями. Строки разделены символами vbCr + vbLf Сами строки имеют такую структуру: Полный путь к файлу для скачивания[cell]MD5 файла в виде строки[cell]относительный путь для сохранения на локальной машине (относительно значения переменной RootFolderRoot) Пример содержимого
http://mytestsource.narod.ru/folder1/File1.dll[cell]E047210B4CE2BBF0F6A9819031C5874A[cell]\File1.dll
http://mytestsource.narod.ru/folder1/File1.exe[cell]CAB0FFC1844E892CB44BC98359520CF0[cell]\Folder1\File1.exe http://mytestsource.narod.ru/folder1/File2.bin[cell]31A69F32502DE8B29ED98BFA19DE1332[cell]\Folder1\File2.bin http://mytestsource.narod.ru/folder1/File2.dll[cell]A74A9A50110E5F5B3AD0B2DCBDB1E6E8[cell]\Folder2\File2.dll Что тут и как работает:
1) нажатием на кнопку запускаем процесс скачивания.
2) загружается содержимое файла UpdateInfo.upd 3) формируется список OriginStrings путем порезки полученных данных на фрагменты 4) имея корневую локальную папку и получив из файла UpdateInfo.upd относительные пути к файлам, вычисляются хеши локально расположенных файлов. Проверяется совпадение полученных хешей и вычисленных. Если совпали - файл качать не надо. Если не совпали: - файл (точнее, елемент списка) добавляется в список ResultStrings. Одновременно создаются необходимые пустые каталоги (смотрим на полученный относительный путь) - теперь производится собственно закачка каждого файла из списка ResultStrings и его сохранение в нужном месте (корневой путь у нас задан, относительные мы получили) 5) В процессе закачки на форме отображается процесс закачки каждого файла с отображением также серверного пути и локального. Т.е. откуда и куда качаем. В заголовке формы работает счетчик, показывающий порядковый номер файла из списка и длину списка. Поскольку файл UpdateInfo.upd имеет достаточно специфические данные, написана также небольшая утилитка, которая может его формировать. Это утилитка для собственника программы, который будет заботиться о периодическом обновлении своего ПО. Тут все просто: 1) Имеем папку с внутренней иерархией, повторяющей установленную программу, которую следует обновлять. В идеале - пересобрал прогу, установил у себя и потом используешь папку с установленной прогой. В начале указываем путь к этой корневой папке. Далее нажимаем "Подготовить данные". При этом заполнятся столбцы с локальным относительным путем и хешем файла. Желательно строку со значением MD5 получать именно отсюда, т.к. она никак не сегментирована, а просто непрерывный ряд символов. Другие программы могут выдавать значение в несколько отличающемся формате. Хотя массив байтов с хешем будет эквивалентен. После этого остается (уже ручками) в столбец пути на сервере вписать путь к каждому файлу (путь на сервере, абсолютный. Вот почему ранее я написал, что файлы могут лежать где угодно и как угодно) Код формы
Ну и, конечно:
1) пути, указанные в кодах - живые. Я ж тоже тестил все это.
2) как всегда - во вложениях архивы с проектами 3) естественно, код не идеален, могут возникать необработанные исключения - хотя тестировал в разных ситуациях, но недолго.
28
|
557 / 434 / 21
Регистрация: 16.12.2010
Сообщений: 953
|
|||||||||||
14.07.2012, 17:27 | 34 | ||||||||||
следующий код позволит создать область выделения(как в знаменитых фоторедакторах)
код
Получить имя переменной
9
|
96 / 96 / 3
Регистрация: 01.12.2011
Сообщений: 94
|
|||||||||||
06.08.2012, 11:43 | 35 | ||||||||||
Загрузка файла на FTP сервер с прогрессом
Создаём новый проект, на форму кидаем Button1, Label1, ProgressBar1. Весь код формы заменяем на:
7
|
386 / 375 / 22
Регистрация: 08.02.2011
Сообщений: 1,078
|
|
22.11.2012, 16:53 | 36 |
Telnet клиент на Vb.net
3
|
386 / 375 / 22
Регистрация: 08.02.2011
Сообщений: 1,078
|
|||||||||||
22.11.2012, 16:59 | 37 | ||||||||||
Пример передачи файлов любого размера по tcp.
2 консольных приложения: клиент:
Сервер:
8
|
136 / 63 / 24
Регистрация: 08.11.2012
Сообщений: 250
|
|||||||
29.01.2013, 19:04 | 38 | ||||||
9
|
02.02.2013, 11:54 | 39 | |||||||||||||||||||||||||||||||||||
Для начала добавляем в проект новый класс, называем его Shortcut и записываем следующий код:
Код Shortcut.vb
А теперь как это использовать: Ярлык на файл
Ярлык на папку
Ярлык с описанием
Ярлык на файл с аргументами командной строки и описанием
Ярлык на файл с изменением его иконки
Получение информации о ярлыке
У кода есть небольшой минус: ярлык не создается там где требуются права администратора, у меня программа отказалась создать ярлык на разделе с Windows 8. Если у Вас отключен UAC то скорее всего таких проблем не будет.
10
|
138 / 137 / 42
Регистрация: 26.10.2012
Сообщений: 443
|
|||||||||||
09.02.2013, 18:29 | 40 | ||||||||||
Шифрование пароля(каких-либо личных данных) алгоритмом TripleDES.
В проекте создаем класс: Кликните здесь для просмотра всего текста
Далее в классе формы запускаем события шифрования/дешифрования данных: Кликните здесь для просмотра всего текста
13
|
09.02.2013, 18:29 | |
Помогаю со студенческими работами здесь
40
Полезные коды для PascalABC.NET Готовые коды для решения лабораторных работ Где бесплатно скачать учебник по Visual Basic 6 и Visual Basic .Net ? Visual Basic 6 и Visual Basic .NET - в чем различия? Visual Basic .Net и Visual Basic 6.0 - В чём разница Коды на Visual Basic Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |