Новый выпуск...
		Читайте!
		
		
		Книги
    
      |   |  | 
        Переход на VB .NET. Стратегии, концепции, код (цена ~ 158 руб.) 
        Эта книга была задумана как одна из первых книг о.NET, которая ознакомит читателя с основными идеями новой архитектуры и подготовит его к знакомству с более детальной литературой, например документацией Microsoft и ее толкованиями, которая неизбежно появится на рынке. Она поможет вам взглянуть на эту технологию с позиций ваших собственных рабочих планов и быстро освоить те концепции, которые покажутся необычными для большинства прогр... | 
    
      | Автор(ы): Дан Эпплман, Издательство: Питер, 2002 г. 
 
 
 | 
    
      |   |  | 
        Программирование на VB.NET. Учебный курс (цена ~ 119 руб.) 
        Эта книга является вводным курсом по
изучению языка программирования Visual Basic .NET.
Даны основные принципы объектно-ориентированного
программирования в контексте языка VB .NET,
поскольку без хорошей подготовки в этой
области невозможно в полной мере
пользоваться всеми преимуществами VB .NET.Изложены азы всех аспектов языка, которыми
должен владеть любой профессиональный
разработчик VB .NET
 | 
    
      | Автор(ы): Г. Корнелл, Дж. Моррисон, Издательство: Питер, 2002 г. 
 
 
 | 
    
      |   |  | 
        VB.NET для разработчиков (цена ~ 125 руб.) 
        Основная задача книги - быстро ознакомить
разработчиков Visual Basic с изменениями в  .NET
Framework. Программисты, использующие Java, C++, Delphi
или другие инструменты разработки
приложений и интересующиеся Visual Basic или
технологией  .NET Framework, также найдут эту книгу
полезной. Хотя книга посвящена  Visual Basic.NET, ее
основная цель - продемонстрировать 
взаимодействие Visual Basic и  ... | 
    
      | Автор(ы): Кит Франклин, Издательство: Вильямс, 2002 г. 
 
 
 | 
Остальные книги о VB можно найти 
здесь.
		
		
наверх
		
		
		Как воспроизвести звук и видео 
'Вариант 1
Private Declare Function mciExecute Lib "winmm.dll" (ByVal lpstrCommand
As String) As Long
Private Sub Form_Click()
Dim res
res = mciExecute("Play C:\Путь_до_файла")
End Sub
'Вообще, для того, что бы воспроизвести аудио или
видео файл, можно воспользоваться элементом
управления Microsoft Multimedia Control, но при этом вместе с
вашим приложением придется таскать файл MCI32.OCX, а
это лишних 193 кб, приведенный же выше код гораздо
меньше. Прим. все вышесказанное касается только
тех случаев, когда вам необходимо просто
проиграть какой-то звуковой файл из программы.
'Вариант 2
Private Declare Function PlaySound Lib "winmm.dll" Alias "PlaySoundA"
(ByVal lpszName As String, ByVal hModule As Long, ByVal dwFlags As Long) As Long
Private Sub Form_Load()
Dim x As Long
x = PlaySound("C:\Путь_до_файла", 0, &H1 Or &H10)
End Sub
'Вариант 3
Private Declare Function sndPlaySound Lib "winmm.dll" Alias
"sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long
Private Sub Form_Load()
Dim x As Long
x = sndPlaySound("C:\Путь_до_файла", &H1 Or &H10)
End Sub
		
		
		наверх
		
		
		Получить информацию из тэга MP3-файла 
Private Sub Form_Load()
        Dim fNum As Integer
        Dim sTagIdent As String * 3
        Dim sTitle As String * 30
        Dim sArtist As String * 30
        Dim sAlbum As String * 30
        Dim sYear As String * 4
        Dim sComment As String * 30
        fNum = FreeFile
        'Замените ярлык 'c:\MySong.mp3' любым вашим файлом.
        Open "c:\MySong.mp3" For Binary As fNum
        Seek #fNum, LOF(fNum) - 127
        Get #fNum, , sTagIdent
        If sTagIdent = "TAG" Then
        Get #fNum, , sTitle
        Get #fNum, , sArtist
        Get #fNum, , sAlbum
        Get #fNum, , sYear
        Get #fNum, , sComment
        End If
        Close #fNum
        MsgBox sTitle & "," & sArtist & "," & sAlbum &
        "," & sYear & "," & sComment
        End Sub
		
		
		наверх
				
		
		Как изменить разрешение экрана 
Вызов функции: ChangeResolution 640, 480 (В данном
        случае меняется разрешение экрана на 640*480)
        Вы должны понимать, что ваш монитор должен
        поддерживать задаваемое разрешение
