VBNet
VBMania
Голосование: Ваш голос отсылается по E-mail владельцу сайта, после чего голоса анализируются и на отдельной странице выводятся результаты. Нет тем. Доска почёта: Sergey Y. Tkachev Кононенко Роман Kirill Ссылки: |
Господа!!! читайте MSDN!!! Несколько слов от автора:
Новый выпуск!
Читайте! Содержание выпуска
Книги
Остальные книги о VB можно найти здесь. наверх VBNet CD возвращается Как Вы наверное помните, 1 июля этого года в этой рассылке появилось сообщение о создании компакт диска "VBNet CD". Было обслужено 26 заказов. Все диски были отправлены по назначению. Ко мне поступило много отзывов. Все, кто решил высказаться, довольны содержимым компакт-диска. VBNet.RU представляет новый компакт диск "VBNet CD 09 2002", который должен продолжить серию "VBNet CD". Спешу сообщить, что в процессе создания CD были учтены все пожелания/замечания, полученные от пользователей первой версии. Диск содержит:
Какие же изменения постигли диск? Также был усовершенствован механизм оформаления заказа. Теперь Вы можете получить информацию о своём заказе и состоянии заказа зайдя по ссылке в разделе Магазин сайта VBNet.RU. Диск распространяется по почте наложенным платежом. Цена: 60 рублей + 35 рублей (за почтовые расходы) = 95 рублей. Заказать диск можно в разделе Магазин нашего сайта, либо заполнив расположенную ниже форму: Стоимость: 95 рублей наверх Обрушить вашу программу АВТОР ДАННОГО КОДА НЕ НЕСЕТ НИКАКОЙ ОТВЕТСТВЕННОСТИ ЗА ИСПОЛЬЗОВАНИЕ ВАМИ УКАЗАННОГО НИЖЕ КОДА. (Хотя ничего страшного не произойдет...) Private Declare Sub FatalAppExit Lib "kernel32" Alias "FatalAppExitA" (ByVal uAction As Long, ByVal lpMessageText As String) Private Sub Form_Load() FatalAppExit 0, "Впишите сюда любой текст" End Sub наверх Установить горячие клавиши для вызова программы Скопируйте следующий код и запустите программу Затем запустите любое приложение, или сделайте, чтобы ваша программу стала неактивной Нажмите клавишы Alt + z (горячая клавиши в этом примере) и вы увидите снова вашу программу Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Long) As Long Private Declare Function DefWindowProc Lib "user32" Alias "DefWindowProcA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long Private Const WM_SETHOTKEY = &H32 Private Const WM_SHOWWINDOW = &H18 Private Const HK_SHIFTA = &H141 'Shift + A Private Const HK_SHIFTB = &H142 'Shift + B Private Const HK_CONTROLA = &H241 'Control + A Private Const HK_ALTZ = &H45A Private Sub Form_Load() 'Позволить узнать windows какая горячая клавиша в вашем приложении erg& = SendMessage(Me.hwnd, WM_SETHOTKEY, HK_ALTZ, 0) If erg& <> 1 Then MsgBox "You need another hotkey", vbOKOnly, "Error" 'Сказать windows что делать при нажатии на hotkey 'в данном случае - показать окно программы erg& = DefWindowProc(Me.hwnd, WM_SHOWWINDOW, 0, 0) End Sub наверх Запретить запуск двух копий программы Данный пример запрещает запуск двух копий одного и того же exe-файла. Хотя вам ничего не мешает сделать копию программы, переименовать ее и запустить. Private Sub Form_Load() If App.PrevInstance = True Then MsgBox "Программа уже запущена!" End End If наверх Нахождение hwnd чужих окон Я уже не первый раз в своей практике сталкиваюсь с ситуацией, когда мне необходимо найти окно чужой программы. Т.е. узнать - запущено какое то конкретное окно или нет. Или сначала узнать, есть ли окно, а потом закрыть. Да мало ли какие могут быть еще применения. Подумав, и перепробовав разные законные способы реализации я остановился на следующем: Исходные данные - имеется программа , окно которой в заголовке содержит какой-то достаточно уникальный набор символов. Задача. Найти и честно закрыть это окно из программы. Вам понадобится дополнительный модуль.
Активация ранее запущенной этой же программы Скопируйте код на форму. Скомпилируйте exe-файл. Запустите exe-программу, минимизируйте, снова запустите exe-программу. Смотрите, что получиться... Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Private Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wCmd As Long) As Long Private Declare Function OpenIcon Lib "user32" (ByVal hwnd As Long) As Long Private Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As Long Const GW_HWNDPREV = 3 Private Sub ShowPrevInstance() Dim OldTitle As String Dim ll_WindowHandle As Long 'saving the current title in OldTitle variable 'and changing the application title OldTitle = App.Title App.Title = "abcba - This App Will Be Closed" 'finding the previous instance. if you are using VB 5.0, 'change "ThunderRT6Main" to "ThunderRT5Main" ll_WindowHandle = FindWindow("ThunderRT6Main", OldTitle) 'if there is no old instances of your application - exit. If ll_WindowHandle = 0 Then Exit Sub 'Find the window we need to restore ll_WindowHandle = GetWindow(ll_WindowHandle, GW_HWNDPREV) 'Now restore it Call OpenIcon(ll_WindowHandle) 'And Bring it to the foreground Call SetForegroundWindow(ll_WindowHandle) End End Sub Private Sub Form_Load() If App.PrevInstance Then ShowPrevInstance End Sub наверх Работа с командной строкой в программе Позвольте вашему приложению запускаться как "programa.exe option1". VB 5.0/6.0: Из меню VB выберите Project->Project1 Properties, выберите вкладку Make, и введите в Command Line argument текст: option1 Скомпилируйте exe-file, из меню Пуск/Выполнить запустите ваше приложение например так: "programa.exe hello", и вы получите сообщение с теми аргументами, которые вы вводили (в данном случае слово hello) Private Sub Form_Load() Мои программы BalloonMessage for MS Agent BalloonMessage for Microsoft Agent реализует диалог программы с
пользователем, используя при этом технологию Microsoft Agent. OCX реализует три
типа диалоговых окон: InputBox, MsgBox и MsgLabels. Автор: Шатрыкин Иван. Соавтор: Павел Сурменок. наверх Вопрос/Ответ Здесь Вы можете задать вопрос, или ответить на уже имеющиеся вопросы. Вопросы:Автор вопроса: Немчинов Михаил Ответ ожидается по этому адресу Возможно ли в VB использование апишной функции NetSessionEnum(…) Если возможно, то как ее декларировать… Автор вопроса: Мошкин Ответ ожидается по этому адресу Вот вопрос уже был, а ответа вроде бы не было. Хочется сделать автоинформатор. Голосовой модем должен звонить, потом распознавать что трубку сняли, а потом проговаривать туда в линию подряд несколько Wav-ов. (сформированное сообщение). Как это вообще делать. Если можно, небольшой примерчик. Автор вопроса: Vir Ответ ожидается по этому адресу Владельцы VB.NET подскажите как можно узнать ширину определенного текста при печати. Код в VB.6 был такой a(1)="aaa" a(2)="bbbb" a(3)="XXXXX" q=0 for i=1 to 3 If Printer.TextWidth(a(i))>q then q=print.textWidth(a(i)) next for i=1 to 3 Printer.Print a(i) next Printer.Line (q, 0)-(q, 100), 0 Автор вопроса: shadow Ответ ожидается по этому адресу можно ли сделать чтоб форма и все контролы которые на ней были полупрозрачными (и если это возможно - как регулировать прозрачность) кстати кто видел прогу которая меняет надписи кнопок да, нет, отмена - я сделал такуюже тока с настройками, если интересни пишите сюда shadow_pochta@rambler.ru Автор вопроса: LexA Ответ ожидается по этому адресу Кто-нибудь янает что-нибудь о API'вской функции systemparametersinfo? Автор вопроса: LexA Ответ ожидается по этому адресу Люди... подскажите как свяяать VB6 и MSDN Library ??? Я пробую установить MSDN Library ия VB6, но нечего не получается. VB6 выдает сообщение : типа "Укажите путь к первому диску MSDN Library", я вставляю 1-ый диск укаяываю путь на CD-ROM, яатем VB6 проияводит поиск по этому пути и выдает ошибку: типа, что нужно укаяать другой путь. Что делать? :) Автор вопроса: darknez Ответ ожидается по этому адресу Кто-нибудь знает что такое xExescope и где её можно взять. Автор вопроса: Михаил Ответ ожидается по этому адресу Каким образом можно задать счётчик обратного времени от предстоящей даты до текущего момента? Автор вопроса: ]CBK[CRaSH Ответ ожидается по этому адресу Люди как пользоваться OpenGL в ВБ Автор вопроса: sergnap Ответ ожидается по этому адресу Можно ли в открытое программу (например: HYPERTERMINAL) добавить пункт меню из приложения на VB5. Как это сделать. Автор вопроса: Андрей Ответ ожидается по этому адресу Что яначит деяасемблировать программу. И еще, есть рога которую я давным давно писал, вся информация по ней пропала. Можно ли каким то обраяом раякомпилировать программу сеова в код? Автор вопроса: Игорь Ответ ожидается по этому адресу Как испольяовать траняакции в Visual Basic? Ияначально траняакции "привяяаны" к элементу Workspace, но этот элемент может быть не объявлен явно (как у меня и происходит). И как же в таком случае испольяовать операторы траняакций? (если можно, какой-нибудь примерчик) Автор вопроса: Александр Ответ ожидается по этому адресу Как можно яаписать в реестр параметр типа ''word'', кодом Моя_Переменная.RegWrite "Ветвь реестра", "Параметр" не получается(вернее получается, но только строковой параметр). Автор вопроса: Александр Ответ ожидается по этому адресу Как можно считать ия реестра данные в переменную, кодом Моя_Переменная.RegRead "Ветвь реестра", "Параметр" можно только проверить наличие или отсутствие Параметра. Автор вопроса: Александр Ответ ожидается по этому адресу Есть фрагмент текста Set OutlookObject=CreateObject("Outlook.Application") Set OutMail=OutlookObject.CreateItem(0) OutMail.To="Адрес получателя" OutMail.From="Адрес отправителя" OutMail.Subject="Тема сообщения" OutMail.Body="Тело сообщения" Но при этом строка OutMail.From="Адрес отправителя" просто не работает, подскажите почему и как добиться реяультата. Автор вопроса: shadow Ответ ожидается по этому адресу можно ли в бейсике делать драйвера? Автор вопроса: shadow Ответ ожидается по этому адресу в дельфах и билдере(слышал краем уха - сам до них еще не дошел) есть такая штука VCM - типа набор классов - набор контролов, которые сделал какойто добрый дяденька и предоставил во всеобщее пользование. Нет ли чего подобного для бейсика (где скачать?), очень не охота таскать с прогой всякие осх'ы, а стандартных контролов явно недостаточно. Автор вопроса: Владимир Ответ ожидается по этому адресу Как в VB 5.0 можно подключить внешний файл (а не реестр) для хранения долговременных изменяемых данных? Автор вопроса: CRUISER Ответ ожидается по этому адресу Как приаттачить файл с помощью VB к OUTLOOK EXPRESS (не ms outlook)!! Открываю оутлук по нажатию кнопки с кодом: Shell "start mailto:" & txtMail.Text & "?Subject=" & txtTheme.Text & "&BODY=" & txtBody.Text Создается сообщение с темой, надписью в теле, с адресами кому и откого (по умолчанию). А как файл прилепить, например c:\vasya\xxx.rar ? Возможно нужны API функции, но я видел только их в работе с MS Outlook'ом... а мне обязательно outlook Ответы: Вопрос: На форме имеется картинка PictureBox-большой во весь экран, а на этой картинке находятся другие (маленького раямера) PictureBox, Label. На экране монитора видно PictureBox-большой а, поверх PictureBox-маленькие и Label. При переходе на принтер PictureBox-маленькие и Label не печатаетcz поверх основной картинки. Как исправить положение? Ответ: Автор ответа: Kvark Hi, a ti poprobui tipa picturebolsoi.ZOorder = 0, a picturemaaalenkij.ZOorder = 1, eto tipa odin ctobi vniz usel a drugoi tipa na perednij plan, takze prover u tebia maaalenkije kartinki i laibli vstavleni na formu ili v bolsoi picture? :) Nu kopirujus malenkij videliajes bolsoi i paste, dolzno rabotat'.... :) Вопрос: На форме имеется картинка PictureBox-большой во весь экран, а на этой картинке находятся другие (маленького раямера) PictureBox, Label. На экране монитора видно PictureBox-большой а, поверх PictureBox-маленькие и Label. При переходе на принтер PictureBox-маленькие и Label не печатаетcz поверх основной картинки. Как исправить положение? Ответ: Автор ответа: Nechaev Sergey Похоже, Вы выводите на печать только одну картинку (Printer.PaintPicture Picture1.Picture). Чтобы при этом печатались и картинки поверх, надо сделать большую картинку их родительским элементом (выделить всю мелочь, вырезать, выделить PictureBox, вставить). Тогда должны печататься (хотя точно не знаю :-)). Если нет, печатай всю форму. Вопрос: Подскажите, кто знает, как можно на VB вывести звук в телефонную линию через модем, например какой-нибудь wav. Модем не голосовой, USB. Ответ: Автор ответа: Nechaev Sergey Если неголосовой, то никак. Вопрос: У меня несколько вопросов :) 1)Kak проиграть MP3 фаил из файла рксурсов? 2)Можно ли в VB6 создать фаил с разрешением VXD, если да то как? 3)У кого-нибудь есть конвектатор из WAV в MID или из MP3 в MID, если есть, то скинте этот фаил на e-mail(если он не больше 2MB)? 4)Как можно дописать пару строк в фаил Msdos.sys из VB? :) Ответ: Автор ответа: Nechaev Sergey 1) Достаешь свой МР3 из ресурсов и пишешь на диск, запускаешь через АПИ, потом сносишь. 3) По-моему конвертеров wav=>mp3 не существует. 4) Открыть файл для Append (open "C:\msdos.sys" for append as #FF). Дописать строки методом Print. Вопрос: Как сохранить List-ы ия 9 Listbox-ов в один файл (например в Aaa.zzz) и яатем ия этого же файла их яагруяить в те же Listbox-ы? Ответ: Автор ответа: Kvark Hi, elementarno Vatson! :) otkrivaesh fail na zapis' skazem Aaa.zzz (nadejus kak eto sdelat znaesh? :)) dalee krutis cikl (zelatelno ctobi listboksi bili tipa masiva, nu skazem MyListbox.Index(0)-MyListbox.Index(8) togda for n = 0 to 8 i v tele cikla pises v fail (tekstovij mozesh esli ne mudrit') tipa: ... Print #1, "MyListbox Nr. " & n For m = 0 to MyListBox.ItemCount Print #1, MyListbox.Item(m).Text Next m ... nu a scitivanie naoborot stavis fail na scitivanie i input additem i t.p. v tom ze cikle. esli ne hoces indeksirovat togda ruchkami kazdomu boksu po svojemu kusku koda :) Вопрос: Как сохранить List-ы ия 9 Listbox-ов в один файл (например в Aaa.zzz) и яатем ия этого же файла их яагруяить в те же Listbox-ы? Ответ: Автор ответа: Nechaev Sergey Пишем один комбо, потом добавляем разделитель из непечатных символов, пишем следующий. При чтении и заполнении комбо, читаем файл построчно, если натыкаемся на строку-разделитель, начинаем заполнять следующий элемент. Вопрос: Как "прописать" программу в автозагрузку, а затем удалить её( нужно запустить программу один раз при запуске)? Ответ: Автор ответа: Nechaev Sergey Пропишись в раздел RunOnce, виднда сама удалит запись после запуска. Вопрос: Компиляцию проекта делал прогр. Packege_&_Deployment_Wizard. При инсталяции выдаются ошибки. 1. Section: Setyp 1 Files @ name.exe/ $(ProgramFile) ...и т.д. 2. Section: Bootstrap Files @ VB6STKIT.DLL. $(WinSysPathSysFile) ...и т.д. Что делать как этого иябежать. Ответ: Автор ответа: Шевченко Александр 1.C помощью Microsoft Visual Basic откроем проект [Program Files]\Microsoft Visual Studio\VB98\Wizards\PDWizard\Setup1\Setup1.vbp 2.Откроем для редактирования модуль basSetup1 (файл setup1.bas) 3.Внесем изменения в функцию ParseDateTime() Оригинальная функция ParseDateTime() имеет вид: Function ParseDateTime(ByVal strDateTime As String) As Date Dim Var As Variant Var = strDateTime If 0 = VariantChangeTypeEx(VarPtr(Var), VarPtr(Var), &H409, 0, vbDate) Then ParseDateTime = Var Else 'Raise same error as CDate Err.Raise 13 End If End Function Функция ParseDateTime() производит перевод даты из строки в тип Date посредством вызова функции API VariantChangeTypeEx(). В данном случае, VariantChangeTypeEx делает попытку привести Variant-переменную к типу Date без учета установок в Regional Settings, и, соответственно, требует жесткого соблюдения формата записи даты в файле setup.lst ("mm/dd/yy" или "mm/dd/yyyy"). Поскольку P&D Wizard не придерживается этого правила, функция VariantChangeTypeEx() не всегда отрабатывает успешно. Используем для преобразования строки в дату функцию СDate. Эта функция работает более гибко и позволяет использовать в качестве аргумента строку с различными видами разделителей (точка, запятая, '/'). Приведем функцию ParseDateTime() к виду: Function ParseDateTime(ByVal strDateTime As String) As Date ParseDateTime=CDate(strDateTime) End Function 4.Скомпилируем проект (File\Make Setup1.exe…) для создания нового модуля setup1.exe. 5.Перенесем новый setup1.exe папку "...\Wizards\PDWizard\" Вопрос: Как создать ярлык на рабочем столе? В 74 выпуске был пример кода, но у меня он не нработает. VB пишет: Ошибка во время выполнения программы '424': Требуемый объект а потом показывает на строку: Set WSHShell = WScript.CreateObject("WScript.Shell") Ответ: Автор ответа: SLTK Dim WSHShell Set WSHShell = CreateObject("WScript.Shell") Dim MyShortcut, MyDesktop, DesktopPath ' Читаем путь к Рабочему столу DesktopPath = WSHShell.SpecialFolders("Desktop") ' Создаем ярлык на Рабочем столе Set MyShortcut = WSHShell.CreateShortcut(DesktopPath & _ "\Ярлык.lnk") ' Задаем свойства объекта-ярлыка и сохраняем их MyShortcut.TargetPath = WSHShell.ExpandEnvironmentStrings _ ("%windir%\notepad.exe") MyShortcut.WorkingDirectory = WSHShell.ExpandEnvironmentStrings _ ("%windir%") MyShortcut.WindowStyle = 4 MyShortcut.IconLocation = WSHShell.ExpandEnvironmentStrings _ ("%windir%\notepad.exe, 0") MyShortcut.Save Можете заполнить эту форму, либо отослать вопрос СЮДА Форма для добавления нового вопроса в этот раздел. Информация отсылается по E-mail владельцу сайта. |
|||||||||||||||
Выпуск подготовили: |
Сурменок Павел |