Эта книга была задумана как одна из первых книг о .NET, которая ознакомит читателя с основными идеями новой архитектуры и подготовит его к знакомству с более детальной литературой, например документацией Microsoft и ее толкованиями, которая неизбежно появится на рынке. Она поможет вам взглянуть на эту технологию с позиций ваших собственных рабочих планов и быстро освоить те концепции, которые покажутся необычными для большинства прогр...
Автор(ы): Дан Эпплман, Издательство: Питер, 2002 г.
Эта книга является вводным курсом по
изучению языка программирования Visual Basic .NET.
Даны основные принципы объектно-ориентированного
программирования в контексте языка VB .NET,
поскольку без хорошей подготовки в этой
области невозможно в полной мере
пользоваться всеми преимуществами VB .NET.
Изложены азы всех аспектов языка, которыми
должен владеть любой профессиональный
разработчик VB .NET
Автор(ы): Г. Корнелл, Дж. Моррисон, Издательство: Питер, 2002 г.
Основная задача книги - быстро ознакомить
разработчиков Visual Basic с изменениями в .NET
Framework. Программисты, использующие Java, C++, Delphi
или другие инструменты разработки
приложений и интересующиеся Visual Basic или
технологией .NET Framework, также найдут эту книгу
полезной. Хотя книга посвящена Visual Basic.NET, ее
основная цель - продемонстрировать
взаимодействие Visual Basic и ...
Автор(ы): Кит Франклин, Издательство: Вильямс, 2002 г.
Private Declare Function StretchBlt Lib "gdi32" (ByVal
hdc As Long, ByVal x As Long, ByVal y As Long, ByVal Nwidth As Long, ByVal Nheight As
Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal nSrcWidth As
Long, ByVal nSrcHeight As Long, ByVal dwRop As Long) As Long
Const SRCCOPY = &HCC0020
Private Sub ImgResize(src As PictureBox, TmpPic As PictureBox, mWidth As Long, mHeight As
Long)
src.AutoRedraw = False
TmpPic.AutoRedraw = True
TmpPic.Height = mHeight 'установка размеров невидимого
picturebox
TmpPic.Width = mWidth
StretchBlt TmpPic.hdc, 0, 0, mWidth, mHeight, src.hdc, 0, 0, src.Width, src.Height,
SRCCOPY
'сохранить временной файл на диске
SavePicture TmpPic.Image, App.Path + "\tempimg.bmp"
'перезагрузить оригинальный picturebox
src.AutoSize = True
src.Picture = LoadPicture(App.Path + "\tempimg.bmp")
'удалить временной файл
Kill App.Path + "\tempimg.bmp"
'очистить невидимый picturebox
TmpPic.Picture = LoadPicture()
'пример для вызова функции
'ImgResize Picture1, Picture2, Picture1.Width / 2, Picture1.Height / 2
End Sub
Private Sub Command1_Click()
ImgResize Picture1, Picture2, Picture1.Width / 2, Picture1.Height / 2
End Sub
Private Sub Form_Load()
Picture2.Visible = False
End Sub
Интересный пример, правда не до конца понятый мною.
Расположите на форме элемент PictureBox и элемент CommandButton. Запустите проект, нажмите на кнопку. Затем откройте приложение Paint и нажмите сочетание клавиш Ctrl + V.
Option Explicit
Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
Private Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal X As
Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long,
ByVal XSrc As Long, ByVal YSrc As Long, ByVal dwRop As Long) As Long
Private Const SRCCOPY = &HCC0020
Private Declare Function CreateCompatibleDC Lib "gdi32" (ByVal hdc As Long) As
Long
Private Declare Function CreateCompatibleBitmap Lib "gdi32" (ByVal hdc As Long,
ByVal nWidth As Long, ByVal nHeight As Long) As Long
Private Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal
hObject As Long) As Long
Private Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As
Long
Private Declare Function OpenClipboard Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function CloseClipboard Lib "user32" () As Long
Private Declare Function SetClipboardData Lib "user32" (ByVal wFormat As Long,
ByVal hMem As Long) As Long
Private Declare Function GetClipboardFormatName Lib "user32" Alias
"GetClipboardFormatNameA" (ByVal wFormat As Long, ByVal lpString As String,
ByVal nMaxCount As Long) As Long
Private Declare Function EmptyClipboard Lib "user32" () As Long
Private Declare Function CountClipboardFormats Lib "user32" () As Long
Private Declare Function EnumClipboardFormats Lib "user32" (ByVal wFormat As
Long) As Long
Private Declare Function IsClipboardFormatAvailable Lib "user32" (ByVal wFormat
As Long) As Long
Private Declare Function RegisterClipboardFormat Lib "user32" Alias
"RegisterClipboardFormatA" (ByVal lpString As String) As Long
Private Declare Function GetClipboardData Lib "user32" (ByVal wFormat As Long)
As Long
Private Declare Function GlobalLock Lib "kernel32" (ByVal hMem As Long) As Long
Private Declare Function GlobalUnlock Lib "kernel32" (ByVal hMem As Long) As
Long
Private Declare Function GlobalSize Lib "kernel32" (ByVal hMem As Long) As Long
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory"
(lpvDest As Any, lpvSource As Any, ByVal cbCopy As Long)
Public Function CopyEntirePictureToClipboard(ByRef objFrom As Object) As Boolean
Dim lhDC As Long
Dim lhBmp As Long
Dim lhBmpOld As Long
lhDC = CreateCompatibleDC(objFrom.hdc)
If (lhDC <> 0) Then
lhBmp = CreateCompatibleBitmap(objFrom.hdc, objFrom.ScaleWidth \ Screen.TwipsPerPixelX,
objFrom.ScaleHeight \ Screen.TwipsPerPixelY)
If (lhBmp <> 0) Then
lhBmpOld = SelectObject(lhDC, lhBmp)
BitBlt lhDC, 0, 0, objFrom.ScaleWidth \ Screen.TwipsPerPixelX, objFrom.ScaleHeight \
Screen.TwipsPerPixelY, objFrom.hdc, 0, 0, SRCCOPY
SelectObject lhDC, lhBmpOld
EmptyClipboard
OpenClipboard 0
SetClipboardData CF_BITMAP, lhBmp
CloseClipboard
End If
DeleteObject lhDC
CopyEntirePictureToClipboard = True
Else
CopyEntirePictureToClipboard = False
End If
End Function
Private Sub Command1_Click()
Call CopyEntirePictureToClipboard(Picture1)
End Sub
Данный пример позволяет узнать такие параметры файла рисунка в формате GIF или JPG как: тип картинки, размер по ширине и размер по высоте
Private Type ThePicInfo
Type As String
Width As Long
Height As Long
End Type
Private Function CheckPicSpecs(TheFile) As ThePicInfo
Dim TheContent, TheImageInfo As ThePicInfo, TheVar, TheFreeFile
TheFreeFile = FreeFile
Open TheFile For Binary As TheFreeFile
TheContent = Input(10, TheFreeFile)
Close TheFreeFile
If Mid(TheContent, 7, 4) = "JFIF" Then
TheImageInfo.Type = "JPG"
Open TheFile For Binary As TheFreeFile
TheContent = Input(167, TheFreeFile)
Close TheFreeFile
TheImageInfo.Height = Asc(Mid(TheContent, 165, 1)) + 256 * Asc(Mid(TheContent, 164, 1))
TheImageInfo.Width = Asc(Mid(TheContent, 167, 1)) + 256 * Asc(Mid(TheContent, 166, 1))
End If
If Mid(TheContent, 1, 3) = "GIF" Then
TheImageInfo.Type = "GIF"
TheImageInfo.Width = Asc(Mid(TheContent, 7, 1)) + 256 * Asc(Mid(TheContent, 8, 1))
TheImageInfo.Height = Asc(Mid(TheContent, 9, 1)) + 256 * Asc(Mid(TheContent, 10, 1))
End If
CheckPicSpecs = TheImageInfo
End Function
Private Sub Command1_Click()
Dim a As ThePicInfo
'в качестве параметра функции CheckPicSpecs установите
путь к вашей картинке
a = CheckPicSpecs("D:\garbage\way2house.gif")
MsgBox a.Type
MsgBox a.Width
MsgBox a.Height
End Sub
CommonDialog: Выбор нескольких файлов для открытия
Некоторое время назад я натолкнулся на одном из сайтов на вопрос: "А как мне с помощью CommonDialog выбрать несколько файлов для открытия". Ответ кроется в устанавливаемом флажке cdlOFNAllowMultiselect. Подробности? Пожалуйста. Скопирова код, запустите программу на выполнение. Нажмите на кнопку, выберите несколько файлов, нажмите "Открыть". Вы получите строку, содержащую полный путь к отрываемой папке, а также разделенные пробелами список файлов для открытия. Вам останется только разделить полученную строку на отдельные элементы. Я могу это сделать, а Вы?
Private Sub ShowOpen()
On Error GoTo ErrorHandler
CommonDialog1.CancelError = True
CommonDialog1.Filter = "All Files (*.*)|*.*|Word Documents (*.doc )|*.doc |Text Files
(*.txt)|*.txt|"
CommonDialog1.FilterIndex = 3
CommonDialog1.InitDir = "D:\DOCUMENTS"
CommonDialog1.Flags = cdlOFNFileMustExist Or cdlOFNAllowMultiselect
CommonDialog1.Action = 1 'Или же CommonDialog1.ShowOpen
'***********
'Здесь распологается Ваш код (не забудьте, что
путь к выбранному файлу Вы считываете из
свойства FileName)
MsgBox CommonDialog1.FileName
'**********
Exit Sub
ErrorHandler:
If Err.Number = 32755 Then Exit Sub
End Sub
Private Sub Command1_Click()
Call ShowOpen
End Sub
Разместите на форме элемент ListBox. (В оригинале примера на форме был размещен элемент TreeView из библиотеки Microsoft Common Dialog Control 6.0. Можете разместить и его, только не забудьте снять комментарии, относящиеся к элементу TreeView).
Private Const GWL_style="(-16)"
Private Const WS_HSCROLL = &H100000
Private Const WS_VSCROLL = &H200000
Private Declare Function GetWindowLong Lib "user32" Alias
"GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Sub Command1_Click()
Dim wndStyle As Long
wndstyle="GetWindowLong(List1.hwnd," GWL_STYLE)
'wndstyle="GetWindowLong(TreeView1.hwnd," GWL_STYLE)
If (wndStyle And WS_HSCROLL) <> 0 Then
MsgBox "A horizontal scroll bar is visible."
Else
MsgBox "A horizontal scroll bar is NOT visible."
End If
If (wndStyle And WS_VSCROLL) <> 0 Then
MsgBox "A vertical scroll bar is visible."
Else
MsgBox "A vertical scroll bar is NOT visible."
End If
End Sub
Private Sub Command2_Click()
List1.Move 250, 900, 1000, 1000
'TreeView1.Move 250, 900, 1000, 1000
End Sub
BalloonMessage for Microsoft Agent реализует диалог программы с
пользователем, используя при этом технологию Microsoft Agent. OCX реализует три
типа диалоговых окон: InputBox, MsgBox и MsgLabels.
Мой вопрос связан с API. Заключается он в следующем. Мне нужно помещать в ListBox все запускаемые exe и com приложения в Windows 95. А так же все открываемые папки. И после клика в ListBox переходить к выполнению тои или иной задачи. К примеру у меня открыта папка Windows и работает exe файл Nootpade.exe они помещены в этот ListBox. Первая строка c:\windows вторая c:\windows\nootpade.exe (в ListBox). Пощелчки по 1 строке мы переходим к папке Windows а по второй переходим к nootpade.exe. Вообщем получить что то вроде панели задач (нижняя часть экрана) как Windows.
Так же нужно поместить обсалютно все работающие процессы в системе во второй ListBox и по щелчку нужно что бы задача снималась. То есть что вроде "Заверщение работы програм" как Windows по нажатию на Alt+Ctrl+Del.
МОЖЕТ кто нибудь знает где достать такой компонент или пример (только не очень сложный) а ещё лучше OCX.
1) Как сделать так, чтоб при попытке удаления определённой папки в программу поступал сигал.
2) Пишу программу запрашивающую пароль при попытке открыть папку. Как при получении правильного пароля открыть обычную Windows-кую папку
Как сделать чтото типо видео захвата?
А именно: У меня есть тюнер к которому подключена миникамера("скрытая").
Как перехватить видео сигнал и поместить его куданибудь(Пикчер, может контрол какой).
Но ето не самое главное: мне надо чтобы программа следила за изобр. и кодга ино изменялось происходило мной закодир. действие.
PC: К примеру камера смотрит в комнату(ниче не двигается) и вдруг появляется какойнить чел, и моя прога реагирует на ияменение и сообщяет мне.
Ето все для того, чтобы мне не слидить яа монитором, а смотреть только когда чтото происходит...
Может таймер подключить который сравнивает картинку и если она отличается от прежней, делается что-либо, может как по др...
Пожалуйста помогитееееее, или хотябы скажите вояможно ли это???
Если это поможет то тюнет - AverTV Studio
Вот такой вопрос: в текстбоксе есть определенный текст. Так вот что требуется: если первые 6 символов соответсвуют образцу (например If six number = "sobaka" Then) то будет происходить какое-то действие. Как это осуществить?
Мой проект (VB6) испольяует DAO 3.50, работал бея проблем (Win 95/98/2000). Появились машины с той же самой операционкой, не открывающие баяу данных при работе ия exe-шника. При работе в среде отладки все отлично. Тогда меняю DAO 3.50 на DAO 3.60. На этих машинах все отлично, но на части тех, где раньше проблем не было (не на всех!) баяа яагружаться перестала. Новую .dll я, естественно, нормально устанавливаю и регистрирую.
Да, проблема не из легких. Я тоже столкнулся с ней при установке своей программы на другую машину (испольяуя Setup Vizard VB5). Помогло, когда вручную удалил все *.dll драйвера DAO (они оказались, если судить по дате более поздние), затем снова установил Office. Иначе если переустанавливать Office, нерабочие драйвера оставались к сожалению, нетронутыми, т.к. похоже - это особенность Windows, при установке не трогать более свежие драйвера.
Думаю, проблема тут вояникает изза версий библиотек - на машине должен стоять неконфликтный набор. Теперь делаю установочный комплект дискет на той машине, где яаведомо янаю, что драйвера DAO самые древние. Если начинать устанавливать свою программу на машину с более свежими драйверами (рабочими), то они не затруться, а те, которых не хватает - добавятся. Или делать установочный комплект другими средствами, например InstallShield. При подготовке установочного комплекта, он берет драйвера не из системы Windows, как родной Setup Vizard VB5, а из своего каталога. Возможно я, конечно, ошибаюсь и есть более разумный способ.
Но факт остается фактом - конфликт библиотек в VB существует. Это ему большой минус.
Только что узнал, что vbnet имеет смысл только для серверных программ.
Это что ли, писать на нем не серверные проги (типа игр и т.п.) бесполезно???
Да и вообще как у него со скоростью, в сравнении вб6???7
Люди, кто-нибудь знает как сделать инсталляшку IE5.5 раямером 4-7м. все 70м таскать неохота изза простого юзания пары файликов типа mshtml.dll да shdocvw.dll. просто заменить их не канает - форты умирают :-)
Какие есть API-функции для работы с *.ini файлами (если можно, пример кода).
Ответы:
Вопрос:
Помагите с решением проблема такая. Есть функции как copy, cut, paste можно воспользаватся с помащю как Clipboard и как через WinApi
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long,_
LParam As Any) As Long
Какая разнится между ними разнится и какая из них боле эфектвна.
Подскажите, плз, как можно перетаскивать объект по форме мышкой (хорошо бы, что-бы было видно контур, как в нормальных приложениях) и как можно соединить два объекта на форме линией (опять же, с помощью крысы).
Попробуй через ole automation загрузить из своей программы текст в ворд, а потом сохрани его в нужном формате.
Вопрос:
Как сделать, чтобы программа запускалась как сервис в Win NT/2000/XP (Service NT)? Я смотрю, что на этот вопрос никто не знает ответа.
Ламеры задают вопросы наподобие "Как засунуть программу в Systray, там где часики", а продвинутые ламеры на них отвечают. Вопрос задаешь чуть посложней, так все кричат в один голос: "это на VB нельзя сделать". Что никто не может толком программировать на VB?
В общем я частично согласен, что на VB сервисы не пишутся. Но можно использовать ocx, написанные на с/с++ или создать сервис используя API. Может кто-то сталкивался с этим, или есть готовый пример?
Можно сделать как сервис, но для этого нужна одна .dll библиотечка! У меня где-то была, запустит твое веяние как сервис и в 95 и в ХР, давно я ее на доставал из кобуры - надо поискать. Пиши на личный - обсудим, если больше некому, иль присоединяйся к Сообчанинам.
Вопрос:
Мой проект (VB6) использует DAO 3.50, работал без проблем (Win 95/98/2000). Появились машины с той же самой операционкой, не открывающие базу данных при работе из exe-шника. При работе в среде отладки все отлично. Тогда меняю DAO 3.50 на DAO 3.60. На этих машинах все отлично, но на части тех, где раньше проблем не было (не на всех!) база загружаться перестала. Новую .dll я, естественно, нормально устанавливаю и регистрирую.
Спасибо за то, что Вы откликнулись на мою просьбу помочь. Речь идет о проблемах DAO 3.50/3.60. Именно в Reference я меняю ссылку на ту или иную библиотеку, и тем не менее на части машин Dao360.dll нормально работать не желает - при первом же обращении возвращает "не могу создать объект".
Еще раз повторяю, что все библиотеки я нормальным образом инсталлирую и регистрирую.
Может быть, там нужно переставить последнюю версию MSDAC.
Вопрос:
Мой вопрос связан с API. Заключается он в следующем. Мне нужно помещать в ListBox все запускаемые exe и com приложения в Windows 95. А так же все открываемые папки. И после клика в ListBox переходить к выполнению тои или иной задачи. К примеру у меня открыта папка Windows и работает exe файл Nootpade.exe они помещены в этот ListBox. Первая строка c:\windows вторая c:\windows\nootpade.exe (в ListBox). Пощелчки по 1 строке мы переходим к папке Windows а по второй переходим к nootpade.exe. Вообщем получить что то вроде панели задач (нижняя часть экрана) как Windows.
Так же нужно поместить обсалютно все работающие процессы в системе во второй ListBox и по щелчку нужно что бы задача снималась. То есть что вроде "Заверщение работы програм" как Windows по нажатию на Alt+Ctrl+Del.
МОЖЕТ кто нибудь знает где достать такой компонент или пример (только не очень сложный) а ещё лучше OCX.
Не понял, что именно имеется в виду.
Может имеется в виду конструкция
If ...условие... Then
...делать...
End if
Но это не "на лету".
Если присать на VBA, то можно например загнуть так:
Sub test()
Modules.Item("testModule").InsertText ("Public Sub test1()")
Modules.Item("testModule").InsertText (" msgBox ""Hello World!!!""")
Modules.Item("testModule").InsertText ("End sub")
Run "test1"
End Sub
В VB6 такого конечно нельзя, зато какой простор для мысли!!!!
Можете заполнить эту форму, либо отослать вопрос СЮДА
Форма для добавления нового вопроса в этот раздел. Информация отсылается по E-mail владельцу сайта.