Private Declare Function ChangeDisplaySettings Lib
        "user32" Alias "ChangeDisplaySettingsA" (lpDevMode As Any, ByVal
        dwflags As Long) As Long
        Private Declare Function EnumDisplaySettings Lib "user32" Alias
        "EnumDisplaySettingsA" (ByVal lpszDeviceName As Long, ByVal iModeNum As Long,
        lpDevMode As Any) As Boolean
        Const DM_PELSWIDTH = &H80000
        Const DM_PELSHEIGHT = &H100000
        Const CCFORMNAME = 32
        Const CCDEVICENAME = 32
        Private Type DEVMODE
        dmDeviceName As String * CCDEVICENAME
        dmSpecVersion As Integer
        dmDriverVersion As Integer
        dmSize As Integer
        dmDriverExtra As Integer
        dmFields As Long
        dmOrientation As Integer
        dmPaperSize As Integer
        dmPaperLength As Integer
        dmPaperWidth As Integer
        dmScale As Integer
        dmCopies As Integer
        dmDefaultSource As Integer
        dmPrintQuality As Integer
        dmColor As Integer
        dmDuplex As Integer
        dmYResolution As Integer
        dmTTOption As Integer
        dmCollate As Integer
        dmFormName As String * CCFORMNAME
        dmUnusedPadding As Integer
        dmBitsPerPel As Integer
        dmPelsWidth As Long
        dmPelsHeight As Long
        dmDisplayFlags As Long
        dmDisplayFrequency As Long
        End Type
        Public Sub ChangeResolution(iWidth As Single, iHeight As Single)
        Dim DevM As DEVMODE
        Dim a As Boolean
        Dim i As Long
        Dim b As Long
        i = 0
        Do
        a = EnumDisplaySettings(0&, i&, DevM)
        i = i + 1
        Loop Until (a = False)
        DevM.dmFields = DM_PELSWIDTH Or DM_PELSHEIGHT
        DevM.dmPelsWidth = iWidth
        DevM.dmPelsHeight = iHeight
        b = ChangeDisplaySettings(DevM, 0)
        End Sub
        
        Private Sub Command1_Click()
        ChangeResolution 640, 480
        End Sub
        
		
		
		наверх
		
		
		Функции для работы с джойстиком 
В частности, этот пример покажет, есть ли у вас
        джойстик (1) или нет (0). Расположите на форме
        элемент CommandButton.
Const JOY_BUTTON1 = &H1
        Const JOY_BUTTON2 = &H2
        Const JOY_BUTTON3 = &H4
        Const JOY_BUTTON4 = &H8
        
        Private Type JOYINFO
        X As Long
        Y As Long
        Z As Long
        Buttons As Long
        End Type
        
        Private Const JOYERR_BASE = 160
        Private Const JOYERR_NOERROR = (0)
        Private Const JOYERR_NOCANDO = (JOYERR_BASE + 6)
        Private Const JOYERR_PARMS = (JOYERR_BASE + 5)
        Private Const JOYERR_UNPLUGGED = (JOYERR_BASE + 7)
        Private Const MAXPNAMELEN = 32
        
        Private Type JOYCAPS
        wMid As Integer
        wPid As Integer
        szPname As String * MAXPNAMELEN
        wXmin As Long
        wXmax As Long
        wYmin As Long
        wYmax As Long
        wZmin As Long
        wZmax As Long
        wNumButtons As Long
        wPeriodMin As Long
        wPeriodMax As Long
        End Type
        
        Private Declare Function joyGetDevCaps Lib "winmm.dll" Alias
        "joyGetDevCapsA" (ByVal id As Long, lpCaps As JOYCAPS, ByVal uSize As Long) As
        Long
        Private Declare Function joyGetNumDevs Lib "winmm.dll" () As Long
        Private Declare Function joyGetPos Lib "winmm.dll" (ByVal uJoyID As Long, pji As
        JOYINFO) As Long
        
        Private Function GetJoyMin(ByVal joy As Integer, ji As JOYINFO) As Boolean
        Dim jc As JOYCAPS
        If joyGetDevCaps(joy, jc, Len(jc)) <> JOYERR_NOERROR Then
        GetJoyMin = False
        Else
        ji.X = jc.wXmin
        ji.Y = jc.wYmin
        ji.Z = jc.wZmin
        ji.Buttons = jc.wNumButtons
        GetJoyMin = True
        End If
        End Function
        
        Private Function GetJoyMax(ByVal joy As Integer, ji As JOYINFO) As Boolean
        Dim jc As JOYCAPS
        If joyGetDevCaps(joy, jc, Len(jc)) <> JOYERR_NOERROR Then
        GetJoyMax = False
        Else
        ji.X = jc.wXmax
        ji.Y = jc.wYmax
        ji.Z = jc.wZmax
        ji.Buttons = jc.wNumButtons
        GetJoyMax = True
        End If
        End Function
        
        Private Function GetJoystick(ByVal joy As Integer, ji As JOYINFO) As Boolean
        If joyGetPos(joy, ji) <> JOYERR_NOERROR Then
        GetJoystick = False
        Else
        GetJoystick = True
        End If
        End Function
        
        ' If IsConnected is False then it returns the number of
        ' joysticks the driver supports. (But may not be connected)
        ' If IsConnected is True the it returns the number of
        ' joysticks present and connected.
        ' IsConnected is true by default.
        Public Function IsJoyPresent(Optional IsConnected As Variant) As Long
        Dim ic As Boolean
        Dim i As Long
        Dim j As Long
        Dim ret As Long
        Dim ji As JOYINFO
        ic = IIf(IsMissing(IsConnected), True, CBool(IsConnected))
        i = joyGetNumDevs
        If ic Then
        j = 0
        Do While i > 0
        i = i - 1 'Joysticks id's are 0 and 1
        If joyGetPos(i, ji) = JOYERR_NOERROR Then
        j = j + 1
        End If
        Loop
        IsJoyPresent = j
        Else
        IsJoyPresent = i
        End If
        End Function
        
        Private Sub Command1_Click()
        MsgBox IsJoyPresent
        End Sub
		
		
		наверх
		
		
		Пример создания базы данных кодом 
