![]() |
Visual Basic 2008
Подскажите как сделать так : допустим, если нажать на форме правой кнопкой мыши, то вылетет MsgBox(123), а если нажать левой, то MsgBox(098).
Спасибо за внимание. >>Блин, не дописал в названии темы : Действие при нажатии правой кнопки |
В процедуре события MouseDown определяй, какая кнопка нажата, в нее передаются нужные параметры.
|
Alexej77, спасибо! Оперативно!
Теперь всегда буду тут спрашивать. ) P.S. Тему можно не закрывать. Я скоро вернусь с новым заданием :) |
Вопрос № 2:
Можно ли как-то изменить название кнопок в MsgBox ? Например в место кнопки "Ок" - сделать кнопку "Хорошо", или все-таки придется делать дополнитьельную форму? |
Придётся брать форму, ибо MsgBox уже предустановлен.
|
Ещё вопрос :
Как открыть текстовый файл ПОЛНОСТЬЮ, а НЕПОСТРОЧНО. В VB6 Input$(LOG(1),1) в 8 не катит :( |
Я в VB6 так считывал все строки
Код:
intFH=FreeFile Для VB2008 будет так Код:
Dim fileReader As String |
Вообщем-то сабж:
Как сделать, чтобы программа вела лог? Например у меня 3 TextBox и 1 кнопка. Необходимо чтобы при нажатии на кнопку - программа записывала значения TextBox каждое в отдельную строчку. Например: Нажал на кнопку в файле появились строки: 123 456 789 Нажал ещё раз, к ним прибавились ещё одни только уже через строчку и результат будет таким : 123 456 789 098 765 432 и так до бесконечности или до определенного размера файла, дальше начинается перезапись. И ещё вопросик на счет файлов тоже: OpenMode.Binary чет я в VB8 в них разобраться несмог. как записывать посторчно и как считывать, тоже построчно. |
Между логом и того примера с трёма TextBoxами и одной кнопкой общего мало. Лог, как по мне, реализуется не так: для него даже компонент вроде есть.
Я сам не писал лог обработчик. А как вопрос решался в VB6 или там не приходилось так писать? А предложенный пример реализуется так Код:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Построчно можно считать также как и в VB6 Код:
Dim AllText As String = "", LineOfText As String = "" |
Цитата:
Т.е. что значит : EOF(1) и кстати интереисует вопрос: что значит вот этот знак "&" Цитата:
Кстати какие ещё циклы бывают, кроме: If Then Else End If Do While/Until Loop Do Loop While/Until For Next И в каких случаях они используются (кроме тех что написал). |
С Праздничком!
EOF(1) - End Of File (конец файла) под номером один. Номер может быть от 1 и до 255, цикл длится от начала до конца. & - читается как аппендикс. В данном конкретном случаи означает прибавить символы к другим символам, и сохранить строчку результат в переменной AllText. Я так понимаю, что под "строками для бинарных файлов" подразумеваются те, которые показывает блокнот при открытии не текстового файла? Так вот, это блокнот их бьёт на строчки. На самом деле бинарный файл это одна сплошная строчка, так как в нём не включены коды "перевода каретки" (обозначается в Бейсике как vbCrLf) и Бейсик представляет такой файл как одно целое. Кодеру же в таком режиме нужно чётко знать, какие группы данных ему необходимо считать. Можно считать первые 3 байт, далее следующие за ним 5 байт. Также возможно считывание в произвольном месте, указав необходимую ячейку, с которой необходимо начинать чтение/запись. Бинарный формат более компактный для программы, но не такой прозрачный кодеру как текстовый, на первых порах. Насчёт первой конструкции, это не цикл. Кстати в нём возможна ещё и конструкция ElseIf (без пробела) также как и в VB 6.0 , по которому Vazdaew когда-то подсказал. Но она может быть в роле цикла, если добавить не совсем рекомендуемый книгами, оператор GoTo: Код:
StartCicl: A = A + 1 Until выполнится хоть бы раз, а уже начиная со второго раза будет интересоваться дальнейшим условием выполнением (например, так можно установить примитивную защиту, на ознакомление с программным продуктом); For ... Next удобный тем, что в нём изначально встроенный счетчик переменной, которую можно использовать в цикле. В других конструкциях цикла такую переменную необходимо вносить самостоятельно. |
Вложений: 1
Цитата:
Как минимизировать форму (свернуть в пуск)? Просто нарисовал оформление, отключил все кнопки в Свойствах формы, поставил FixedSingle, убрал название формы. Вот теперь надо чтобы при нажатии на кнопку она (форма) сворачивалась в пуск и в пуск было написано, например "123" а в названии формы ничего небыло. Думая мало кто поймет смысл данного сообщения, поэтому даю скрин какой я хочу получить результат. Или может как-то можно переписать оформление? А то стандартные кноппки (Свернуть, Развернуть, Закрыть) как-то не катят. |
Да.
По простому, можно в событи на сворачивания установить возврат форме заголовка с названием 123, а на разворачивании обратно прятать. |
Admiral, а как это сделать? Дай код плз. + При несвернутой форме желательно тоже чтобы название было.
Как её при нажатии на кнопку ( не стандартную, а на форме ) сворачивать? Цитата:
|
Код:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Я бы взял за основу код проги для VB6 из этой статьи Разработка окна в стиле Windows XP Тут и стандартное окно подменяют своим, и название когда оно не свёрнуто есть. P.S. Код:
Dim Some3Bytes As String |
Как сделать чтобы при зажатии Label1 и перетаскивании мыши позиция формы менялась относительно мыши, т.е. если сказать проще, то у меня Form1.FormBorderStyle=None + есть Label1, нужно организовать, чтобы при зажатии Label1 и перетаскивании мыши, окно передвигалось в сторону мыши. Вообщем сделать функцию перетаскивания.
|
Вот ещё :
Timer1.Tick Dim i i=i+1 как сделать так : если i=четному числу(2,4,6 и т.д.), то вылетает MsgBox(123), а если не четному(1,3,5 и т.д.), то вылетет MsgBox (098) P.S. Процесс может прдолжаться до бесконечности, проэтому прописывать все значения бесполезно |
Ещё вопросик: Как при помощи VB8 можно запускать файлы, т.е. нажал на кнпку и запустился файл?!
И можно ли как-то реализовать комманду : Пуск=>Выполнить, т.е. есть текстовое поле и кнопка. Вводим например cmd, жмем на кнопку и заускается коммандная строка. |
Примитивно, можно сделать вот так
Код:
Private Sub Label1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Label1.MouseDown Код:
'Код для VB6го Во первых, предложенный код не будет работать по задуму, так как объявление (считай обнуление) переменной будет каждый раз при срабатывании таймера. Вынести её надо в секцию General Declaration Во вторых, размещать MsgBox в событиях на Таймере не лучшая идея. А в остальном, как и в VB6 есть такая функция Mod, результат которой - остача от деления на её аргумент. В твоём случаи код такой Код:
Dim i Достаточно строчки кода Shell ("cmd.exe") Рекомендую таки раздобыть таки книгу. Для того что б написать такие проги знаний VB6 вполне достаточно. Ничего .NETовского в программах нет. |
ооо, спс.
Цитата:
|
В VB2008м (кроме General Declaration как и в VB6, есть так называемая Form1 - Declaration) используется модель классов, сама Form1 к классу, так вот сразу здесь можно объявить переменны/константы и т.д. относящиеся ко всей форме этого класса.
Код:
Public Class Form1 |
Цитата:
|
Таймер запустился, обозначил переменную i прибавил к ней единицу и закончил работу, и никто про i так и ничего не узнал. Заново запустился и по новой i объявил…
|
ааа....ну это то я знаю как бы ещё с самого начала как только увидел VB.
Вот ещё сабж : у меня 8 ТекстБосов. В каждый текстбокс генерируется произвольльное число от 0 до 1 (Int(rnd(1))). Получается, если в каждый ТекстБокс сгенерируется 1, значит во всех ТекстБоксах будет 1, а мне надо чтобы в 4 (не меньше и не больше) каких-то (произвольных) ТестБокса сгенерировалось 1 или 0, точно так же если значение стоит 5, то генерируется либо 5 "0", либо 5 "1". кажется подробно объяснил. Кстати, Admiral, посоветуй хорший учебник по VB6 (на советском), просто у меня есть, но там все урезано по максимуму. :( |
Сделал вот так, но это не вариант. Нужно чтобы высчислялось сколько "0" будет писаться, например из 9 ТекстБокса, т.е. в 9ТекстБокс ввел "6" - получил в 6 предыдущих ТекстБоксах "0"
Код:
Public Class Form1 |
Как можно именять прозрачность формы?
Me.Opacity и что нужно дальше писать чтобы работало? Просто мне нужно, если переменная i = 1 , тогда прозрачность равна 90%. Если i = 2 , тогда прозрачность равна 80% и т.д. до 0% А нет. Все. Разобрался :) значение должно быть в виде : 90% = 0.9 ; 80% = 0.8 и т.д. |
Незачем генерит каждый раз, лучше один раз занести результат в переменной и потом с ней проводить операции.
Код:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click По остальному, я считаю нули и единицы, если количество одного из них станет равно/больше 5, то далее заполнять переменную сохраняющую результат генерации нуль/один противоположным числом. Самоучитель Visual Basic 6.0 А. Ананьев, А. Федоров Микаэл Хальворсон Microsoft Visual Basic 6.0 для профессионалов Шаг за шагом Из электронных (в печатном виде продукт не выходил) приглянулся VISUAL BASIC 6 и VBA. Для профессионалов Ну и конечно же Сайты о Visual Basic + к той теме ресурс из современности http://vbnet.ru/ Так же McDAK подсказал, как правильнее всего изучать Бейсик этой ссылкой Цитата:
Так что вот ещё тема Visual_Basic 2005 выбор литературы По 2008й ещё очень мало переведено литературы, впрочем как и по любым другим компонентам студии 2008. Какая б не было книга, главное желание. P.S. На счёт прозрачности и книг, то в источнике VISUAL BASIC 6 и VBA. Для профессионалов сведенья натолкнули на мысль как использовать прозрачность в VB6 без GDI+. Официально, через файл Microsoft Visual Studio 6.0\Common\Tools\Winapi\WIN32API.TXT объявления данной функция Бейсику не полагалось, так что как бы не документированная функция для Бейсика. Код:
'Прозрачность в Visual Basic 6 |
Вложений: 1
:o :clapping:
зачет! А что такое Select Case? :) И как можно добавлять значения из текстового файла в ComboBox? :happy: Вот кстати с вашей помощью сделал игровой аппарат. Я начинающий, поэтому для меня это была одна не из лёгких задач. |
Select Case это выбор по определённому значению. Все равно не совсем там катит, лучше через массив работать. Кстати, там действительно необходимо такое число ТекстБоксов, может лучше подойдут массивы?
Вместо того что б писать Цитата:
Код:
Select Case v Код:
Dim number As Integer = 8 Считать в переменную или сразу построчно считывать через свойство ComboBox1.Items().Add |
Цитата:
Считывать из переменной будет так : ComboBox1.Items().Items(*перемнная*) ? Или как-то по другому? Что это значит : ComboBox1.Items().Add ? Добавлятьв перменную? ComboBox1.Items().Add(*перемнная*) ? |
Ещё. Что означает в свойствах объекта : ImeMode? и как мне можно открыть папку (Файл открывать при помощи Shell - за это отдельное спасибо. Теперья знаю как можно создать свой авторан :biggrin:) ?
|
Или считываем построчно файл, как в девятом посте, на тот случай если инфа ещё будет нужна в виде переменной, что б не считывать заново и не выспрашивать её у ComboBox1 тогда просто пишем, в общем случаи
Цитата:
ComboBox1.Items().Add(AllText) или прямо в него в цикле записываем, правильнее сказать, добавляем строчки Код:
Dim AllText As String = "", LineOfText As String = "" Это будет смешно, но опять же, с помощью команды Shell, есть отдельные команды специально для открытия папок, но это самое простое. В это случаи необходимо будет передавать параметром имя "Експлорер" и папку на открытия в нём Shell("Explorer.exe C:\") Кстати, возможно понадобится подрегулировать параметры запуска через запятую после " AppWinStyle далее точка и нужный эффект открытия. По сути Shellу можно скормить практически тоже, что и cmd. Я его когда Winampom кормил, пока не умел музыку самостоятельно играть в проге. Так же в VB есть файловые диалоги, специально для файлов и папок, возможно они подойдут больше. Они лежат на палитре компонентов, так что запоминать их имена не обязательно. ImeMode, честно говоря я уже подумал что это уже .NETовское нововведение, не тут-то было, в VB6 он тоже есть. В VB2008 есть даже таблица соотношений. Но я про него не знал, ибо не было в нём надобности. Цитата:
На счёт игры и её дизайн, так держать, выполнена она в хакерском стиле – главное творчество, а опыт в средствах разработки даст рост. |
А как можно сделать чтобы программа сворачивалась в трей? и если щелкаешь на неё правой кнопкой мыши (когда она в трее) вылезал ContextMenuStrip?
+ как сделать проверку, если в ТекстБоксе есть какие-либо символы, то они убираются из ТекстБокса, либо чтение происходит до них или после. или если существует какие-либо символы, то выполняетя определенное дейстиве, например как обычно MsgBox(123) :) |
С тре никогда не связывался, с ним в VB6 было больше мороки, в Vb2008м компонент на палитре есть, но нет желание работать с тре. Как работать с тре можно посмотреть вот здесь http://forums.microsoft.com/MSDN/Sho...52568&SiteID=1
Проверить равенство на пустой символ Код:
If TextBox1.Text = "" Then Так же можно попробовать запрет ввода сего символа, что б потом не искать, например вот так можно вводить в ТекстБокс из символов только числа Код:
|
Цитата:
В что делаеют вот эти как бы их назвать...действия... : Handles Me.Validated и Handles Me.Validating И как сделать проверку, если окно свернуто/развенуто/находится в нормальном состоянии. |
Вот ещё сабж: как это можно реальзовать
Цитата:
|
Handles Me.Validated/Handles Me.Validating - понятия не имею, не сталкивался, в VB6 его вообще не было. Беглый просмотр справки: вроде как момент ловления событий адрессованых системой окну (новое для VB и стандарт для C++/Delphi), а также что-то про сохранение значений (от слова Value – Значения), точнее не скажу, надо столкнутся или книг умных почитать на досуге.
Именно проверка: If Me.WindowState <> FormWindowState.Minimized Then / If Me.WindowState <> FormWindowState.Maximized Then / If Me.WindowState <> FormWindowState.Normal Then момент срабатывания свёртывания, развёртывания, нормализации нужно отловить. Возможно и с помощью Validated/Validating :happy: Не тривиальная это задача, по крайне мере в VB6 была, нужен компонент Internet Explorer, на палитре нужно поискать. |
А как сделать это? :(
в прогу окно текстовое , делаешь чтобы в него подгружалась интренет страница , после подгрузки страницы в окно ишешь определённый текст и всё а дальше если есть текст то ...... Нету текста ....... |
Цитата:
Код:
Public Class Form1 |
Как добавлять и удалять значения из реестра?
|
Компонент называется WebBrouser, находится уже на палитре.
Для vb6 приходилось подгружать Microsoft Internet Control с файла windows\system32\shdocvm.dll Далее для VB6го -> http://www.trap17.com/index.php/how-...er_t31604.html В проге делаешь окно Браузера и туда страницу грузить можно, но можно и текстовое но тогда страницу необходимо будет парсить, выдирать только текстовую информацию, или даже нужные слова. Насчёт браузера ещё один абзац, мало того проги на VB2008 полностью зависят от работоспособности .NET платформы и всех заплаток к ней, нужно теперь будет учитывать что безопасность будет зависеть и от патчей к IE, именно на её движке работает этот компонент. Насчёт таймера не очень считается надёжным решением, лучше всё таки найти функцию срабатывания, а то выходит что прога тормиш систему и комп каждые 10 милисекунд. Нужно обязательно проверить в таск менеджере на наличие всплесков. Хотя должен сказать, что таймер, если не знаешь когда событие должно произойти, кстати называется именно событие, а действие уже на это событие вешать можно, порой очень даже выручает в качестве проверки. Средства операций с реестром в VB6м были очень ограничены, и разрешали доступ к HKEY_CURRENT_USER\Software\VB and VBA Program Settings с помощью АПИ можно было и весь реестр проработать но для этого знаний только VB6 было явно недостаточно. Выкручивались даже через shell(“Regedit /s nastroyki.reg”), пока с АПИ не были знакомы. В VB2008м ограничения на работу с реестром ставит только рационализм кодера, всё организовано через объект My.Computer.Registry Например так, прикинемся старинной прогой, написанной на VB6 и сохранимся в заповедном месте My.Computer.Registry.SetValue("HKEY_CURRENT_USER\Software\VB and VBA Program Settings\MyApp", "Version", "1") По удалению My.Computer.Registry.LocalMachine. предлагает на выбор три способа по соответствующему назначению DeleteSubKey, DeleteSubKeyTree, DeleteValue Читать можно так Код:
Dim readValue As Object |
Цитата:
Да, и что такое "парсить"? :) |
Текстовое поле не сообразит, если мы его натравим на сайт. Сайт необходимо загрузить в WebBrouser и с него повытягивать нужную текстовую информацию. Этот процесс можно назвать одним словом - парсить. В Интернете у слова парсить другая слава - вытягивать с форумов, блогов, чатов и т.д. нужную инфу ботам (е-мейлы, пароли, номера кредиток и т.д.), поисковым ботам (линки из ещё не модерируемых участков) и другим.
Про браузер, правда без парсинга, есть хорошая статья в журнале Хакер "Осел на службе людей: IE для программиста" К сожалению, она в он-лайн режиме недоступна, так что прийдётся смотреть её в офф-лайн PDF Расписан принцип браузеро строения, компонент имеет теже свойства, так что переписать для VB2008 не составит большого труда. А во парсинг уже дело не тривиальное. |
Как прочту, сразу все мысли сюды выложу + надо бы с парсингом разобраться...
|
Тема не новая, она уже выходит за рамки этой, озвучивалась в названиях следующих тем
Regexp java или иной библиотеки для парсинга HTML [решено] строковой парсинг Есть ещё темы, в которых она обсуждалась. Поиск поможет найти подходящюю тему. |
Вложений: 1
Хм..если я правильно понял, то можно сделать так : RichTextBox1.Text = WebBrowser1.DocumentText
Вообщем вот что у меня получилось из прочитаной статьи. Осталось только поянт как сделать проверку на определенное словосочетание или слово. |
e.KeyChar что это значит и какие ещё бывают?
|
Блин, немогу поонять как сделать проверку в тексе на какое-то определенное слово (словосочетание) + надо сделать чтобы он искал это слово сочетание + какое-то определенное кол-во симолов, например читал все до словосочетания/слова : " после этого слова ничего не читается!" или определенное количество символов.
|
Нововведение VB.NET: e это структура, как я понял, объявленная где то в недрах .NET, которая в зависимости от применения к определённому объекту даёт, вернее передаёт, разные параметры.
Самое простое это после e поставить точку, среда сама предоставит разные параметры и какие доступны в текущей ситуацыи. Посмотрим на код в 19 посту: на VB6 было так Цитата:
Цитата:
Самое простое организовать цикл и проверять там символ к символу, слово к слову, а то и вовсе словосочетание. |
Цитата:
Я чет вообще втыкнуь немогу. уже пробовал, но чет нифига не получается :( |
Эх... Цикл немного старый подход к сему. Я тут почитав малёк набрёл что неплохо бы задействовать свойство WebBrowser1.Document.
Кстати в апрельском номере хакера, в интерннете ещё нету, в статье "Щелкаю за бабло!" рассмотрим принцип автоматического клика C# через объект WebBrowser. В конце статьи написано что неплохо бы написать html парсер, так что розрулив его и написав можно смело ставать автором в следующем выпуске, отправив им свою статью и прогу. В статье приводится ссылка, может быть полезной. WebBrowserControl Автор: Олег Михайлик По C# но тем не менее, способ работы с WebBrowser1 идентичен. |
Так, с поиском мне помогли :
Код:
Dim q1 = RichTextBox1.Find("<a") |
Либо можно использовать InStr и InStrRev (поиск группы символов )с начала и с конца строки, только непонятно как он работает, хотя нет. Похоже что он работает так же как и Find
|
Возможно тут какраз подойдет построчное чтение + чтение с определенного байта по определенный байт, только как это организовать?
|
Понял. можно при помощи функции Mid сделать чтение, ток вот щас пробую это как-то организовать....
|
Я бы копал в сторону WebBrowser1.Document.GetElementsByTagName("a").
Код читает документ и находит все теги на а. Например <a> </a>. P.S. Не нужно подряд писать: пост за постом от себя. Отредактировать посты так, что б инфа была в одном, а то могут наказать. |
Admiral, понял, будем копать.
Цитата:
Кстати, как-то можно отправлять данные на сервер и получать ответ? просто надо сделать 2 текстовых поля, 1 кнопку. Вводишь логин, пароль, жмешь кнопарь и он отправляет запрос на сервер , а м ы в свою очередь получаем ответ от сервера. Я так демаю если в текстовое поле ввобдишь текст, то в WebBrower он тоже должен меняться, т.е. как я понял нужно происывать это в код страницы. Это все реально сделать, только поянть немогу как сделать чтобы он отправлял значения на сервер при нажатии на кнопку?! Вообщем обычная функция авторизации, только не на самой странице, а в программе, которая в свою очередь отправляет запрос. |
Всё реально сделать, но это ещё более широкая тема. Тут уже надо знать и уметь работать с POST и GET методами. WebBrowser это клиентская утилита, код можно изменять, но это будет локальные изменения. Как примерно работать можно узнать из статьи про взаимодействие Delphi и PHP LiveUpdate в X-стиле
Для начала нужно у себя поднять сервер того типа, который требуется для авторизации. Это можно сделать на рабочей машине или виртуалку специально для этого подогнать, так сказать для тренировок. Кстати, с Бейсиком 2008 Експресс, идёт 2005й SQL сервер Експресс. |
вообщем необходимо организовать проверку в ComboBox, т.е. в нем например 10 значений (цифры от 10 до 100). Если в вводят текст, то он автоматически ищет существует ли данное значение в ComboBox, если существует, то он выводит похожие результаты, вообщем обычная система атозаполнения.
|
Идея следующая
Код:
Dim AllText As String |
Вообщем, ещё одна трабла : Необходимо написать прогу, которая бы удаляла файлы по маске (*а.txt) , либо в имени которых есть только цифры (*цифры*.txt) или только буквы (*любые буквы*.txt)
Просто решил немного поэсперементировать с создниями файла, создал прогу Код:
Public Class Form1 Можно как-то выдирать значения из переменной? Например у меня перемнная Код:
Dim i("Привет", "Hello"), z Код:
If z = 0 Then i = "Привет" Можно ли как-то в GoTo сделать не одно действие, а несколько? |
Вложений: 1
Цитата:
Вот ещё. Вообщем выклаюываю пример, помогите разобраться и дописать. Что необходимо : 1. Когда ничего не делаешь с главным окном, то иконка в трее и контекстное меню работают нормально. Если чуть потеребить окно, то после нажатия на иконку в трее правой кнопкой, появляются какие-то дополнительные штуки в пуске. Дак вот и и необходимо как-то убрать. 2. Когда вызываем контекстное меню, то его невозможно закрыть, только если выбрать какой-то компонент, или выбрать другое окно. Любое нажатие вне контекстного меню игнорируются. Это тоже надо как-то исправить. |
Можно указав GoTo на первый нужный оператор, а заним без условий написав второй нужный оператор.
Там же чуть выше указано Цитата:
|
Цитата:
|
DeleteSubKey - удаляет параметра, DeleteSubKeyTree - удаляет раздел.
|
Хм...как я понял, можно каким-то способом получить хэш. Как это можно организовать?
+ ещё : как можно сделать, чтобы когда открыта программа и реестр, то выбраная ветка/значение записывалось в программу?! Как отменить закрытие формы? как сделать чтобы она не закрывалась непонимаю. Код:
Private Sub Form1_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed |
Да можно, плюс от .NET
Код:
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load Если нужен полноценный, 128 битный вывод согласно MD5 тогда его нужно написать, вот пример Calculating an MD5 Hash in VB.net Что бы пример работал необходимо либо включить в диапазон имён System.Security.Cryptography (про саму службу Cryptographic Services) Project - > Properties -> References -> Imported namespaces и указать собственно System.Security.Cryptography ![]() либо добавить к проекту новый модуль Solution Explorer ->правой кнопкой мыши Add -> Module... ![]() туда скопировать пример, добавив в начале следующую строчку кода Imports System.Security.Cryptography Использование в этом случаи будет таким Код:
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load .NET Framework Class Library System.Security.Cryptography Namespace Ещё по теме MD5 Class, MD5CryptoServiceProvider Class, HashAlgorithm.ComputeHash Method. Не проще ли считать нужные строки из реестра самостоятельно? А то в предложенном варианте получается некий перехватчик с другого приложения, в данном случаи с Regedit.exe Если идея перехватчика вдохновляет то тут .NET языки не лучший выбор, С++/Delphi лучше с этим справятся, так как нужно будет писать ещё драйвер хука. Блокировка, такого никогда не писал, не было необходимости. По сути не уважения к пользователю, так как не всем такое понравится в виду того что оно ведёт себя как повисшие, если нет диалога. Самое простое что приходит на ум это повторный запуск приложения Код:
Private Sub Form1_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed Боюсь такое не подойдёт, ведь результат роботы будет потерян. Об этом стоит подумать. Не совсем, CancelButton лишь определяет что было не нажато в случаи если пользователь нажимал ESC, чаше всего в этом случаи на него вешают закрытия того диалога, на который предполагалось нажать Enter. |
Цитата:
|
Составив цикл и комбинировав операторы чтения из реестра. Но если ветки массивные приложение будет подтормаживать.
|
Как отпределить : файл или папка, т.е. например Dir("C:\Program Files\") - выводит "Это папка", если Dir("C:\boot.ini") - выводит "Это файл".
Примечание : Пути могут быть любыми. |
По предыдущему вопросу есть готовый компонент Registry Toolkit .NET если не охота с циклами заморачиватся. Там уверяют что он может сохранить всё содержимое реестра в один XML файл. Так что осталось парсить сей файл на нужные ключи.
Я проверяю само их наличие (файла или папки), а уже потом указываю соответствующие манипуляции. Можно анализируя ошибки возвращаемые от этих функций Код:
Public Function FileExists(ByVal FileFullPath As String) _ |
Кстати, нашел более качественный код для перетаскивания формы без "прыжков форы по экрану"
Код:
Private b_Down As Boolean |
Как сделать поиск определенного файла? Например мне нужно узнать где лежит файл cmd.exe или какой-нибудь другой. Необходимый путь должен выглядеть так : "C:\WINDOWS\System32\" , а не "C:\WINDOWS\System32\cmd.exe"
|
C VB6 поставлялась даже готовая формочка SEEK.FRM.
В VB.NET 2008 я подобного не нашёл. Возможно плохо искал или она присутствует в не Експресс редакциях. VB.Net: Recursive File Searching... организовано по принципу рекурсивного поиска. Плюс там же организована возможность поиска по маске. Так что можно доделать до необходимого ранее Цитата:
|
Можно ли как-то подгружать картинку из интернета в PictureBox ?
|
Да.
Код:
PictureBox1.Load("http://forum.oszone.net/image.php?u=91692&dateline=1209059773") |
О...круто. я так понял можно подгружать почти в любой объект, но не об этом сейчас речь.
У меня вопрос по теме : как-то можно счиать размеры картинки и по результату создать PictureBox ? Уже ненадо. Сам разобрался... Код:
PictureBox1.Load("http://forum.oszone.net/image.php?u=91692&dateline=1209059773") |
Uzvern, считать ничего не надо.
Создаём PictureBox Код:
Dim PictureBox1 As New PictureBox() Код:
Controls.Add(PictureBox1) Код:
PictureBox1.Load("C:\Windows\Blue Lace 16.bmp") Есть обратная задача, что б картинка приняла размер компонента. Тогда несомненно указываем его размер Код:
PictureBox1.Size = New System.Drawing.Size(10, 20) Код:
PictureBox1.SizeMode = PictureBoxSizeMode.StretchImage Цитата:
Цитата:
Цитата:
Код:
Me.Size = PictureBox1.Image.Size |
Можно ли как-то сделать эмуляцию нажатия клавишь?
Например запустил прогу, надал на пару кнопок, она автоматом сворачивается, открываешь например окно аси и она автоматом начинет печатать и отправлять. Возможно такое замутить? |
Можно. Отличают два вида нажатий: в свою прогу, через свойство нужной кнопки (или элемента) Button1.Value
и для чужой проги через упомянутый SendKey. Только что б отправить необходимо нужное окно найти и активировать, прийдётся использовать Win32 Api Сразу после Public Class Form1 пишем Код:
Declare Auto Function FindWindow Lib "USER32.DLL" (ByVal lpClassName As String, ByVal lpWindowName As String) As IntPtr Код:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click |
А я нашел более простой спопсоб :
Код:
My.Computer.Keyboard.SendKeys("A") |
Так у меня та же команда SendKeys, только без Нейм Спейса. А кратко как в VB6м.
И куда одна строчка кода отправит в этом случаи клавишу "A"? В активное окно, которое пользователь выберет? |
Да. Ток щас ещё один вопрос возник : как сделать чтобы он отправлял не только буквы, но и нажатия клавишь "Ctrl", "Alt" и т.д. как это сделать?
|
Писать аргумент функции SendKeys.SendWait нужно в таком виде
Вот так нажмём Enter SendKeys.SendWait("{Enter}") Можно ещё и комбинации передавать, например Ctrl+V будет так SendKeys.SendWait(^V) По остальным комбинациям нужно смотреть их терминальные символы аналоги. |
Чет не хочет он {Ctrl} воспринимать :(
|
Uzvern, А что вообще прога должна делать при Ctrl? Это часть команды в основном. Да это я чёто уже не то пишу, писал по аналогии с Enter.
Правильно Ctrl как ^, а Alt как % Что б ничего не напутать в будущем, вот стоит почитать SendKeys Class |
Фух...все-таки я добил его и понял как отменять заверытие формы.
Код:
Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing |
Красиво, со вкусом. :cool:
Цитата:
Код:
Function FileOrDirectory(ByVal Path As String) As String Я оформил в виде функции, использовать её можно так MsgBox(FileOrDirectory("C:\Program Files\") MsgBox(FileOrDirectory("C:\boot.ini") Да и любые пути и файлы, впрочем Uzvern ещё тогда вокруг да около возле нужных команд шёл разговор :wink: Цитата:
|
1. Как можно сделать чтобы программа начинала поиск не с певого симола, а с символа последнего найденого слова ?
Например у мнея 3 слов : "String String String" их может быть сколько угодно. Необходимо сделать чтобы она искала слово : "String". И чтобы можно было выполнять операцию вниз и вверх (вперед, назад). 2. Как создать папку? |
Всем спасибо. С поиском разобрался, только пока что он работет только в одну сторону :
Код:
Public Class Form1 С созданием папок тоже разобрался (Правда приходится создавать через cmd) : Код:
Public Class Form1 |
Можно ведь искать через Find, а чтобы можно было выполнять операцию вниз и вверх (вперед, назад) существуют операторы FindNext/FindPrevious. Можно и перебирать весь диапазона в цикле For Each.
Пример здесь Search and Highlight Text in a RichTextBox также здесь, поиск по таблице в Excel http://www.gotdotnet.ru/LearnDotNet/...ork/22054.aspx Проще некуда MkDir ("С:\Новая Папка") |
Кстати, что такое цикл For Each?
Чет я немогу понять как юзать FindNext/FindPrevious. Можно показать на примере? В том примере не смог ничего путного понять. |
Как полностью вырубить в VB.Net
1. синтаксическую проверку во время написания программы (подчерки и т.д.) 2. всяческие исправления a) табулирование, b) замены маленьких букв на большие, c) постановку скобок, d) авто закрытие циклов, e) автозакрытие функций и т.п Заранее спасибо за ответ |
For Each очень удобен когда на перёд не известно количество элементов, а While и Repeat не охота пристраивать, пример. Указанный Find/FindNext/FindPrevious будут работать при табличном представлении строчки, например как в Excel при указание Range.
Сдесь же можно переделать, добавив на форму ещё RichTextBox1 (для хранения строки и отображения результата) и TextBox1(для указания чего искать), указанный код к такому виду. Код:
Public Class Form1 mrcnn, Это всё выключается здесь Project -> Options-> Text Editor Basic -> VB Specific ![]() |
>>Это всё выключается здесь Project -> Options-> Text Editor Basic -> VB Specific
Отключения подчерков нет. |
Как работать с Error , Err и т.д. + как выводить справку, после нажатия в MsgBox на кнопку "Справка"
|
mrcnn, да, верно, но всё другое отключается. Про подчёркивания я уточнил, когда увидел тему Visual Studio .Net. Вероятно нужно в умной книге почитать, в Helpе так не находится. Искал по UnderLine Speell Check
Uzvern, если в коде нужно обработать одну строчку, в случаи ошибки, и ошибка одна, то можно используя конструкцию On Error Resume Next. Можно её использовать и не обрабатывать ошибки, оставив эту строчку в начале кода, так сказать пусть прога использует без ошибочную философию. Код:
On Error Resume Next Код:
On Error GoTo Corrector Код:
On Error Resume Next Код:
Try Ещё раз повторюсь, что в VB6м данной конструкции не было. С Helpom не всё в порядке, вроде бы всё просто Код:
MsgBox("Nead Help", MsgBoxStyle.MsgBoxHelp, "Little Help or Not") В VB6м сама структура Код:
Function MsgBox(Prompt, [Buttons As VbMsgBoxStyle = vbOKOnly], [Title], [HelpFile], [Context]) As VbMsgBoxResult Member of VBA.Interaction Не сказал бы, что это уж очень популярная фича, вызов из MsgBoxа справки. Если интерфейс интуитивно понятный то и справка не нужна. Тем не менее, правила хорошего тона обязывают её существование и дистрибуцию вместе с программой. |
Что за фигню (в каких единицах) мне возвращает Math.Acos и как эту фигню превратить в градусы?
Мне нужно значение в градусах, полученное из косинуса |
mrcnn, MSDN нету? Ставится даже c Express редакцией. Причём на неё можно поставить полный не Express.
Всё верно результата возвращает в specified number. Math.Acos Method |
Что делает эта комманда :
Код:
TextBox1.Undo() |
Тоже что и комбинация Ctrl+Z в большинстве программ, возвращает предыдущие значение.
Только я, когда с примера переписывал, ошибся. Это свойство нужно применять к RichTextBox1, после того как всё найдено и подкрашено, что б убрать покраснение. |
Что делает эта функция :
Код:
CStr() |
|
Сорри. Затупил :rolleyes:
|
Как прописать в тексе ковычки " ?
Все. Разобрался -) Код:
***.Text = """" И как можно написать самое6 просто приложение : Клиент - Клиент, клиент - сервер |
Аж четыре кавычки. Нормально реализовать изобреаттелям языка было видимо лень. Лучше бы в виде эскейп последовательностей сделали а не в виде какой-то фигни. Эскейп-последовательности гораздо важнее подсветки синтаксиса и синтаксической проверки на лету. В бейсике все через ж. Лучше на асме писать, чем на бейсике. Там хоть и муторно, но нет таких дбл конструкций как в бейсике и компиляторы нормальная и среда, которая не делает дбл почерки и подчерки. .
Второй способ вставить кавычку Chr(34) этот способ предпочтительнее Третий способ использовать хак: (replace(string,"'","''")) Четвертый способ: Подключить регулярные выражения Imports System.Text.RegularExpressions Regex.Escape("\"") |
Ну почему же сразу не придумали? Просто VB программисту проще, наверное, действовать методом проб и ошибок: ага две кавычке как служебные, три как ошибка, ну а на четыре компиллер наконец поймёт чего надобно.
Есть конечно же эстетическое решение: с помощью функции Char у которой есть метод ConvertFromUtf32, перевода ASCII кода в соответствующий табличный стиль. Кто таблицу не помнит, здесь всё же участник помнил, есть функция Asc, которая возвращает код символа согласно таблице ASCII. Да придётся ещё раз забомбить четыре раза кавычки, что б узнать ответ - MsgBox(Asc("""")), кому понравились они и хочется писать запутанный код и вовсе может использовать что-то на подобии MsgBox(Char.ConvertFromUtf32(Asc(""""))), а эстетам всё же предложу MsgBox(Char.ConvertFromUtf32(34)), где 34 это код кавычек. mrcnn, для C# (скрин из которого был в этой теме) по подчёркиваниям решение уже найдено в теме. |
Помогите плз. Вообщем необходимо вывести сообщение с первой буквой из каждой строки.
Код:
Public Class Form1 Код:
Public Class Form1 |
Цитата:
-1 всё же нужно, но в другом месте Код:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click |
Цитата:
Кстати, как можно определить состояник курсора в строке, т.е. в какой он позиции. |
Uzvern, REM это ж основа всего, коменты в коде после этого можно писать дальше по строчки. Тоже что и ' но в топике немного сливается, так что запостил через этот оператор.
Если он вне программы, то есть форма не активна, то без написания драйвер хука никак. А так с помощью свойства e., оно уже встречалось в теме. |
Мне нужно отловить положение курсора когда текст печатается.
Можешь показать на примере? Просто я пробовал с е., чет нифига не лоучается. |
А ну это другое дело, только тогда в этом случаи терминологически надо говорить про положения каретки, а не курсора (координаты которого передаёт e.)
Код:
Private Sub RichTextBox1_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles RichTextBox1.TextChanged Код:
Label1.Text = MousePosition.X & " " & MousePosition.Y |
Как сделать цвету формы прозрачным?
|
Вроде .NET добавил такую возможности компонентам (контролям), только для формы не предусмотрели :)
И выходит что код Me.BackColor = Color.Transparent на выполнении вызывает ошибку Цитата:
Код:
Me.BackColor = System.Drawing.Color.Magenta Если лёгкие пути не для тебя и/или влом прописывать для всех элементов их цвета, то тогда есть арсенал реализации VB6/Delphi6 и не такого частного случая. Техника программирования сложных окон в Visual Basic Генератор кода Form GENERATOR 1.5 по принципу описанному в статьи. Впервые о технологии написания, а вернее рисования, нестандартных окон я узнал их этой статьи Delphi: Безбашенные окна. Несмотря на то, что там описано для Delphi я всё же рекомендую к чтению, поскольку описаны нюансы работы с такими окнами. |
Весьма странно, что начинает прыгать и не выполнять выборку по Case. Тем не менее, ответ по избавлении от 9 Or 10 Or 12 Or 13 одним махом
Case Else GoTo generaciya Остальные комментарии в коде Код:
Public Class Form1 |
Admiral, неа. Все-равно 10-ка проскакивает! :(
|
Да уж. Первый самый код должен был нормально отработать, но идеологически боролся с последствиями, а не с причиной.
Вот следующий код ни шагу не даст i пока не убедится, что она не принимает нежелательных значений Код:
For v As Integer = 0 To 20 |
Admiral, ты не поверишь...но она все-равно проскакивает! :laugh:
Вот, залью проект. Может чего с кодом накосматил... http://slil.ru/25889104 Объясни пожалуйса поподробней что это и как это можно использовать Код:
Debug.Print() |
Uzvern
Критерий правильности: отсутствие появления перехода на новую строку? Отключи тогда еще 11 Код:
Loop Until (i <> 9) And (i <> 10) And (i <> 12) And (i <> 13) And (i <> 11) Debug.Print работать будет по видимому только в поздних студиях |
mrcnn, 11 нужно ибо Uzvern указал этот вариант в выборке (см. код по Select Case)
Debug.Print по полной работает и в этой и в предыдущих и покидать среду разработки, это удобное средство отладки, в будущих версиях языка врятле будет. Я знаю её по 6й в более ранних я не работал, но такая возможность описана в новшествах к VB5, плюс есть указание, что раньше (до VB5) окно называлось Debug, так что такая возможность скорей всего была ещё с первой версии. В коде я указал ссылку, которая объясняет где смотреть появление этой переменной. Uzvern, перед тем как отправлять код, я пару раз прогнал его и 10ка мне ни разу не выскочила (не напечаталась по Debug.Print в Immediate Window). Раз такое дело, то самым радикальным шагом будет использовать два генератора: до 10ки и после, что б даже не происходило её случайная генерация. Код сейчас посмотрю, отпишусь через редактирование. |
Admiral, Debug.Print(i) - не пашет. Проверено!
Как организовать поиск определенного файла на компе? Например, "1.txt" - мне нужно узнать где он лежит. Как предварительно получить размер файла скачиваемого из интернета и в добавок ( как получить размер файла находящегося на компьютере ) и как можно остановить/прервать скачивание? Как отследить нажатие клавиши/клавишь, если программа находится в свернутом состоянии? Во я вам работы привалил :blush: |
Цитата:
![]() собственно сам оператор пашет, это есть и на видео, не пашет установка i<>10 Для решения этого момента, как писал выше использовать два генератора до 10 и после. Очевидно, что ещё первый код работал по алгоритму, а вина выборки скорей всего зарыта в недрах .NET - Тогда и два генератора не помогут. Может в .NET 3.5 SP1 возьмутся за это, может в MicroSoft клип отправить? Как ещё один вариант, строку кода Randomize() может поместить в саму процедуру ret()? Цитата:
Цитата:
Это уже немного надо знать WEB запросы, простенькие примеры такого не дают. Simple web File download in VB.NET .Net 2003 VB.NET - Code Samples - Ping,Upload and Download using vb.net vb.net 2005 Тем немее на них стоит посмотреть, что б разобраться на более сложном Downloading files in .Net with all informations: progressbar, download speed, supports cancel and resume Размер локального файла можно узнать так Код:
Dim information As System.IO.FileInfo How to: Get Information About a File in Visual Basic Что ж нету в .NET хука на все случаи жизни. Так что для поимки нажатий клавишей его придётся писать. Managing Low-Level Keyboard Hooks in VB .NET Однако, софт подобного типа (отловить, подменить из бекграунда) стоит писать на C\C++ (возможно на Delphi), в крайнем случаи на C#. Как видно роботы оказалось не много, а вопрос по поиску файлов уже встречался. |
Цитата:
10-ка там не выскакивает, я прогонял в отладчике, она появляется только в цикле. 10 и 9 отлавливаются. с чего вы решили что 10-ка не отлавливается? |
|
Что именно не получается припаять к тем примерам?
|
mrcnn, все. Желательно бы показать на примере, а пример (сами проекты/прект) прилепить сюда. Как обычно делает адмирал за что ему отдельное СПАСИБО!
Цитата:
Цитата:
Как сделать, чтобы программа была поверх всех окон оО Как можно исправить это : "это" нахoдится тут (Сама программа и используемая картинка) (что-то с прозрачностью формы) |
ОффТоп=>
Uzvern, а зачем отдельный контрол для изображения (это я про PictureBox)? Как один из вариантов, корректно отображающих прозрачность Код:
Me.TransparencyKey = Me.BackColor Кстати глюк имеет место http://support.microsoft.com/kb/822495 но как видно в ракурсе не отображения при цветности больше 24, то есть для альфа канала. Окна поверх всех будет так Me.TopMost = True (я уже видел вопрос перед этим, просто забыл отписаться по этому поводу) Согласен, что консольный .NET2003 проект немного запутан, ну а 2008й в полном сборе: по ссылке и проект, и собранный вариант и код на странице указан, ещё с комментариями и объяснениями. Так что экспериментировать... |
|
Вложений: 1
ОффТоп=>
Конечно же он будет фиолетовым, в коде вед чётко указанно Цитата:
Цитата:
![]() |
Цитата:
|
Понял как можно избавится от
Код:
Chr(10) и тому подобной не нужной "гадости" Код:
Public Class Form1 |
|
Да можно. Загрузка последнего загруженного проекта настраивается так
Tools - > Options... -> Startup - > At startup: -> Load Last loaded solution |
Нет, а можно чтобы окно выбора создаваемого проекта появилось?! Как на скрине.
|
Тот же путь только последний пункт Show New Project dialog box
Информация по другим пунктам доступна в статье Startup, Environment, Options Dialog Box |
Как вывести полный список файлов и папок, находящихся в указаной папке/системном диске/съемном носителе?!
И как можно отследить подключение съемного диска. |
|
Убрал глюк с NotifyIcon и ContextMenuStrip.
Оказывается, надо было в свойствах NotifyIcon указать нужный ContextMenuStrip и прописать его вызов в код. Код:
Dim MD As Boolean = False |
Можно показать на примере цикл For Each, на каком-нмбудь понятном примере. просто пробовал разобраться - бестолку. :(
Кстати, для авторизации на сайте/форуме, нашел код : Код:
WebBrowser1.Navigate("//forum.oszone.net/index.php") |
Самый близкий к For Each ... Next цикл For ... Next вот на примере их сравнивание и покажу разницу.
For Each ... Next удобен, когда необходимо проделать действия с каждым элементом массива, не задумываясь о количестве его элементов Код:
Sub AddNamesToList(ByVal ParamArray NamesArray() As Object) Для цикла на базе с For ... Next потребуется уточнения про количество параметров, которые передаются Код:
Sub AddNamesToList(ByRef I As Integer, ByVal ParamArray NamesArray() As Object) и намного больше времени на адаптацию самого кода добавления в список, что б получить тот же эффект что и в предыдущем коде. С другой стороны иногда требуется сделать выборку не по всем элементам массива, тогда удобнее For ... Next. Да можно и в For Each ... Next указать через If/Select Case и т.д. какие элементы интересуют, но это уже усложнения, проще взять For ... Next, например указывая только чётные элементы Код:
For iCounter = 0 to 10 Step 2 Код:
Dim i As Integer |
У меня есть перменная.
Код:
Dim AllDrive() As ArrayList |
Код:
AllDrive.Add("a") |
Код:
Debug.Print("Element {0} is ""{1}""", 2, stringList(2)) Как сделать, чтобы курсор был по середине кнопки? |
http://msdn.microsoft.com/en-us/libr...ics.debug.aspx
Только в отладке разработчиком, пользователю оно не доступно. Это когда проводишь курсором на кнопке, что б он по центру выскакивал, или когда где-то на форме и нужно указать его положение по центру кнопки? В любом случаи команда Windows.Forms.Cursor.Position = New System.Drawing.Point(Button1.Location.X + Me.Location.X + 50, Button1.Location.Y + Me.Location.Y + 30) в первом случаи её нужно указать в событии на движении по нужной кнопке, а во втором по движению на форме. Вспомогательные координаты необходимо будет подрегулировать в зависимости от размеров кнопки. |
Admiral, о, спасибо. Вот ещё задачка :
Как мне во вторую колонку добавить текст? Код:
Public Class Form1 Как можно создать ярлык? |
Ещё как вариант
Код:
With ListView1 ListView.Columns Property Create shortcuts with a .NET application* |
Как узнать номер выделеного эллемента в ListView1?
|
ListView1.SelectedItems.Item(0)
|
Admiral, этот код позволяет щелкнуть 1 раз, дальше выдает ошибку :
Код:
InvalidArgument=Value of '0' is not valid for 'index'. Parameter name: index Код:
Public Class Form1 |
Нужна проверка
If ListView1.SelectedItems.Count > 0 Then перед Me.Text = ListView1.SelectedItems.Item(0).Text Кстати приведённый выше код показывает значение выделенного элемента, а следующий Me.Text = ListView1.SelectedItems.Item(0).Index номер элемента. |
Можно ли как-то изменить стандартное выпадающее меню (что-нибудь добавить, убрать или вообще сделать свое) ?
|
Uzvern, простым способом нет. Это как ситуация с MsgBox. Писать своё или юзать какие-то недокументированные АПИ.
|
Admiral, а как можно свое написать? :) Примеры есть?
Кстати, можно ли как-то уменьшить объем потребления RAM ? |
У меня таких примеров нету, но они должны быть в Интернете. Нужен правильный перевод этого меню - Drop Down не совсем подходит ибо показывает ASP.NET решения.
Память и .Net Определить сколько в действительности употребляет прога написанная с использование .NET можно исходя из рекомендаций в этой статье How much memory does my .NET application use? В этом топике How to minimize memory usage автор задался аналогичным вопросом, когда перенёс свой код с VB6/COM на VB.Net А здесь задан идентичный вопрос VB.Net Application using too much Memory |
Можно ли как-то сворачивать код? Не сами дейсвия (Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load), а код, например вот этот :
Код:
ListViewAllDrives.Columns.Add("Имя", 75) Код:
#Region "123" |
Через редакторы это можно делать визуально, а кодом это возможно, если назвать скрываемый блок как-то. Только это должен быть цельный блок (вместе с объявлением Sub, Function, Procedyre...), а не часть блока.
|
Как можно вывести состояние BackgroundWorker1 (работает или нет (True False) ) в Me.Text
|
Me.Text = BackgroundWorker1.WorkerReportsProgress
Так же про использование BackgroundWorker есть статья Using the BackgroundWorker Component in .NET 2 applications правда там код на C#, но пример визуально ясен. |
Можно ли как-то выдрать значение из Консоли?
|
А что подразумевается под словом "консоль"? При написании консольных приложений или выдирать значения, которые попадают в системную консоль?
Для консольного приложения есть команда Console.ReadLine, входящая в семейство Console Methods Другой пример для консольного приложения в теме C#.NET&&обработка нажатия клавиш Для выдирание их системной консоли, наверное понадобится написать какой-то хук. |
Подскажите новичку в VB,Есть форма на ней PictureBox и CommandButton,как при клике загрузить файл GIF или JPEG с интернета?Как я понимаю,его сначало нужно загрузить на диск?и потом отобразить в PictureBox или я не прав?Как все это сделать пока не знаю!Помогите.
|
Нужный код размещён в посте №76, полный код для кнопки будет следующим.
Код:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click ![]() |
Выдает ошибку "end statement" - Handles- выделяет.если я не ошибаюсь это из Visual Basic .NET?
пост № 76 не помог,наверняка я что то делаю не правильно....((( |
maximliss, ОК, вот полный код
Цитата:
|
спасибо за помощь,сейчас буду разбиратся
|
Цитата:
Код:
Debug.Print("") |
Оно добавляется только в среде, отдельный ехе бинарник ничего не постит и не консоль это вовсе. Ничто не мешает использовать переменную в качестве вывода, тогда её значение не потребуется выцеплять.
|
Как можно получить список интеренет соединений и по возможности запустить выбраное (например если добавлено в ListBox)
Можно ли как-то подгрузить картинку в текстовое поле (RichTextBox), например : "Тут идет текст, а тут ![]() Как в RichTextBox сделать, чтобы каждое слово начиналось с заглавной буквы, а все последующие строчные? Подразумеваю, что это делает Trim, но как это реализовать не знаю. |
Disabling network connection using vb.net 2005
Для VB6 проще было Insert a picture into a RichTextBox control, статью стоит взять на вооружения может удастца перевести на VB.NET до конца, текущий VB.NET В помощь VB.NET приходит технология OLE Inserting images into a RichTextBox control (the OLE way) adding a picture in a RichTextBox Код:
Dim wordstart As Integer http://www.vbdotnetforums.com/showthread.php?t=7150 |
Как можно сделать корректное отображение символов в RichTextBox?
![]() Как полусить SubItems значение выделеного элемента ? Сделал так : Код:
ListView1.SelectedItems.Item(0).SubItems.Item(1).Text |
Сохранять файл в кодировке Юникод (Unicode) и будет всё ОК
![]() |
Сделал липкое окно
Код:
Sub SW(ByVal Pixels As Integer) Цитата:
|
Возможно через таймер дать плавный переход по координатам?
Я имел ввиду в блокноте пересохранить текстовый файл как Юникод. В проекте всё правильно считывает из тхт файла. Если так интересно тогда вот Конвертация ANSI to UNICODE (или UTF) |
Как в одном окне можно создать ещё одно?
|
Это называется MDI интерфейс.
Creating Multiple-Document Interface (MDI) Applications |
Admiral, чет у меня с кодом косяк какой-то.
Код:
Dim ch1 As New Child1 А можно как-то цвет поменять? С серого на белый например?! |
Да.
Код:
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load |
Как можно автоматичски добавлять действия, например :
Код:
Public Class Form1 |
Основная часть динамики уже написана, осталось приделать динамическое добавления событий и поставленная задача будет выполнена
Код:
For x As Integer = 0 To TabControl.TabCount - 1 как узнать имя объекта вызвавшего событие? How to: Consume Events in a Windows Forms Application Set dynamic control's properties И немного истории How To Dynamically Add Controls to a Form with Visual Basic 6.0 |
Admiral, а если я добавлю ещё TextBox и при нажатии на кнопку, чтобы вылетало сообщение с текстом из текст бокса. Как это сделать?
|
Я так понимаю TextBox на каждую вкладку
Код:
For x As Integer = 0 To TabControl.TabCount - 1 |
Admiral, блин, точняк там же можно выводить из контрола. чет я совсем затупил. Спасибо, Чувак! :cool:
|
А можно как-то писать и использовать в VB dll?
|
С переходом на NET VB утратил базовую возможность писать ActiveX DLL.
Писать всё же можно, но среда аналогичной вкладки Придётся немного помудрить, что б сделать всё же DLL Writing an ActiveX Control in VB.NET И их правильное использования. DLL на VB.NET (точка входа) Microsoft всё же надеется что среди богатых возможностей .NET FrameWorks найдутся классы которые прямо из коробки подойдут к проге, так что б смысла писать DLL у разработчиков не было. В тоже время наибольший интерес представляют уже написанные DLL (не обязательно на NET). И в этой теме, когда необходимо было использовать WinApi функции, как раз использовались вызовы из системных библиотек. Есть удобное средство позволяющие узнать, как вызывать функции из написанных DLL (тех что входят в базу проги, преимущественно системные, так что WinAPI) ApiViewer (en) |
Как можно добавить таймер на форму?
Код:
Dim Timer As New Timer Там вроде как-то по другому надо добавлять и не только с таймером так |
Таймер, в отличие от VB6, помещается не на саму форму, а среда сама показывает, что он есть в проекте, но не добавляет его на форму.
Timer Class (по ссылке пример) По указанным причинам так нельзя, кроме таймера, MainMenu или ContextMenu так как эти контроли не входят в класс Control.ControlCollection. >> |
Как можно перевсти фокус с одно текст бокста на другой, ну или на кнопку например.
Все. нашел : Код:
.Focus() Код:
Public Class Form1 Все сделал : Код:
Public Class Form1 Не могу понять как обращаться к объектам из BackgroundWorker. Прочитал этот пост, но ничего путного не нашел. вот сам код : Код:
На форму кинул 3 TextBox'a, BackgroundWorker, ProgressBar, Кнопку |
Hash
А можно как-то получить обратный результат? Код:
"qwertyuiopasdfgh".GetHashCode = 1377243374 |
|
Admiral, нет. это то я знаю. Я просто думал, что именно вот эту операцию .GetHashCode можно как-то перекодировать и получить ответ. Теперь понял, что нет :)
|
Покажите примеры с Drug and Drop из Windows.
|
|
Как можно отфильтровать значение на определенные знаки, например : значение "1-2\3-4\5 необходимо отфильтровать по знакам " "-", "\" и т.п. , чтобы вернулось знаение "12345". Пробовал Trim, но чет он не помогает.
Пришлось писать функцию : Код:
Public Class Form1 |
Trim не помогает, потому что он удаляет только пробелы в конце и начале. Используй класс регулярных выражений
Код:
Imports System.Text.RegularExpressions http://www.regular-expressions.info/dotnet.html |
Как-то можно зашифровать свой проект, чтобы его нельзя было открыть например в Reflector'e?
|
Чтобы скрыть содержимое от не профессионалов, можно упаковать exe. Есть много упаковщиков типа UPX, ASPProtect и т.д. Я однако точно не знаю, работают ли они с .NET файлами. Если понадобится взломать, взломают и расшифруют, тупо сделают дамп из памяти.
См. http://madebits.com/netz/ Ключевое слово "exe NET packer" |
Виртуальная машина на страже порядка
Цитата:
Штурм зимнего .net'а Недетское вскрытие .NET .NET секретам Добыча исходного кода приложений Карманное рукоприкладствоp->Подопытный № 1 (patch) Uzvern - mrcnn прав, если понадобится код то взломают, так что сильно усложнять программу защитой тоже не стоит: ресурсов от этого она начинает брать больше. |
Как можно включить CapsLock, чтобы это отразилось и на клавиатуре (загорелась/потухла лампочка).
Код:
SendKeys.SendWait("{CapsLock}") В чем различие между : Код:
SendKeys.Send и SendKeys.SendWait |
http://forums.msdn.microsoft.com/en-...-a101cdfecf4e/
Код:
Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Integer, ByVal dwExtraInfo As Integer) Цитата:
http://www.devx.com/dotnet/Article/10115 http://www.devx.com/dotnet/Article/10115/0/page/2 (там еще несколько страниц) |
SendKeys.Send не интересуется чем закончилась передача, а SendKeys.SendWait будет дожидаться реакции от приложения в которое отправили программно клавишу, а уже потом продолжит выполнять дальнейшие действия.
Проверяя параметры запуска My.Application.CommandLineArgs(0..n) пример здесь есть ещё и другой вариант используя конструкцию вида Код:
Public Sub Main(ByVal args() As String) |
В чем различие между :
Код:
ByVal и ByRef |
ByVal – означает по конкретному значению (в контексте определённая переменная); ByRef - по ссылке (адресу) в памяти на место где размещается конкретное значение.
ByVal vs ByRef Private Sub - приватная процедура, её вызов возможен только из текущего модуля (vb файла) Sub - процедура, вызывается на определённое событие Function - тоже что и процедура, но обязана явно возвращать значение (ключевое слово Return) Private Function - тоже что и Private Sub с той лишь разницей что есть явный возврат значения. Declared Elements in Visual Basic http://www.intuit.ru/department/office/vba2000/6/ для VBA правда но определения подходят даже к VB.NET |
Как работать с
Код:
Buffer |
Есть пример на MSDN как работать с Buffer Class
Цитата:
|
а в нете можно асм использовать?
|
Я видел один вариант (доступный лишь в С#).
Использование Assembler в .NET Самое интересное автор искал возможность заюзать его в Visual C++ входящему в .NET студии. |
Как узнать регистр нужного символа и при необходимости его сменить?!
|
Узнать номер символа в строчке, которая например, располагается в TextBox1: малого регистра (vbLowerCase) и большого (vbUpperCase) можно так
Код:
Format(TextBox1.Text, vbLowerCase) Код:
TextBox1.Text = StrConv(TextBox1.Text, VbStrConv.Lowercase) |
Admiral, а где можно почитать про все функции
Код:
Vb***** |
Uzvern, неплохой хелп в MS Excel встроенный. И на русском и понятно. Это если на советском. А если на англ - то MSDN :)
|
Vb*****, это константны языка, а в данном случаи константа VbStrConv.***** используется как параметр функции StrConv.
Что б все и на русском это сложно, вот описание 162* на текущий момент функций Visual Basic .NET Значения констант, на английском правда, http://vb2py.sourceforge.net/docs/vb...t-of-constants |
Admiral, зачем вам MSDN, такое впечатление, что все ссылки и остальное в голове держишь :)
|
Delirium попросили на русском, вот как раз ссылку с одного ресурса программистов и дал, а вторая даёт в удобной форме представление. А так конечно, всё, кроме недокументированных возможностей, можно найти в MSDN. А ссылки, если что, можно всегда вспомнить через поисковик...
|
Помогите пожалуйста.
Нужно на форме разместить фрейм с вертикальной прокруткой, чтобы на нем можно было разместить несколько изображений. Как это можно сделать? |
alexa___, вы имеете в виду веб приложение или VBA?
|
Delirium, обычное оконное приложение. Вот незнаю каким компонентом сделать.
|
alexa___, если я правильно понял, то будет что-то типо этого (ток над кодом надо ещё немного подшаманить) :
Код:
Public Class Form1 |
Uzvern, Спасибо, но не то наверное. Мне ненужен код.
Нужен инструмент (компонент), с помощью которого можно сделать. Необходимо поле с прокруткой на котором можно расположить другие объекты, всего лишь. |
alexa___, если надо поле, то можно спокойно использовать ToolStripContainer или GroupBox применя вышеизложеный код для прокрутки компонентов. На счет компонента : самому бы хотелось узнать существует ли такой.
|
Uzvern,
В том то и дело, что все рисунки (изображения) могут не вместится в область формы, надо чтобы они позиционировались на этом "поле". Неужели нет решения? Я уверен что дожно быть. Программисты, отзовитесь!!! |
alexa___, ты можешь в конце концов указать язык, на котором пишешь? в .NET Framework 2.0 есть контейнер ToolStripContainer, как уже сказал Uzvern:
ToolStripContainer Class Provides panels on each side of the form and a central panel that can hold one or more controls. Visual Basic (Declaration) <ComVisibleAttribute(True)> _ <ClassInterfaceAttribute(ClassInterfaceType.AutoDispatch)> _ Public Class ToolStripContainer _ Inherits ContainerControl Visual Basic (Usage) Dim instance As ToolStripContainer В этом контейнере уже можешь делать что душе угодно. ссылка с MSDN: ms-help://MS.MSDNQTR.v90.en/fxref_system.windows.forms/html/1a9341d0-58da-0c16-762d-a9ec150ae790.htm |
Delirium, ты мне коды пишешь, а мне нужен компонет, который можно выбрать на панели инструментов и положить его на форму. (.NET Framework 3.5) - может 2.0 выбрать?
|
alexa___, если бы такое компонет существовал, то тебе бы тогда уже давно написали как его вызвать и кинуть на форму. Мое мнение таково : этот компонент не нужен, т.к. есть V(H)ScrollBar с сочетанием других компонентов.
Вот код : Код:
Private Sub VSB_Scroll(ByVal e As System.Windows.Forms.ScrollEventArgs, ByVal ParamArray Components() As Object) Код:
Private Sub VScrollBar1_Scroll(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ScrollEventArgs) Handles VScrollBar1.Scroll |
Как можно задать иконки файлам, кторые открываются через написаную прогу? Типа как AIMP задает иконки на звуковые файлы.
|
Открываем реестр....
Смотрим пример текстового файла.... [HKEY_CLASSES_ROOT\txtfile\DefaultIcon] @=%SystemRoot%\system32\shell32.dll,-152 Соответственно, если у вас есть файлы ваши с расширением abc, то надо в реестре сделать запись примерно похожую на txtfile. |
Ещё небольшой вопрос не по теме : как можно создавать (!) (в одной файле, несколько иконок разного качества)?
Рисовать то мы их умеем, осталось только их как-то в один ico-файл упаковать. |
Как обозначит переменную, как Controls?
Код:
Dim FEControls As И как можно открыть папку и выделить какой-либо элемент? |
Доброго времени суток.
Уже пятый день бьюсь над вопросом и ничего не получается :dont-know. Подскажите плиз Вопрос в следующем: Есть на винчестере картинка, кликнув на кнопке необходимо её загрузить, уменьшить до размеров 150х110 пикс. и сохранить в другом месте с этими размерами. Как вариант её еще нужно отобразить в PictureBox, но с этим проблем у меня не возникнет, я надеюсь.. |
Мессир, чтобы сохранить файл можно воспользоваться этим кодом, а вот как изменить размеры сохраняемого файла, это мне тоже интерестно :yes:
Код:
Dim SFD As New SaveFileDialog Код:
Sub PictureLoad(ByVal PictureBox As PictureBox, ByVal Path As String) |
Цитата:
Цитата:
Цитата:
|
|
Изменяем размеры изображения
Код:
Dim OFD As New OpenFileDialog стырил отсюда как в (Save/Open)FileDialog можно указать несколько расширений? Код:
All Files|*.* Код:
My Prog Files|*.aaa,*.aab,.*abc Admiral, Я нашел как добавить свое поле в выпадающее меню. 152 |
Где можно просмотреть или как-то вывести "windows.h" header file?
Код:
Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message) |
Вам нужно именно содержимое windows.h ? В Visual Studio это просто - щелчком на этом файле - View Source. Ну или просто поиском найти его на винте :)
|
Delirium, чет я тебя не совсем понял! :unsure:
вообщем не нужен спиок данный дейтсвий (&H1, &H2 и т.д.) + description |
Вопрос звучал как:
Цитата:
С вашего кода абсолютно не понятно, что это за &H1 , у вас просто константе присваивается значение некоего &H - откуда это взято? |
Цитата:
Цитата:
Цитата:
Прсто я подумал, что "windows.h" - это именно действия, похоже я ошибся и задал вопрос не совсем корректно... |
Ну так вы бы писали, что вам необходимы коды &H203 и им подобные :) Это похоже на #define в заголовочных файлах. Ищите windows.h как я писал, и будет счастье :) Ну, если есть время, подождите, поищу.
Подсказка: копать примерно отсюда |
спасибо! :happy:
|
В чем различие
Код:
Next и Next(x) в цикле For(Each)(x) Код:
For FEE As Integer = 0 To DisplayOfValues - 1 Код:
For FEE As Integer = 0 To DisplayOfValues - 1 |
НИКАКОГО :) просто в старых версия basic'a необходимо было писать next FEE, а потом упростили и сделали без FEE. Можно писать обоими способами :)
|
А можно как-то по быстрому заполнить ListBox значение из алфавита?
чтобы не писать вот так Код:
ListBox1.Items.Add("A") Код:
With ListBox1.Items |
Смотрите в сторону CHR - то есть это функция, возвращающая символ по коду. К примеру chr(65) - "а" - по моему. chr(66) - "б".
О, нашел в MSDN: Код:
Dim associatedChar As Char Цитата:
|
ЗАчем их искать, если можно тупо самому их узнать
Об этом я знал, просто думал, что можно как-то ещё... |
|
Скажем так : я любознательный и хочу знать больше :biggrin:
Цитата:
|
Почему данный код не срабатывает?
Код:
Me.Controls.AddRange(New Object() {L, TB, B, C}) |
Цитата:
|
|
В смысле добавить объекты? ПРограммно, чтобы при загрузке формы добавлялись объекты эти? А сразу нарисовать их не проще? Вы же добавляете дефолтные объекты.
А вообще, вот цитата с MSDN Цитата:
|
Получилось?
|
Delirium, ну вроде бы да :)
|
Как в For Each можно перейти на следующий элемент? Наример мне ненужно записывать какое-то значение, и если оно обнаружено, то переходит на следующий.
вот например пытаюсь сделать обход System Volume Information, но она все-равно проскакивает Код:
Function GetFilesAndFolders(ByVal Folder As String) As String |
В смысле обход? Нужно именно поймать "System Volume Information" или пропустить его в обходе?
Протестировал код... Когда в качестве параметра функции пишу "C:\", начинается обход с корня диска и подвисает, точнее очень долго делает обход всех папок. ЧТобы цикл зашел в нужную папку, прописал вот так: Цитата:
Цитата:
|
Мне необходимо его наоборот пропустить!
|
Uzvern, оно и будет пропускать если подкорректировать условия, как подсказал Delirium. Проверяется это очень просто добавлением строчки Print.Debug("FolderName.Name") после условия, что б видеть что оно сработало. Можно и до, будут отображаться все пути пройденные программой, это ещё наглядно будет показывать что программа не висит.
Очень хорошо что была найдена возможность добавлять свой пункт в контекстное меню. :up: Delirium по дефолту к данной папке (при условии использовании NTFS) доступ заказан даже админу вот по этому Uzvern потребовалось обойти эту папку. |
Как можно открыть папку и выделить неоходимый файл?
|
Что бы выделить файл, например boot.ini в корне диска C, необходим код следующего вида
Код:
Call Shell("Explorer.exe /n,/e,/select, C:\boot.ini", vbNormalFocus) |
Код:
Call |
Call (оператор) - передает управление процедуре модуля (Sub), функции модуля (Function) или подпрограмме DLL >> определение от VB6 но справедливо и для VB.NET
В данном конкретном случаи оставлено мною для совместимости с проектами VB6. VB.NET 2008 позволяет применять Shell и без этого оператора, VB6 же пожелает избавится от второго параметра функции Shell если я не напишу этот оператор. Если в будущем при кодировании возникнет проблема с передачей управления процедуре, функции, внешней подпрограмме без видимых на то причин (все аргументы согласованы, имена написаны правильно) можно будет написать этот оператором и возможно разрешить проблему. Собственно в таких случаях необходимо его применять. |
а как-то можно без webbrowser загрузить код страницы?
и как в webbrowser отключить картинки? Console.WriteLine - где посмотреть то, что сюда записалось? |
Console.WriteLine - это вывод на экран текста в консольной версии программы. Если Win32, то пишите MsgBox вместо Console.WriteLine.
Цитата:
|
Delirium, компонент WebBrowser
|
Затупил :)
Может быть это поможет? http://forum.codeby.net/topic7793.html http://www.gotdotnet.ru/Forums/Common/91613.aspx |
ух. жутко, но попытаюсь разобрать. Спс, а случайно не знаешь как загрузить код станицы без WebBrowser?
|
ммм..... ну только если так попробовать:
Код:
WebClient myClient = new WebClient(); Поищи заодно на rsdn.ru по тексту "HTML-код страницы в C# коде". |
чет я немогу последний код из С в VB переделать...
|
Uzvern, написания своего ВебКомпонента, равносильно написании своего ВебБраузера. Принцип построения проще всего узнать просмотрев какой-нибудь ОпенСоурсе браузере, что несколько отводить от идеологии .NET где всё под рукой и готово.
Как не отображать (или сразу не грузить) картинки можно посмотреть здесь http://forums.microsoft.com/msdn/Sho...13729&SiteID=1, а так же здесь (там правда C#) http://geekswithblogs.net/dotnetnoma...29/119065.aspx. Стоит проконтролировать что в странице действительно вырезаются картинки на лету (даже не грузятся), а не после загрузки когда они уже накрутили трафик и по просто не отображаются. |
Как программно изменить свойства папки (сменить значок, тип файлов) ?
|
Uzvern, вы там винду новую пишете? :)
Цитата:
desktop.ini в папке: [.ShellClassInfo] IconFile=%SystemRoot%\system32\SHELL32.dll IconIndex=22 Примерно так. Создать файл и запихать туда нужные строки. А вообще посмотрите функции Shell, там должно это быть. Цитата:
|
Ну вот написал код, но чет он не пашет (Все создает, ноиконку не меняет) :
Код:
Public Class Form1 |
Да, действительно, просто создание файла desktop.ini не дает нужного результата. Об этом писали здесь .
Похоже, единственные вариант - использовать функции Shell, пример использования(на делфи) есть здесь. Если брать VB или C#, то описание задано в статье MSDN : Цитата:
|
Как можно изменить размеры верхней (главной) строки программы (Где название, иконка, кнопки закрытия/максимизации/минимизации) ?
|
Эта строка называется TitleBar, её параметры устанавливаются в настройках Виндовса, значения можно получить командой MsgBox(SystemInformation.CaptionHeight.ToString)
или Dim TitlebarHeight As Integer = Me.Height - Me.ClientSize.Height - Me.Width + Me.ClientSize.Width MsgBox(TitlebarHeight) Как вариант решения можно создать свою аналогию, перерисовав графику, но стоит ли тогда вообще строить квадратно подобные формы? Если не стоит, то вот как примерно такое окно можно построить, по готовому нарисованному рисунку. Так же пример по С#. |
А как-то можно изменить размеры CaptionHeight?
По нарисованому рисунку не интерестно. Я хочу именно CaptionHeight изменить |
Uzvern, в том то и дело что SystemInformation.CaptionHeight параметр только для чтения, его можно косвенно (меняя Color Sheme) через это окно затрагивая все оконные приложений Виндовс.
|
Admiral, а как тогда тут сделано оО
![]() |
Uzvern, я этот скрин ещё в предыдущем посте смотрел, и прикинул что это организовывается аналогично тому, как инсталлятор Висты/2008 рисуется в ХР/2003 >>. Может в одном из ресурсов данной программы и лежит рамка этого окна.
Приблизить к такому эффекту в новом проекте может следующий код Код:
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load |
Admiral, либо я что-то не понял, либо ты. У меня стоит Aero. как ты видишь, окно подвергается эффектам Aero. Т.е. это не нарисованая форма, а просто растянутый на всю прогамму TitleBar :unsure:
На ХР-шке окно не прозрачное! |
Цитата:
За прозрачность отвечает Me.Opacity, значения от 0 до 1. |
Вот пример : http://www.gotdotnet.ru/Forums/Windows/581428.aspx
А тут их куча, только с переводом траблы : http://weblogs.asp.net/kennykerr/arc...w-Manager.aspx + немогу добавить объект на прозрачную область. Нет, он добавляется, но некорректно. |
Uzvern, класные ссылки и примеры. :clapping:
Возможно глюки GDI+. Тут уже ничего не сделаешь, разве что свою реализацию писать. |
Admiral, ни одного слова не понял, но спасибо.
|
Uzvern, в приведённой статье сказано
Цитата:
Без кода по вопросу Цитата:
|
Помогите запустить следующую программу, находясь в документе Word. Заранее благодарю.
Код:
Option Explicit |
Во первых, нет описания функций TextWidth, TextHeight. Во вторых, не совсем понятен смысл данного кода.
|
Delirium Нашел эту процедуру в И-нете "Вывод на экран текста, форма приобретает вид текста". Пытался ее вставлять в форму, но ее делит на процедуру (макрос), первую часть до "Private Sub..." отделяет. Не знаю как обьединить. Хотя и не уверен, но думаю, что фнкции TextWidth, TextHeight смогу расписать. Программированием уже лет 12-ть не занимался, хотя в VBA совсем иной принцип заложен.
|
Цитата:
Цитата:
|
Delirium , и что делать, ни как нельзя приспособить? вроде бы программа была расписана для VBA. Уж больно идея понравилась.
Идея в том, что хочу разместить рисунок и рядом с ним текст, который изменялся бы при выделении разных областей рисунка. Все это хочеться разместить просто на листе, либо на форме развернутой во весь экран. |
В смысле что то типа picker'а? Т.е. написал я текст, а потом ткнул мышкой, и текст стал цвета пикселя на картинке? Можешь пример хоть примерно нарисовать?
|
Помогите отловить сообщение Windows о подтверждении удаления файла/папки и нажать кнопку "Нет".
|
Uzvern, а в когда оно появляется? Имеется в виду, в вашей программе или где? Это же по сути простой MessageBox с vbYesNo.
|
Цитата:
|
хмм. а отслеживать необходимо через свою программу? Единственный вариант, который приходит в голову - отслеживать появление окон с заголовком "подтверждение удаления файла" и программно нажимать "нет". AutoIT работает по такому принципу.
|
Uzvern, есть исходник на С++ http://ja.pastebin.ca/raw/890971
Данную защиту можно обойти использовав не Експлоре, например через FAR, TotalCommander и другие файловые менеджеры удалить файл всё же получится. |
Admiral, а обход мне неочень интересен, т.к. человек все-равно до этого не додумается. Щас буду пробовать переводить код с С++ в VB :)
|
Доброго времени суток, Уважаемые обитатели форума!
Я начал изучать VB совсем недавно, примерно 1,5 месяца назад. Поиск на форуме мне к сожалению не помог, т.к. проблема видимо слишком простая и скорее всего не обсуждалась. А суть проблемы такова: нужно при нажатии кнопки Button2 сохранить данные из ListBox1в файл с расширением *.xls, ну или хотя бы в *.txt На машине установлено: Visual Studio 2008 Express, а в качестве офисного приложения OpenOffice 3.0 (MSOffice нет.) Собственно, если нет прямой возможности сохранить в *.xls, текстовый файл вполне подойдет. Вот текст приложения: Public Class Form2 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click 'ЗАПОЛНЕНИЕ ФОРМЫ СИСТЕМНОГО БЛОКА 'Системный блок ListBox1.Items.Add(GroupBox7.Text) ListBox1.Items.Add(Label4.Text) ListBox1.Items.Add(TextBox4.Text) ListBox1.Items.Add(Label17.Text) ListBox1.Items.Add(TextBox5.Text) 'Материнская плата ListBox1.Items.Add(GroupBox1.Text) ListBox1.Items.Add(Label5.Text) ListBox1.Items.Add(ComboBox1.Text) ListBox1.Items.Add(Label6.Text) ListBox1.Items.Add(TextBox7.Text) 'Блок питания ListBox1.Items.Add(GroupBox2.Text) ListBox1.Items.Add(Label8.Text) ListBox1.Items.Add(ComboBox2.Text) ListBox1.Items.Add(Label7.Text) ListBox1.Items.Add(TextBox9.Text) 'HDD ListBox1.Items.Add(GroupBox3.Text) ListBox1.Items.Add(Label10.Text) ListBox1.Items.Add(ComboBox3.Text) ListBox1.Items.Add(Label9.Text) ListBox1.Items.Add(TextBox11.Text) 'FDD ListBox1.Items.Add(GroupBox4.Text) ListBox1.Items.Add(Label12.Text) ListBox1.Items.Add(ComboBox4.Text) ListBox1.Items.Add(Label11.Text) ListBox1.Items.Add(TextBox13.Text) 'DVD ListBox1.Items.Add(GroupBox5.Text) ListBox1.Items.Add(Label14.Text) ListBox1.Items.Add(ComboBox5.Text) ListBox1.Items.Add(Label13.Text) ListBox1.Items.Add(TextBox15.Text) 'Сетевая карта ListBox1.Items.Add(GroupBox6.Text) ListBox1.Items.Add(Label16.Text) ListBox1.Items.Add(ComboBox6.Text) ListBox1.Items.Add(Label15.Text) ListBox1.Items.Add(TextBox17.Text) 'Видеокарта ListBox1.Items.Add(GroupBox7.Text) ListBox1.Items.Add(Label18.Text) ListBox1.Items.Add(ComboBox7.Text) ListBox1.Items.Add(Label19.Text) ListBox1.Items.Add(TextBox19.Text) 'Очистка заполненных строк TextBox4.Clear() TextBox5.Clear() TextBox7.Clear() TextBox9.Clear() TextBox11.Clear() TextBox13.Clear() TextBox15.Clear() TextBox17.Clear() TextBox19.Clear() End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 'Заполнение формы заказа ListBox1.Items.Add(Label1.Text) ListBox1.Items.Add(TextBox1.Text) ListBox1.Items.Add(Label2.Text) ListBox1.Items.Add(TextBox2.Text) ListBox1.Items.Add(Label3.Text) ListBox1.Items.Add(TextBox3.Text) End Sub Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click End Sub Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged End Sub Private Sub SaveFileDialog1_FileOk(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles SaveFileDialog1.FileOk End Sub Private Sub GroupBox8_Enter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles GroupBox8.Enter End Sub End Class Спасибо. |
paul_p, приветствую.
Цитата:
Цитата:
Код:
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click А компоненты GroupBox1, GroupBox2, .., GroupBox7, TextBox, Label1, Label2, .., Label19, TextBox1, TextBox2, .., TextBox19 нужны именно в таком количестве? Между прочим код можно немного преобразовать с помощью операторов With и End With что уже было показано в теме На форуме код рекомендуется помещать между тегами [code]'здесь код[/code] ![]() |
Admiral! Большое спасибо!
По всей видимости, я не совсем корректно воспользовался сервисом поиска (учту на будущее) Тегом "code" тоже буду пользоваться обязательно, действительно удобно отделять код от текста. Что же касается большого количества TextBox, то это обусловлено самой формой. Дело в том, что тот кто будет заполнять форму должен видеть все поля сразу, т.к. приходится их заполнять одновременно. А выбирать пункт из меню менее удобно, чем заполнять видимый. Данная форма предназначена для многократного заполнения однотипной информации: №системного блока, серийный номер материнской платы и.т.д... Немного доработал код сохранения в файл. Вот что получилось: Код:
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click |
Всем привет.
Появилась проблема с написанием WEB-приложения. Нужно отправить GET-запрос на сервер, но значение Connection в хедерах не должно присутствовать... GET / HTTP/1.1 Host: www.google.ru Connection: Close Отправить запрос я коекак научился с помощью HttpWebRequest, а вот избавиться от Connection не получается. Помогите плиз! |
Мессир доброго времени суток.
Вроде всё тривиально, указываем KeepAlive = False и Connection = Nothing но на последней записи во время выполнения сваливается с ошибкой о необходимости присваивать через свойство объекта. Только не понятно через что по их мнению сейчас идёт присвоение? На форуме MS вопрос по данному поводу уже подымался - Get rid of Connection header in HttpWebRequest (использовали C#), отправили читать MSDN (здесь по-русски HttpWebRequest.Connection - свойство), только там поданному поводу не привели пример, а сказали как присвоить/задать. Здесь - не отрабатывает Headers.Add вроде как поняли (в контексте другого объекта), что именно за свойство и как присваивать. Вот так же запись в блоге Setting HTTP headers in .NET: This header must be modified using the appropriate property как раз по тексту данной ошибки. Есть другая информация, конкретно бага в VB.NET 2008 - Assigning null to the Connection property of HttpWebRequest results in an exception только там указанно что с данным столкнулись в Windows Server 2003 Код:
Imports System.Net Вопрос остаётся открытым, быть может другие участники имеющий, опыт работы с объектом HttpWebRequest, предложат своё решение по прятанью значения Connection или вовсе его не передачи, как бывает в случаи с https. |
Admiral,
Я именно так как в примере запрос и отправляю. и с myHttpWebRequest.Connection = Nothing тоже получал ошибку... Но значение Connection: Close в заголовке все равно остается... Мне бы от него совсем избавиться... P.S. Из информации, которую нашел в интернете делаю вывод что HttpWebRequest нельзя отправить вообще без заголовка Connection P.P.S. Сейчас нашел вроде способ. Пытаюсь запросы не через HttpWebRequest отправлять а с помощью ActiveX компонента AxWinsock Вроде получается. Только все заголовки приходится прописывать переменными.. Строка запроса вырастает до невероятных размеров.. И программа не работает без файла MSWinSck.ocx. Но это всё же лучше чем ничего. |
Всем привет.
Есть небольшой вопрос. При нажатии на иконку в трее форма скрывается, либо появляется. (ShowInTaskbar = False) Код:
Private Sub NotifyIcon1_MouseDoubleClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles NotifyIcon1.MouseDoubleClick |
GolfNorth, Me.TopMost = True
|
Благодарю, но не совсем то - Me.TopMost = True оставляет окно поверх всех окон постоянно. Я же хочу сделать так, чтоб при нажатии на иконку в трее окно просто выходило на передний план, а не оставалась поверх постоянно. Таким напильным методом пока сделал:
Код:
..... |
GolfNorth если не охота связываться c Win32 Api это как раз решение не отходя от VB, на чём так же сошлись на форуме MS
Если всё же интересно, вот как это можно организовать применив Win32 Api функцию SetForegroundWindow Код:
Public Class Form1 |
Visual Basic 2008
Помогите пожалуйсто разобраться ) Дело в том что самоучитель у меня для Visual Basic 6, а установлен 2008 и вот возникают некоторые проблемы при освоении этого языка.
1й вопрос: Каким оператором в VB 2008 заменяется старый Код:
Print Пример: Код:
Print "Объём="; V Код:
Form_Terminate Пример: Код:
Form_Terminate() PS: Хотя не уверен что выразился понятно. |
N93, доброго времени суток.
Это оператор в VB6 был оставлен для переходящих с QBasic, его основное предназначение печать в файл, указав после служебного символа # конкретный номер соответственно открыто файла. В VB.NET с возможностью печатать на форме с помощью данного оператора попрощались, наиболее близкий вариант, основанный на кодах из этих тем [2008] VB.NET Equivalent Of VB6's "Print" Прозрачность PictureBox'ов Код:
Public Class Form1 По второму вопросу тут несколько проще Код:
Private Sub Form1_HandleDestroyed(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.HandleDestroyed |
'Public Sub WriteSomeText' , а где этот элемент брать? или его только вводить вручную?
|
N93 данную процедуру нужно писать самостоятельно, причём можно задать своё имя, например PrintVB6Style
Можно вовсе обойтись без написания отдельной процедуры/функции, но тогда каждый раз где она понадобится, придётся описывать все её действия. |
Снова день добрый. В VB6 можно было создать на форме несколько элементов с одинаковым именем, но различным индексом. Такие элементы были очень удобные, если они выполняли схожие операции. В VB 2008 свойства Index я не нашел, можно ли все таки это реализовать?
|
Этот вопрос уже обсуждался в этой теме, на сколько я помню, не удалось это реализовать.
|
GolfNorth, по данному вопросу есть новые ссылки
VB.NET: What Happened to Control Arrays Creating Control Arrays in Visual Basic .NET and Visual C# .NET В этом отношении стало несколько сложнее по сравнению VB6 где на элементе на форме с помощью Ctrl+C и Ctrl+V можно было создать такой массив. Uzvern, кстати 10ка не проскакивает в случаи сборки в VB 2008 SP1/.NET 3.5 SP1 |
Admiral, спасибо. Я уже решил эту проблемку :)
|
Сможет кто - нибудь помочь,хотя бы примерный код :Исходные данные находятся в текстовом файле "слова.txt". Каждая строка файла содержит одно слово на русском языке. Создать консольное приложение, которое выбирает из файла и выводит на экран слова, соответствующие слова оканчиваются на букву "т", и подсчитывает их количество.
|
ChrisRoB потребуется умение работать с файлом
Код:
'открываем файл для чтения Код:
While (r.Peek() > -1) Код:
'пример вывода последней буквы из строчки текста |
Подскажите как сделать!
Создать консольное приложение, которое выводит в текстовый файл с именем числа.txt, 15 случайных чисел, значения которых находятся в интервале от 100 до 300. Каждое число выводится с отдельную строчку файла. |
19Garik90, про работу файла было чуть ранее. Пример генератора случайных чисел Generate a Random Integer Between Two Specified Values (.NET)
Вот небольшая программа Код:
Imports System Использовать так RandomInConsole 100 300 15 и на экране консоли появится15 строчек с числами между 100 и 300. Для вывода в файл, средствами консоли, - RandomInConsole 100 300 15 >числа.txt. |
Добрый день знатокам. Подскажите пожалуйста, как в VB 2008 добавить обработчик событий мыши. Есть программа (форма) с областью для вывода графики, нужно отследить клик мыши в этой области с определением координаты клика.
|
Приветствую TomSoyer.
В простейшем случаи Код:
Protected Overrides Sub OnMouseClick(ByVal e As System.Windows.Forms.MouseEventArgs) |
Всё это понятно. Только вот как в проект добавить этот обработчик? Просто прописать - скорее всего ничего не получится. Где-то должен быть ещё и вызов этого обработчика. Я сужу по С++, просто так случилось что нужно именно на VB 2008.
|
TomSoyer, это общий случай, если сама форма является самим объектом, на которую и выводится графика. Данный код как раз достаточно добавить в пределах видимости класса данной формы. Обработчик вызывается получив событие на окно (детали скрыты средой).
Если область какой-то элемент управления, нужно выбрать аналогичное событие, если такое имеется, для него. Или в конструкторе класса формы назначить ему такое (если это возможно). |
Да, действительно. Механизм работает. Только в областях окна формы. Часть формы занята элементом PictureBox. Вот на этой области и нужен перехват клика мыши. Как на нём заставить работать этот механизм. Я уже голову сломал над этой проблемой, перерыл все менюшки/свойства, но так и не понял, как в VB добавлять обработчики событий.
|
TomSoyer, событие для PictureBox называется аналогично (без On).
![]() Private Sub PictureBox1_MouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseClick |
Спасибо большое за оперативную помощь. После VC добавление событий в VB как-то не совсем удобно. Хотя, может это дело привычки... :up
|
Доброго времени суток!
Занимаюсь изучением vb2008 совсем недавно, на форуме похожих тем не нашел, посему вопросик, скажите пожалуйста, вот есть MDI формы, открываю одну, разворачиваю/сворачиваю, открываю вторую и она автоматом разворачивается, как сделать так чтобы вторая при открытии имела нормальный вид? Заранее спасибо! |
О. Хорошая темка.
У меня назрел вопрос. Я тут недавно начал изучать Visual Basic 2008 и никак не могу найти нормального самоучителя... Приходится по справке, из за этого никак не могу понять некоторые вещи: Классы, сабы и д.р. Никто не знает нормального хорошего самоучителя? И еще... никто не может предложить модуля архивирования\разорхивирования файлов? Я нашел под C# и не могу преобразовать под VBA |
Medic84 Чарльз Петцольда - Программирование для Microsoft Windows на Microsoft Visual Basic .NET, в 2-х томах.
Очень рекомендую. Насчёт актуальности должен предупредить, книга по .NET 1.1 (сегодня уже .NET4.0 наступает). Но такие вещи как классы, сабы там рассмотрены достаточно хорошо (про классы в самом начале книги есть весьма хороший пример (про календарь)). Насчёт непосредственно VBA не скажу. Но если есть код на C#, то получить его вариант в VB можно с помощью ОнЛайн "переводчика" - http://www.developerfusion.com/tools.../csharp-to-vb/ Специфические примеры может корректно и не перенесёт, а так вполне пригодный. |
Доброй ночи, вы писали :
В простейшем случаи Код: Protected Overrides Sub OnMouseClick(ByVal e As System.Windows.Forms.MouseEventArgs) MsgBox("Координаты клика мыши в области формы: " & e.Location.ToString, MsgBoxStyle.Information, "Отслежен клик мыши") End Sub А нельзя ли уточнить, я хочу получить координаты X Y курсора мыши . Координаты мыши на экране получить достаточно просто : Dim X1 As Integer Dim Y1 As Integer X1 = MousePosition.X.ToString Y1 = MousePosition.Y.ToString Но мне нужны координаты относительно формы(или какого-либо объекта) откуда их извлечь? Т.е. как мне кажется должно быть какое-то свойство объекта которое их показывает, что-то типа - Объект.Мышь.координаты.Х но какой точный синтаксис? Или я ошибаюсь? |
Большой Кол, нужно преобразовать координаты экрана в координаты клиентской формы (см. метод PointToClient).
А обратное преобразование осуществляется методом PointToScreen. |
Простите пожалуйста , а нельзя ли привести пример кода, с PointToClient , так чтобы получить в переменные X1 и Y1 типа Integer координаты мыши на Windows Form ? Просто я только азы изучаю,вот сейчас до графики добрался, читаю я про PointToClient на MCDN , но там примеры мудреные(для меня) . Например я так понял, что тут замешен тип данных Point , я пока не сообразил как его в Integer преобразовать.
|
Большой Кол в большинстве случаев перевод значений с Point в две переменные Integer не требуется. Point это две переменные Integer объединённые в одну структуру.
Код:
Protected Overrides Sub OnMouseMove(ByVal e As System.Windows.Forms.MouseEventArgs) Координаты e.Location уже даны относительно формы на экране, по этому для примера PointToClient взят Cursor.Position. Если же в PointToClient подставить e.Location то метод может вернуть отрицательные координату(ы). В сообщении 330 для перевода в переменную Integer применять ToString не требуется. |
Огромное спасибо. PointToClient(Cursor.Position).ToString показывает именно то что мне нужно, осталось лишь придумать как выцедить из них цифры. PointToClient(e.Location) , по моему показывает данные от балды, но это не страшно, разберусь.
|
Всем привет!
можете помочь? при открытии веб страницы на WebBrouser надо сделать так что бы Вертикальный и горизонтальные Бары двинулись и показали одну точку или какой то блок |
Пардон, как Вы это (указание единственной, и при том, похоже, наперед заданной точки посредством скролл-баров) представляете на практике? Типа, хоть картинку можете нарисовать? А то я весь в неведении!
|
Может кто подскажет, где ошибся?
Есть форма ввода данных. При попытке внести данные, нажав на кнопку, выскакивает сообщение (в отладке VS): "Общий член "SetPassword" для типа Object не найден" Код:
Public Class FormPass |
Devils0411, вы уверены, что у класса "Object" есть св-во SetPassword ?
Что-то мне подсказывает, что Object - это исходный класс для всех объектов. Т.е. довольно то таки типовая "болванка", из которой можно сделать что то интересное. Код:
Dim objUser As New Object Код:
objUser.SetPassword() - ? |
lxa85,
Убрал переменную ObjUser, как класс. Подправил код Код:
Public Sub Buttonchg_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Buttonchg.Click 'Кнопка "Сменить" Т.е. сравнение переменных newpwd, confimpwd происходят некорректно. Переменные задаются в TextBox'ах |
Проблему решил. Вот таким образом:
Код:
Select Case String.Compare(newpwd.Text, confimpwd.Text, False) |
Вложений: 1
Всем доброго времени суток. Подскажите пожалуйста, есть проект.
При запуске приложения, создается файл ShablonMail.txt в кодировке UTF8 и первой строкой `. Этот символ является флагом для поиска. При заполнении полей: кому:, Копия:, Тема:, Текст сообщения: и нажатии кнопки Сохранить изменения. Все происходит прекрасно. При выборе темы и нажатии кнопки Заполнить поля, тоже все прекрасно. А вот когда корректирую поля Кому:, Копия, Текст сообщения при неизменности Темы и нажимаю Сохранить изменения, происходит запись в конец файла, а необходимо перезапись Кому: и Копия: в файле. Каким образом это можно сделать? |
Devils0411, сейчас переустанавливаю Ос, обовляюсь до 10. на неделе посмотрю
|
lxa85, спасибо. Буду ждать, если к тому моменту не найду способ :)
В принципе, как сделать чтение и запись в файл - знаю, а вот как сделать замену строки к сожалению нигде толком не нашел. |
Еще один вопрос.
Есть функция: Код:
Public Function CountCc() As Integer Код:
cur = CountCc() В данном случае, корневой контейнер - "LDAP://ou=Users," & CurentPathDim(6) & "," & CurentPathDim(5) & ",ou=bla,dc=bla,dc=bla,dc=bla" т.е. нужно добавить фильтр (objectClass = user) к запросу GetObject("LDAP://ou=Users," & CurentPathDim(6) & "," & CurentPathDim(5) & ",ou=bla,dc=bla,dc=bla,dc=bla") |
Еще одна задачка, которую не могу понять как решить. Есть CheckListBox, в котором два пункта с флажками. При выборе двух пунктов, как определить, какой пункт был выбран последним?
Код:
Dim x As Integer К примеру выбрали мы первый пункт и поставили флажок. После мы выбрали второй пункт, и вот тут нам нужно чтобы флажок с первого пункта снялся. Поставили снова флажок на первом пункте и флажок снялся со второго пункта и т.д. |
Время: 21:38. |
Время: 21:38.
© OSzone.net 2001-