Для начала вам необходимо подключить (меню Project->References) Microsoft DAO 2.5/3.51 Compatibility Library
Вставьте следующий код, запустите проект. Если вы еще не сохранили проект, то база создаться в папке, куда вы проинсталировали VB (по умолчанию - C:\Program Files\Microsoft Visual Studio\VB98).
Private Sub Form_Load()
        Dim dbFile As String
        ' Проверяет наличие файла, имеющего имя, которое
        будет присвоено новой базе данных. Если есть
        такая база, то новая база не создается, если нет
        то вызывается функция и база создается.
        If Dir(App.Path & "\kadrs.Mdb") <> "" Then
        dbFile = App.Path & "\kadrs.Mdb"
        Else:
        dbFile = dbgreit()
        End If
        End Sub
        Public Function dbgreit()
        Dim dbkadr As Database, NewWs As Workspace 'Описание БД и рабочей
        области
        Dim dbOpts As Long, dbName As String, tbWorker As TableDef
        Dim tbFam As TableDef, Rel1 As Relation ' Описание таблицы и
        отношения
        Dim Ind1, Ind2, Ind3, Ind4, Ind5 As Index'Описание индексов
        Dim Fin, Fr, Fin2, Fin3, Fr2, Fin4, Fr3, Fin5, Fr4 As Field
        Dim Fin6, Fr5, Fin7, Fr6, Fin8, Fr7, Frel As Field
        Dim Ind9 As Index, Fs1, Fs2 As Field
        ReDim F(1 To 54) As Field ' Описание полей табл. Worker
        ReDim P(1 To 10) As Field ' Описание полей табл. Family
        ' Строковая переменная, указывающая на файл БД
        находящийся по тому же пути, что и файл программы.
        dbName = App.Path & "\kadrs.Mdb"
        Set NewWs = DBEngine.Workspaces(0)' Создание рабочей области
        dbOpts = dbVersion35 + dnEncrypt ' Параметры БД - версия Jet-машины
        3,5 и кодирование.
        Set dbkadr = NewWs.CreateDatabase(dbName, dbLangCyrillic, dbOpts) ' Создание
        рускоязычной БД 
        ' добавление таблицы с именем Worker в БД
        Set tbWorker = dbkadr.CreateTableDef("Worker")
        ' добавление таблицы с именем Family в БД
        Set tbFam = dbkadr.CreateTableDef("Family")
        ' Создание и описание счетчика с именем Код (табл.
        Worker)
        Set Fin = tbWorker.CreateField("Код", dbLong) ' Создание поля в
        таблице с именем Код
        Set Frel = tbWorker.CreateField("Number", dbLong) ' Создаем в
        таблице поле связи
        Fin.Attributes = dbAutoIncrField ' Атрибуты поля - автоинкремент
        tbWorker.Fields.Append Fin ' Добавляем поля в таблицу
        tbWorker.Fields.Append Frel
        ' Первичный ключ таблицы Worker (индекс по полю Number)
        Set Ind1 = tbWorker.CreateIndex("Number")
        Ind1.Primary = True ' Устанавливаем свойство ключа -
        первичный ключ
        Set Frel = Ind1.CreateField("Number", dbLong) ' Создаем
        индексное поле аналогичное полю связи из таблицы
        Ind1.Fields.Append Frel ' Добавляем его к индексу
        tbWorker.Indexes.Append Ind1 ' Добавляем индекс к таблице
        
        ' Описание остальных полей (табл. Worker)
        Set F(1) = tbWorker.CreateField("Фамилия", dbText, 50) ' Создание
        текстового поля размером 50 символов
        Set F(2) = tbWorker.CreateField("Имя", dbText, 50)
        Set F(3) = tbWorker.CreateField("Отчество", dbText, 50)
        Set F(4) = tbWorker.CreateField("Дата рождения", dbDate) '
        Создание поля даты
        Set F(5) = tbWorker.CreateField("Национальность", dbText, 50)
        Set F(6) = tbWorker.CreateField("Должность", dbText, 150)
        Set F(7) = tbWorker.CreateField("СемПоложение", dbText, 20)
        Set F(8) = tbWorker.CreateField("Телефон", dbText, 15)
        Set F(9) = tbWorker.CreateField("ДатаЗап", dbDate)
        Set F(10) = tbWorker.CreateField("Образование", dbText, 90)
        Set F(11) = tbWorker.CreateField("Телефон2", dbText, 15)
        Set F(12) = tbWorker.CreateField("Профессия", dbText, 200)
        Set F(13) = tbWorker.CreateField("Серия", dbText, 10)
        Set F(14) = tbWorker.CreateField("Номер", dbText, 10)
        Set F(15) = tbWorker.CreateField("Кем выдан", dbText, 200)
        Set F(16) = tbWorker.CreateField("ДатаВыдачи", dbDate)
        Set F(17) = tbWorker.CreateField("Место рождения", dbText, 250)
        Set F(18) = tbWorker.CreateField("Индекс", dbText, 10)
        Set F(19) = tbWorker.CreateField("Улица", dbText, 100)
        Set F(20) = tbWorker.CreateField("Город", dbText, 100)
        Set F(21) = tbWorker.CreateField("Область", dbText, 100)
        Set F(22) = tbWorker.CreateField("Район", dbText, 100)
        Set F(23) = tbWorker.CreateField("УчЗав", dbText, 200)
        Set F(24) = tbWorker.CreateField("ДатаОк1", dbDate)
        Set F(25) = tbWorker.CreateField("УчЗав2", dbText, 200)
        Set F(26) = tbWorker.CreateField("ДатаОк2", dbDate)
        Set F(27) = tbWorker.CreateField("СпецПоД", dbText, 200)
        Set F(28) = tbWorker.CreateField("Квалификация", dbText, 200)
        Set F(29) = tbWorker.CreateField("НомД", dbText, 50)
        Set F(30) = tbWorker.CreateField("УчЗван", dbText, 200)
        Set F(31) = tbWorker.CreateField("ОКОДТ", dbText, 10)
        Set F(32) = tbWorker.CreateField("ОКСО", dbText, 10)
        Set F(33) = tbWorker.CreateField("ГрУч", dbText, 30)
        Set F(34) = tbWorker.CreateField("КатУч", dbText, 30)
        Set F(35) = tbWorker.CreateField("Состав", dbText, 150)
        Set F(36) = tbWorker.CreateField("Звание", dbText, 200)
        Set F(37) = tbWorker.CreateField("ВУС", dbText, 50)
        Set F(38) = tbWorker.CreateField("Годность", dbText, 100)
        Set F(39) = tbWorker.CreateField("Военкомат", dbText, 200)
        Set F(40) = tbWorker.CreateField("СпецУч", dbText, 50)
        Set F(41) = tbWorker.CreateField("НомСтрах", dbText, 40)
        Set F(42) = tbWorker.CreateField("Date1", dbDate)
        Set F(43) = tbWorker.CreateField("Date2", dbDate)
        Set F(44) = tbWorker.CreateField("Date3", dbDate)
        Set F(45) = tbWorker.CreateField("Date4", dbDate)
        Set F(46) = tbWorker.CreateField("Date5", dbDate)
        Set F(47) = tbWorker.CreateField("Date6", dbDate)
        Set F(48) = tbWorker.CreateField("Date7", dbDate)
        Set F(49) = tbWorker.CreateField("Date8", dbDate)
        Set F(50) = tbWorker.CreateField("Date9", dbDate)
        Set F(51) = tbWorker.CreateField("Date10", dbDate)
        Set F(52) = tbWorker.CreateField("Причина", dbText, 200)
        Set F(53) = tbWorker.CreateField("Date11", dbDate)
        Set F(54) = tbWorker.CreateField("Стат", dbText, 200)
        
        ' Создание индекса для сортировки по фамилиям и
        именам (по алфавиту)
        Set Ind9 = tbWorker.CreateIndex("Name") ' Создание индекса с
        именем Name
        Ind9.Unique = False ' Индекс не уникальный - значения могут
        повторяться
        Set Fs1 = Ind9.CreateField("Фамилия")
        Set Fs2 = Ind9.CreateField("Имя")
        Ind9.Fields.Append Fs1
        Ind9.Fields.Append Fs2
        tbWorker.Indexes.Append Ind9
        
        ' Создание и описание счетчика с именем Код (табл.
        Family) аналогично таблице Worker
        Set Fin2 = tbFam.CreateField("Код", dbLong)
        Fin2.Attributes = dbAutoIncrField
        tbFam.Fields.Append Fin2
        
        ' Первичный ключ таблицы Family
        Set Ind2 = tbFam.CreateIndex("Код")
        Ind2.Primary = True
        Set Fin2 = Ind2.CreateField("Код", dbLong)
        Ind2.Fields.Append Fin2
        tbFam.Indexes.Append Ind2
        
        ' Описание остальных полей (табл. Family)
        Set P(1) = tbFam.CreateField("Номер", dbLong)
        Set P(2) = tbFam.CreateField("Кто", dbText, 20)
        Set P(3) = tbFam.CreateField("Фамилия", dbText, 50)
        Set P(4) = tbFam.CreateField("Имя", dbText, 50)
        Set P(5) = tbFam.CreateField("Отчество", dbText, 50)
        Set P(6) = tbFam.CreateField("Год рождения", dbText)
        
        ' Добавление полей в таблиу Worker
        For i = 1 To 54
        tbWorker.Fields.Append F(i)
        Next i
        
        ' Добавление полей в таблиу Family
        For i = 1 To 6
        tbFam.Fields.Append P(i)
        Next i
        
        ' Добавление таблицы Worker в БД
        dbkadr.TableDefs.Append tbWorker
        
        ' Добавление таблицы Family в БД
        dbkadr.TableDefs.Append tbFam
        
        ' Создание объекта Relation (связь, отношение) с
        именем first
        Set Rel1 = dbkadr.CreateRelation("first")
        ' Установка свойств отношения
        Rel1.Table = "Worker" ' Первичная (мастер) таблица
        отношения
        Rel1.ForeignTable = "Family" ' Подчиненная таблица
        Rel1.Attributes = dbRelationDeleteCascade ' Разрешить каскадное
        удаление данных из второй таблицы, когда
        удаляются связанные данные из первой
        ' Создание поля отношения и установка свойств
        Set Fr = Rel1.CreateField("Number") ' Создание поля
        отношения с именем Number, в первой таблице должно
        быть поле с таким же именем.
        Fr.ForeignName = "Номер" ' Поле отношения во второй
        таблице Номер. 
        ' Добавление поля к объекту "отношение" и сам
        объект "отношение" к БД
        Rel1.Fields.Append Fr
        dbkadr.Relations.Append Rel1
        ' Закрытие БД
        dbkadr.Close
        MsgBox "Поздравляем! Вы впервые запустили
        программу. На Вашем диске была создана БД.
        Нажмите кнопку Выход, затем запустите программу
        снова и приступайте к работе."
        End Function
        
        		
		
		наверх
		
		
		Сохранение файла в БД и получение его обратно из БД 
Данный пример показывает как можно сохранить двоичный файл (*.EXE, Документ MS Word и т.п.) в БД и, затем, загрузить его обратно из БД. В примере используется ADO, поэтому для работы примеру потребуется указать Reference на Microsoft Active Data Objects. Тип поля БД, в которое будет сохраняться файл, должен быть BINARY (в MS Access - OLE OBJECT).
Public Function SaveFileToDB(ByVal FileName As String, RS As Object, FieldName As
        String) As Boolean 
        Dim iFileNum As Integer 
        Dim lFileLength As Long 
        Dim abBytes() As Byte 
        Dim iCtr As Integer 
        On Error GoTo ErrorHandler 
        If Dir(FileName) = "" Then Exit Function 
        If Not TypeOf RS Is ADODB.Recordset Then Exit Function 
        'считать файл в массив 
        iFileNum = FreeFile 
        Open FileName For Binary Access Read As #iFileNum 
        lFileLength = LOF(iFileNum) 
        ReDim abBytes(lFileLength) 
        Get #iFileNum, , abBytes() 
        'поместить содержимое массива в БД 
        RS.Fields(FieldName).AppendChunk abBytes() 
        Close #iFileNum 
        SaveFileToDB = True 
        ErrorHandler: 
        End Function 
        Public Function LoadFileFromDB(FileName As String, _ 
        RS As Object, FieldName As String) As Boolean 
        Dim iFileNum As Integer 
        Dim lFileLength As Long 
        Dim abBytes() As Byte 
        Dim iCtr As Integer 
        On Error GoTo ErrorHandler 
        If Not TypeOf RS Is ADODB.Recordset Then Exit Function 
        iFileNum = FreeFile 
        Open FileName For Binary As #iFileNum 
        lFileLength = LenB(RS(FieldName)) 
        abBytes = RS(FieldName).GetChunk(lFileLength) 
        Put #iFileNum, , abBytes() 
        Close #iFileNum 
        LoadFileFromDB = True 
        ErrorHandler: 
        End Function 
        '----------------------- 
        'Пример использования #1 
        '----------------------- 
        Dim sConn As String 
        Dim oConn As New ADODB.Connection 
        Dim oRs As New ADODB.Recordset 
        sConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\MyDb.MDB;Persist Security
        Info=False" 
        oConn.Open sConn 
        oRs.Open "SELECT * FROM MYTABLE", oConn, adOpenKeyset, adLockOptimistic 
        oRs.AddNew 
        SaveFileToDB "C:\MyDocuments\MyDoc.Doc", oRs, "MyFieldName" 
        oRs.Update 
        oRs.Close 
        '----------------------- 
        'Пример использования #2 
        '----------------------- 
        Dim sConn As String 
        Dim oConn As New ADODB.Connection 
        Dim oRs As New ADODB.Recordset 
        sConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\MyDb.MDB;Persist Security
        Info=False" 
        oConn.Open sConn 
        oRs.Open "SELECT * FROM MyTable", oConn, adOpenKeyset, adLockOptimistic 
        LoadFileFromDB "C:\MyDocuments\MyDoc.Doc", oRs, "MyFieldName" 
        oRs.Close
Источник: http://www.relib.com/code.asp?id=444
		
		
		наверх
		
		
Мои программы
BalloonMessage for MS Agent
   BalloonMessage for Microsoft Agent реализует диалог программы с 
пользователем, используя при этом технологию Microsoft Agent. OCX реализует три 
типа диалоговых окон: InputBox, MsgBox и MsgLabels.
Автор: Шатрыкин Иван. Соавтор: Павел Сурменок.
		
		
		наверх
		
		
		Вопрос/Ответ
Здесь Вы можете задать вопрос, или ответить на уже имеющиеся вопросы.
Вопросы:
Автор вопроса: SMM
Ответ ожидается по этому 
адресу
   1. Есть код блокировки кнопки "Пуск":
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
Private Declare Function EnableWindow Lib "user32" (ByVal hwnd As Long, ByVal fEnable As Long) As Long
Public Sub EnableStartButton(Optional Enabled As Boolean = True)
'this will enable/disable any window with a little modifaction
Dim lHwnd As Long
'найти hWnd
lHwnd& = FindWindowEx(FindWindow("Shell_TrayWnd", ""), 0&, "Button", vbNullString)
'call the enablewindow api and do the what needs to be done
Call EnableWindow(lHwnd&, CLng(Enabled))
End Sub
Private Sub Command1_Click()
EnableStartButton False 'Кнопка ПУСК заблокирована
End Sub
Private Sub Command2_Click()
EnableStartButton True 'Кнопка ПУСК не заблокирована
End Sub
но он не блокирует нажатие кнопки Windows и Ctrl+Esc.
Подскажите, как это исправить.
2. Есть две формы, как сделать, что бы первая форма появлялась внутри другой в строго определённом месте.
Автор вопроса: 
EL
Ответ ожидается по этому 
адресу
   Подскажите, как выполнить поиск строки в тексте HTML-я, загруженного в компонент WebBrowser. Как это делается в IE5 я уже знаю, а под 4?
Автор вопроса: 
Rutshtein Alex
Ответ ожидается по этому 
адресу
   Как создать на форме список, типа Alt-Tab, чтобы в нём были все запущенные программы (не процессы) и по нажатию на какой-либо элемент активной становилась указанная программа?
Автор вопроса: 
Duke
Ответ ожидается по этому 
адресу
   1.Как проиграть WAV и MP3 музон со скоростью 200% от нормальной (в 2 раза быстрее) и 50% скорости от нормальной (т.е. 2 раз медленнее) это надо сделать на VB6
2.Как при помощи VB6 сохранить BMP рисунок в JPG формате
3.У меня такая фигня: я пытался эмулировать нажатие NUMLOCK, SCROLL...,CAPS... таким образом ими мигать но шо то не робить, они не мигают, а мерцают тускло очень. Как заставить их мигать
Автор вопроса: 
Rusty Angles
Ответ ожидается по этому 
адресу
   Вопрос 1
(VB.NET) Видел программу, которая используя dos-овский архиватор, находящийся в том же каталоге, распаковывала файлы, но при этом не видно было окна доса..
Как это можно сделать?
И еще.. как использовать DLL-библиотеки, и как узнавать ихние возможности с помошью WinDasm32?
Вопрос 2
(VB.NET) Добавил я в проект bmp файл, как ресурс, теперь он появился в окошке с права с верху, как его использовать, как ссылаться на него?
Автор вопроса: 
Андрей
Ответ ожидается по этому 
адресу
   Подскажите, для чего испольяуется модуль. 
Автор вопроса: 
Dimka
Ответ ожидается по этому 
адресу
   Как можно использовать обхекты не стандартные в  бейсике 6.0 а те которые используются в системе. допустим в ХР.
Можно ли подключить обьекты из системы в бейсик?
Автор вопроса: 
Alexander Bondarenko
Ответ ожидается по этому 
адресу
   У меня на форме картинка PictureBox в ней нарисованны фигурки методами Line,Circule и.т.д я хочу програмно передвигать эти рисунки восстонавливя все то что было под ними т.е. 
1) сохраняю то, что было до рисунка 
2) рисую новый рисунок
надо передвинуть
Автор вопроса: 
Сергей
Ответ ожидается по этому 
адресу
   Как можно записать в файл открытый рисунок (в picture box) не используя функцию SavePicture, а потом его открыть. Файл должен быть примерно такого типа:
type My_Type
     txt as string        'Для записи инфы
     pic                      'Для записи картинки
end type
Автор вопроса: 
Gala
Ответ ожидается по этому 
адресу
   Каким образом скопировать файл на vbscript в директорию на IIS-СЕРВЕР?
создаю объект:
Set fs = CreateObject "Scripting.FileSystemObject")
теперь копирую, допустим
fs.CopyFile "C:\org\gerb3.gif", "C:\Inetpub\wwwroot\gerb3.gif"
но ведь мне надо указать url?
Автор вопроса: 
Дина
Ответ ожидается по этому 
адресу
   Где можно найти ответ, по интерфейсу Excel - ияменить подсветку активной строки в таблицах (плохо видно - бледнющая серость)
Автор вопроса: 
vovan
Ответ ожидается по этому 
адресу
   Подскажите плз. как из-под VB получить доступ к БД Paradox (v4.x,5.x)
Автор вопроса: 
Николай
Ответ ожидается по этому 
адресу
   Ищу профессионального программиста.
Нужна программа для работы с модемом (автоответчик, баяа данных и т.д).
Подробности и стоимость обсудим по "мылу".
Автор вопроса: 
Error
Ответ ожидается по этому 
адресу
   Как определть объём жесткого диска и скока на это болванчике занято места.
Автор вопроса: 
Костик
Ответ ожидается по этому 
адресу
   Что надо записать в коде чтобы из моей программы открывался какой-либо файл (например в формате HTML) и чтобы он открывался с любого диска, но по определённому пути.
Например:
Сommand1 - кнопка открывающая программу, а  "Любой диск:\Мои документы\index.html" - путь к файлу
Ответы:
Вопрос:
   Нужно присвоить некоторые значения, ещё не загруженой дочерней форме, так, чтобы она на это ни как не отриагировала, т.е. осталась не загруженой.
Ответ:
Автор ответа: 
Sergey Y. Tkachev
Понимаешь, нельзя присвоить значения незагруженой форме. Можно только спрятаной. Но загрузить её тебе всё равно придётся.
Допустим, у тебя есть в форме (например, frmDocument) какая-то публичная переменная, например
Public MyVar As Integer
Из материнской формы делаешь:
Dim fDocument As frmDocument
Set fDocument = New frmDocument
Load fDocument
fDocument.MyVar = 15
'Форма ещё невидима!
fDocument.Show
Вот и всё. ТОЛЬКО!!! НЕ ЗАБУДЬ!!!
Обязательно поставь свойство материнской формы AutoShowChildren = False
Иначе - покажется сразу.
Вопрос:
   Нужно присвоить некоторые значения, ещё не загруженой дочерней форме, так, чтобы она на это ни как не отриагировала, т.е. осталась не загруженой.
Ответ:
Автор ответа: 
Иван
Если форма не загружена, то ей ничего передать нельзя.
А данные можно получить например при загрузке формы по Form_Load.
Пусть форма при загрузке считывает нужные переменные.
То есть:
================
...
'скидываем переменную в буфер
bufVar = MyVar
...
================
Sub Form_Load()
...
   'считываем из буфера
   MyFormVar = bufVar
...
End Sub
===============
Вопрос:
   Как сделать так, чтобы при нажатии клавиш Alt+Ctrl+Del не вылетало меню, либо в списке не было моей программы?
Ответ:
Автор ответа: 
Rafis
Это можно сделать с помощью 2 айпияек.
Расположи на форме 2 кнопки и напиши следующий код:
  
Private Declare Function RegisterServiceProcess Lib "kernel32" (ByVal ProcessID As Long, ByVal ServiceFlags As Long) As Long 
Private Declare Function GetCurrentProcessId Lib "kernel32" () As Long
Private Sub Command1_Click()
RegisterServiceProcess GetCurrentProcessId, 1 'Спрятать
End Sub
Private Sub Command2_Click()
RegisterServiceProcess GetCurrentProcessId, 0 'Показать
End Sub
  
Нажатие первой кнопки прячет программу из списка,  а вторая показывает.
Вопрос:
   Как сделать так, чтобы при нажатии клавиш Alt+Ctrl+Del не вылетало меню, либо в списке не было моей программы?
Ответ:
Автор ответа: 
Kurt Haeldar
О блокировке трех клавиш ответ прямо из предыдущего выпуска рассылки:
  
'ВАРИАНТ 1
Private Declare Function SystemParametersInfo Lib "user32" Alias "SystemParametersInfoA" (ByVal uAction As Long, ByVal uParam As Long, lpvParam As Any, ByVal fuWinIni As Long) As Long
Private Const SPI_SCREENSAVERRUNNING = 97&
Public Sub AllowKeys(bParam As Boolean)
Dim lRetVal As Long, bOld As Boolean
lRetVal = SystemParametersInfo(SPI_SCREENSAVERRUNNING, bParam, bOld, 0&)
End Sub
Private Sub Form_Load()
Call AllowKeys(True) 'блокировка сочетаний
End Sub
Private Sub Form_Unload(Cancel As Integer)
Call AllowKeys(False) 'разблокировка сочетаний
End Sub
'ВАРИАНТ 2
'без дополнительной подпрограммы
'Добавьте два элемента CommandButton. Первая кнопка блокирует сочетание клавиш, вторая - разрешает.
Const SPI_SCREENSAVERRUNNING = 97
Private Declare Function SystemParametersInfo Lib "user32" Alias "SystemParametersInfoA" _
(ByVal uAction As Long, ByVal uParam As Long, ByVal lpvParam As Any, ByVal fuWinIni As Long) As Long
Private Sub Command1_Click()
Call SystemParametersInfo(SPI_SCREENSAVERRUNNING, True, "1", 0)
End Sub
Private Sub Command2_Click()
Call SystemParametersInfo(SPI_SCREENSAVERRUNNING, False, "1", 0)
End Sub
Private Sub Form_Unload(Cancel As Integer)
Call SystemParametersInfo(SPI_SCREENSAVERRUNNING, False, "1", 0)
End Sub 
А вот насчет скрытия проги есть API функция RegisterServiceProcess 
Объявление:
Declare Function RegisterServiceProcess Lib "kernel32" (ByVal dwProcessID As Long, ByVal dwType As Long) As Long
Параметры:
dwProcessId - идентификатор процесса, который нужно скрыть или наоборот, показать. Можно поставить NULL для текущего процесса.
dwType - само действие. Скрыть (сдеалть сервисом) или показать (сделать не-сервисом)
Действия могут быть такими:
RSP_SIMPLE_SERVICE - Зарегистрировать как сервис
RSP_UNREGISTER_SERVICE - Зарегистрировать как не-сервис.
Вопрос:
   Как сделать так, чтобы при нажатии клавиш Alt+Ctrl+Del не вылетало меню, либо в списке не было моей программы?
Ответ:
Автор ответа: 
Dmitry Gavrilov
Взято кажется с http://www.nppdnepr.com/
Как спрятать программу от таск мэнаджера?
Ecли кoмy-нибyдь нyжнo пpятaть cвoи пpoгpaммы в oкнe пo Ctrl+Alt+Del, тo мoжнo вocпoльзoвaтьcя вызoвoм RegisterServiceProcess из Kernel32.dll :
===Cut From HELP ===
DWORD RegisterServiceProcess( DWORD dwProcessId, DWORD dwType );
Parameters
dwProcessId
Specifies the identifier of the process to register as a service process. Specifies NULL to register the current process.
dwType
Specifies whether the service is to be registered or unregistered. This parameter can be one of the following values.
Value Meaning
RSP_SIMPLE_SERVICE Registers the process as a service process.
RSP_UNREGISTER_SERVICE Unregisters the process as a service process.
#define RSP_SIMPLE_SERVICE 0x00000001
#define RSP_UNREGISTER_SERVICE 0x00000000
Return Value
The return value is 1 if successful or 0 if an error occurs.
===Cut===
Ha VB этo :
Private Sub Form_Load()
Dim x
x = RegisterServiceProcess(0, 1)
End Sub
Private Sub Form_Unload(Cancel As Integer)
Dim x
x = RegisterServiceProcess(0, 0)
End Sub
  
Declare Function RegisterServiceProcess Lib "kernel32.dll" (ByVal dwProcessId As Long, ByVal dwType As Long) As Long
Вопрос:
   Подскажите ,пожалуйста, код формы чтобы из однога окна при нажатии кнопки запускалось другое?
Ответ:
Автор ответа: 
Kurt Haeldar
Для скрытия первой формы и показа второй есть соответственно действия hide и show.
  
Private Sub Command1_Click()
     form1.hide ' скрываем первую форму
     form2.show  ' показываем вторую форму
End Sub
Вопрос:
   Подскажите адрес где можно прочитать как делаются DLL на VB ?
Ответ:
Автор ответа: 
Носов Максим
http://mik-seite.narod.ru/artikles/dll.htm
Вопрос:
   Как в WinNT/Win2000/WinXP сделать так, чтобы при нажатии на Ctrl-Alt-Del ничего не происходило (яапретить Ctrl-Alt-Del)? Для Windows 95/98/ME подходит: 
ret = SystemParametersInfo(SPI_SCREENSAVERRUNNING, True, pOld, 0)
, но в NT/2000/XP это не работает.
Ответ:
Автор ответа: 
P@Ssword
В Win2k Ctrl-Alt-Del - это системная комбинация, которая вызывает меню блокировки, смены пароля и т.д. Кроме того, эту комбинацию надо нажимать при вводе пароля для повышения безопасности (т.е. эта комбинация монопольно используется системой), поэтому, я думаю, понятно, что заблокировать её невозможно.
Вопрос:
   Не могу влить в TextBox текст большого объема (65кб).Текст меньшего объема вливает без проблемм.
Ответ:
Автор ответа: 
P@Ssword
И не вольёшь. А если будешь пытаться - прорвёт (^_^). TextBox не понимает тексты длиной более (65536|32768, нужное подчеркнуть) символов. Используй RichTextBox.
Вопрос:
   В текстовом документе нужно от определенного слова до еще одного слова выделить этот блок и скопировать в буфер. Как это осуществить?
Ответ:
Автор ответа: 
Duke
Если я правильно понял то надо в буфер затолкать выделенный текст.
Поставь Textbox(Text1) и Commandbutton(Command1)
'.........
Private Sub Command1_Click()
Clipboard.SetText (Text1.SelText)
End Sub
'.........
Если я не правильно понял напиши поподробнее.
Можете заполнить эту форму, либо отослать вопрос 
СЮДА
Форма для добавления нового вопроса в этот раздел. Информация отсылается по E-mail владельцу сайта.
        
		наверх