Visual Basic: новости сайтов, советы, примеры кодов.
Выпуск 164.


VBNet VBMania
Голосование:



Рассылки Subscribe.Ru
VB.NET-World
Новости сайта IgorykSoft и советы по программированию
DanSoft о Visual Basic
Visual Basic.NET Уроки.

Ссылки:

  • Улицы VB
  • Использование VB
  • Азбука VB
  • Улицы VB
  • Кирпичики VB
  • CообЧа VB
  • VB по русски
  • MDesign
  • IgorykSoft
  • DanSoft
  • Господа!!! читайте MSDN!!!

    Несколько слов от автора:

       
    Читайте!


    Содержание выпуска




    Книги

    Переход на 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 можно найти
    здесь.

    наверх


    Конкурс!

    Здравствуйте, любители Visual Basic! Подведены итоги третьего конкурса на лучшую статью по программированию на Visual Basic. В конкурсе участвовало 10 работ! Спасибо всем, кто принял участие в конкурсе, прислав свои работы, а также тем, кто помогал в выборе победителя, голосовав на сайте. О результатах. Места распределились следующим образом:

    Первое место: Ларин Александр "Защита Защиты"
    Второе место: Ройтер Роман "Как защитить свою программу от взломщиков".
    Третье место: Немиро Алексей "Разработка окна в стиле Windows XP" и "Каждому юзеру по программе!".

    Какие же призы мы приготовили авторам? Ларин Александр получает подписку на журнал "Hard'n'Soft". Ройтер Роман награждается комплектом компакт дисков от VBNet.Ru. И Немиро Алексей получит один из компакт дисков от нашего сайта по его выбору.

    Ну и хочу сообщить всем, что начинается новый конкурс! И не один! Во-первых, конкурс на статью. Главным призом будет, как и сейчас, подписка на журнал "Hard'n'Soft". Второй конкурс - конкурс на лучший пример и ActiveX. Присылайте свои статьи, примеры, ActiveX на сайт и становитесь победителями конкурса!



    наверх


    Citycat by Email

       Программа Citycat by Email позволяет работать с сервером Subscribe.ru с помощью электронной почты. Теперь Вам не нужно тратить деньги на работу в online и просматривать мегабайты рекламы для того, чтобы подписаться на нужную рассылку! Вам просто необходимо скачать небольшую базу данных по всем рассылкам каталога с нашего сайта, после чего Вы сможете подписываться и отписываться от рассылок, заказывать архивы прошлых выпусков, выполнять поиск по каталогу рассылок и многое другое.
       Программу Citycat by Email можно бесплатно загрузить с сайта http://sapisoft.h1.ru.

    наверх


    Новости сайта VBNet

    Дата: 26.05.2003 16:30 | Раздел: Примеры кода | Автор: Эминов Эмиль

    ClipBoard - Пример создания буфера обмена. Возможность сохранения текстовых данных буфера.

    Дата: 25.05.2003 16:30 | Раздел: Примеры кода | Автор: Эминов Эмиль

    Form - Небольшая игра, всем известная "Угадай число". Пример симпатичного интерфейса.

    Дата: 24.05.2003 16:30 | Раздел: Примеры кода | Автор: Эминов Эмиль

    Switch - Программа для изменения раскладки клавиатуры, просто двойным щелчком.

    Дата: 23.05.2003 14:22 | Раздел: ActiveX контролы | Автор: Savenger

    TBReader - Этот элемент управления предназначен для обеспечения доступа из ваших программ к почтовым базам The Bat! напрямую, минуя промежуточные звенья. Сей OCX может функционировать даже при отсутствии самого The Bat!.

    Дата: 23.05.2003 11:32 | Раздел: Примеры кода | Автор: Половый Александр

    Игра "Быки и Коровы" - Игра "Быки и Коровы" (Bull&cow.exe) Логическая игра, цель которой состоит в том, чтобы отгадать число, загаданное соперником. Правила игры описаны в справке. Играть можно против компьютера или по сети против человека.

    Дата: 22.05.2003 16:30 | Раздел: Примеры кода | Автор: Эминов Эмиль

    Sysinf - Небольшая информация о вашей системе.

    Дата: 21.05.2003 16:09 | Раздел: Примеры кода | Автор: Millenium

    Language Pakage Creator - Простой пример, как можно создавать и редактировать языковые пакеты интерфейса программ.

    Дата: 19.05.2003 16:09 | Раздел: ActiveX контролы | Автор: Daniyar Atadjanov

    MagicButton v1.2.650 - Этот контрол позволяет создавать кнопки любой сложности - текстовые, графические, анимированные, разные эффектные кнопки. Контрол имеет множество свойств, событий и методов! Имеет событие MouseOut, которого нет ни у одного контрола в мире. Можно сделать кнопку с изменяемым цветом фона при наведении мыши, с изменяемым цветом текста на кнопке, с изменяемым фоновым изображением. Рисунок и текст можно поместить в любом месте на кнопке относительно центра. Имеет множество стилей бордюров, рамок. Можно сделать всегда выпуклую кнопку, или выпуклую при наведении, или XP фрейм при наведении, или просто плоскую.



    Последние 20 тем форума на VBNet.Ru:

    11:22 / 26 май.  TreeView | Хитов: 2 |  Ответов: 0
    09:47 / 26 май.  Продаю книгу | Хитов: 7 |  Ответов: 0
    21:54 / 25 май.  TIF картинки | Хитов: 11 |  Ответов: 0
    20:58 / 25 май.  Кому не лень... | Хитов: 22 |  Ответов: 0
    17:00 / 25 май.  Потоки | Хитов: 14 |  Ответов: 0
    14:05 / 25 май.  Как очистить ListView ? | Хитов: 18 |  Ответов: 1
    13:46 / 25 май.  АДМИНЫ ЧТО ЗА ..... | Хитов: 39 |  Ответов: 1
    13:40 / 25 май.  Новое сообщение без темы | Хитов: 4 |  Ответов: 0
    13:05 / 25 май.  Новое сообщение без темы | Хитов: 4 |  Ответов: 0
    12:59 / 25 май.  Новое сообщение без темы | Хитов: 3 |  Ответов: 0
    10:57 / 25 май.  СРОЧНО!!!!!! ПОМОГИТЕ!!!!!!!!! | Хитов: 46 |  Ответов: 4
    03:27 / 25 май.  Добавить картинку для фона | Хитов: 23 |  Ответов: 0
    21:12 / 24 май.  Форма формы и API! | Хитов: 30 |  Ответов: 1
    20:53 / 24 май.  2 Админы: приношу свои извинения... | Хитов: 48 |  Ответов: 2
    20:18 / 24 май.  Динамические формы | Хитов: 41 |  Ответов: 2
    18:37 / 24 май.  Чат | Хитов: 27 |  Ответов: 1
    18:05 / 24 май.  TV | Хитов: 25 |  Ответов: 0
    16:36 / 24 май.  Модальность окон в VB.NET | Хитов: 16 |  Ответов: 2
    16:11 / 24 май.  Оптимизация функции перекодировки текста (VB.NET) | Хитов: 5 |  Ответов: 0
    13:34 / 24 май.  клавиатурный хук | Хитов: 42 |  Ответов: 7


    Последние поступления в Библиотеку кодов:



    Новости от VBNet-чиков!:



    наверх


    Новости сайта VBMania



    наверх


    Новости сайта Азбука VB



    наверх


    Новости сайта MSDN



    наверх


    Новости сайта GotdotNet



    Новые статьи:



    наверх


    Новости сайта dotSite

    Новые статьи:

    • Создание приложения для карманных компьтеров с использование БД.
    • Вопросы производительности .NET Framework. Цикл статей
    • Методы повышения производительности .NET приложений. Цикл статей
    • Рекомендации по асинхронному программированию. Цикл статей
    • Рекомендации по организации поточной обработки. Цикл статей


    Новые примеры:



    наверх


    Один момент из жизни форума: WM_ где узнать?

    Вопрос:
    Автор вопроса: ivan_81

       необходимо перехватывать события клавы.    Как ТОЛЬКО средствами VB организовать такое дело?


    Ответы:

    Автор: Страшный Сон
       Очень просто. Если надо перехватывать нажатия клавиш клавы и мышары, вот апиха есть:
    Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer
       А если надо их блокировать, то можно поискать ещё что-нибудь

    Автор: ivan_81
       GetKeyState возвращает состояние одной клавиши, и то какую запросиш (а надо всех, если я правильно понял), тогда уж лутше GetKeyboardState (я так думаю что массив побыстрее обрабатыватся будет чем вызывать для каждой клавиши GetKeyState).
       Придётся вызывать GetKeyboardState по таймеру. Но как это скажется на производительности системы, если таймер на 0,1 сек (думаю хватит)

    Автор: Danger2002
       Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer



    наверх


    Доска объявлений

       Ищу телеработу.

    • Переводы: английский, украинский, русский.
    • Cipper программист.
    • Assembler программист.
    • PIC разработчик
    • композитор
    • Прогрессивные стили
    • 3D анимация
    • GIF анимация
    Антон Лозовский.

    наверх


    Мои программы

    BalloonMessage for MS Agent

       BalloonMessage for Microsoft Agent реализует диалог программы с пользователем, используя при этом технологию Microsoft Agent. OCX реализует три типа диалоговых окон: InputBox, MsgBox и MsgLabels.

    Авторы: Шатрыкин Иван и Павел Сурменок.

    наверх

    Вопрос/Ответ

    Здесь Вы можете задать вопрос, или ответить на уже имеющиеся вопросы.

    Вопросы:


    Автор вопроса: sla_237

    Ответ ожидается по этому адресу

       Подскажите пожалуйста как отлавливать траффик. по определенному соединеню? по заданому ip например? если можно с примером.


    Автор вопроса: HoodWin

    Ответ ожидается по этому адресу

       Подскажите, пожалуйста, как узнать все процессы в системе и отключить любой ия них.


    Автор вопроса: goodroman

    Ответ ожидается по этому адресу

       В МОДУЛЕ ПИШУ:

    Public Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer
    Public AsciiZnak(255) As Integer

    Function KeyDruk() As String
          
        For i = 1 To 255 ' Prisvoenie
           If Not AsciiZnak(i) = GetKeyState(i) Then
              KeyDruk = Chr(i)
           End If
           AsciiZnak(i) = GetKeyState(i)
        Next i
                
    End Function

    В ПРОГРАММЕ ПИШУ:

    Private Sub Timer1_Timer()
    Dim a As String
    a = KeyDruk()
    Text1.Text = Text1.Text + a
    End Sub


    ВОПРОС:
    Почему при выполнении таймера он выдаёт один символ два раза? По идеи в модуле я написал всю проверку насчёт косяка.
    Менять интервал времени таймера не помогает, а если сделать уж очень большой интервал, то вообще функция не успевает следить за нажатием кнопок.
    Что делать?


    Автор вопроса: Jen

    Ответ ожидается по этому адресу

       Сделал страничку в DHTML. А работает только у меня т.к при компиляции проекта инфа о DLL заносится в реестр. Как сделать так чтобы она работала у всех.


    Автор вопроса: Елена

    Ответ ожидается по этому адресу

       Подскажите, как перевернуть содержимое ячейки в Excele на 180 градусов ("вверх ногами").
    Требуется для формы Госкомстата.
    Может быть воспользоваться перевернутым шрифтом, тогда подскажите, где его взять?




    Ответы:


    Вопрос:

       Как удалить файл qwe.mdb (к примеру) програмно из VB.

    Ответ:

    Автор ответа: LUNET Co.

    Если тебе нужно удалить какой-нибудь файл программно лучше использовать следующий код:

    Kill ("PATH_TO_FILE") 'где PATH_TO_FILE путь к удаляемому файлу



    Ответ:

    Автор ответа: Данила

    kill "c:\qwe.mdb"


    Вопрос:

       Как можно выключить компьютер или перезагрузить его программно?

    Ответ:

    Автор ответа: Tibor

    Public Declare Function ExitWindows Lib "user32" Alias "ExitWindows" (ByVal dwReserved As Long, ByVal uReturnCode As Long) As Long



    Ответ:

    Автор ответа: Sacha

    Для перезагрузки - Shell "rundll32 shell32,SHExitWindowsEx 2"
    Чтобы выключить компьютер - Shell "shell32,SHExitWindowsEx 1"


    Вопрос:

       Я написал прогу Проводник, но хотел бы узнать как сделать у FileListBox, чтобы можно было открать из моего проводника любой файл.

    Ответ:

    Автор ответа: AndroiD

    ShellExecute'ом по событию даблклика.


    Вопрос:

       Нужно чтобы моя программа дописывала себя в конец .exe-фаила и при запуске обе программы работали нормально. Если можно немного кода.

    Ответ:

    Автор ответа: Tibor

    Если ты допишеш свою прогу в конец какойнибудь другой, то ни каких касяков в работе той проги не будет, так что можеш смело лепить. но если ты хочеш, чтобы запускалась и твоя и та проги одновременн или запускалась твоя а потом передавала управление той, то пора заняться асемблером. Увы на ВБ этого не зделать.



    Ответ:

    Автор ответа: AndroiD

    Это вирус. ИМХО ASM'ой тут надо....

    И не просто так, а с глубоким пониманием структуры PE-файла. Найди доки по вирмэйкерству и изучай себе на здоровье...



    Ответ:

    Автор ответа: Alexander

    Не полуцыцца :-) Дозапись надо делать до запуска программы, да и права на это система - если это настоящая, а не "неигрушечная" - будет обязана блюсти!
    А так ваабчето вирусы писуцца по-другому и в другом месте ;-\


    Вопрос:

       На форме есть TextBox control (имя: txtText) и CommandButton (имя: cmbCreate)
       При нажатии на кнопку надо создать еще 2 таких TextBoxа и поместить их рядом с существующим.
       Использую VB6.

    Ответ:

    Автор ответа: LUNET Co.

    В данном случае лучше в режиме визуального проектирования расположить два TextBox'а в том месте формы, где это тебе необходимо и установить двум добавленным TextBox'ам свойство Visible=False, а при нажатии на кнопку Create у этих двух TextBox'ов будет меняться значение False (свойства Visible) на True. Так гораздо проще, тем более, если тебе заранее известно сколько элементов TextBox ты хочешь использовать (в данном случае их два).



    Ответ:

    Автор ответа: Vladimir [PRC]

    Для первого txtText установи Index=0 и вперед:

    Private Sub cmdCreate_Click()
    Load txtText(1)
    txtText(1).Left = txtText(0).Left + txtText(0).Height
    txtText(1).Visible = True
    Load txtText(2)
    txtText(2).Left = txtText(1).Left + txtText(1).Height
    txtText(2).Visible = True
    End Sub

    При этом содержимое и свойства всех новых окон будет соответствовать первому окну.
    Когда окна будут не нужны можно их выгрузить:

    Unload txtText(2)
    Unload txtText(1)



    Ответ:

    Автор ответа: vmv

    Зачем так сложно ?
    Ставишь на форму три TextBoxа, двум назначаешь Visible=False
    При нажатии на кнопку - Visible=True



    Ответ:

    Автор ответа: Tibor

    Тебе всего навсего надо для того первого txtText задать индекс и тогда твои действия будут примерно следующими:

    load txtText(1)
    txtText(1).visible = true
    load txtText(2)
    txtText(2).visible = true



    Ответ:

    Автор ответа: Sacha

    Можно заранее создать 3 TextBox'а, двум из которых нужно задать свойство Visible=False.
    В код кнопки нужно вписать:

         Private Sub CommandButton1_Click
             TextBox2.Visible = True
             TextBox3.Visible = True
         End Sub



    Ответ:

    Автор ответа: Vir

    У txtText делаеш Index =0
      
    код добавления

    Load PicArc(txtText .UBound + 1)
    txtText (txtText .UBound).Visible = True
    txtText (txtText .UBound).left = ...
    txtText (txtText .UBound).top = ...



    Ответ:

    Автор ответа: AndroiD

    Сделай массив текстбоксов и в нужном месте грузи новые. И задавай им нужные координаты.

    Юзай, к примеру, вот этот код. Э, только так вот сразу не юзай..
    Я в нем над обработчиком ошибок вообще не работал. Короче, ему надо нулевой элемент и индекс нового элемента для работы.

    Sub TLoad(TB As Object, Index As Integer)

    Load TB(Index)
    With TB(Index)
    .Top = TB(0).Top
    .Left = TB(0).Left + Index * (TB(0).Width + 20)
    .Visible = True
    End With

    End Sub

    Private Sub Form_Load()
    TLoad Text1, 1
    End Sub

    А если хочешь - используй инструкцию CreateObject. Подробно о ней можешь узнать где-то в дебрях vbstreets...


    Вопрос:

       Как узнать ip-адрес интернет-сервера?

    Ответ:

    Автор ответа: AndroiD

    Вот что говорят по этому поводу ребята из KPD Team:

    'In a form
    Private Sub Form_Load()
         'KPD-Team 2001
         'URL: http://www.allapi.net/
         'E-Mail: KPDTeam@Allapi.net
         '67119558 is the long version of the IP address 198.41.0.4
         '198.41.0.4 is the primary root server
         MsgBox "Root server hostname: " + GetHostName(67119558)
    End Sub
    'In a module
    Public Const MIN_SOCKETS_REQD As Long = 1
    Public Const WS_VERSION_REQD As Long = &H101
    Public Const WS_VERSION_MAJOR As Long = WS_VERSION_REQD \ &H100 And &HFF&
    Public Const WS_VERSION_MINOR As Long = WS_VERSION_REQD And &HFF&
    Public Const SOCKET_ERROR As Long = -1
    Public Const WSADESCRIPTION_LEN = 257
    Public Const WSASYS_STATUS_LEN = 129
    Public Const MAX_WSADescription = 256
    Public Const MAX_WSASYSStatus = 128
    Public Type WSAData
         wVersion As Integer
         wHighVersion As Integer
         szDescription(0 To MAX_WSADescription) As Byte
         szSystemStatus(0 To MAX_WSASYSStatus) As Byte
         wMaxSockets As Integer
         wMaxUDPDG As Integer
         dwVendorInfo As Long
    End Type
    Declare Function WSACleanup Lib "WSOCK32" () As Long
    Declare Function WSAStartup Lib "WSOCK32" (ByVal wVersionRequired As Long, lpWSADATA As WSAData) As Long
    Declare Function gethostbyaddr Lib "wsock32.dll" (haddr As Long, ByVal hnlen As Long, ByVal addrtype As Long) As Long
    Declare Function lstrlenA Lib "kernel32" (ByVal Ptr As Any) As Long
    Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (hpvDest As Any, hpvSource As Any, ByVal cbCopy As Long)
    Public Function GetHostName(ByVal Address As Long) As String
         Dim lLength As Long, lRet As Long
         If Not SocketsInitialize() Then Exit Function
         lRet = gethostbyaddr(Address, 4, AF_INET)
         If lRet <> 0 Then
             CopyMemory lRet, ByVal lRet, 4
             lLength = lstrlenA(lRet)
             If lLength > 0 Then
                 GetHostName = Space$(lLength)
                 CopyMemory ByVal GetHostName, ByVal lRet, lLength
             End If
         Else
             GetHostName = ""
         End If
         SocketsCleanup
    End Function
    Public Function HiByte(ByVal wParam As Integer)
         HiByte = wParam \ &H100 And &HFF&
    End Function
    Public Function LoByte(ByVal wParam As Integer)
         LoByte = wParam And &HFF&
    End Function
    Public Sub SocketsCleanup()
         If WSACleanup() <> ERROR_SUCCESS Then
             MsgBox "Socket error occurred in Cleanup."
         End If
    End Sub
    Public Function SocketsInitialize() As Boolean
         Dim WSAD As WSAData
         Dim sLoByte As String
         Dim sHiByte As String
         If WSAStartup(WS_VERSION_REQD, WSAD) <> ERROR_SUCCESS Then
             MsgBox "The 32-bit Windows Socket is not responding."
             SocketsInitialize = False
             Exit Function
         End If
         If WSAD.wMaxSockets < MIN_SOCKETS_REQD Then
             MsgBox "This application requires a minimum of " & CStr(MIN_SOCKETS_REQD) & " supported sockets."
             SocketsInitialize = False
             Exit Function
         End If
         If LoByte(WSAD.wVersion) < WS_VERSION_MAJOR Or (LoByte(WSAD.wVersion) = WS_VERSION_MAJOR And HiByte(WSAD.wVersion) < WS_VERSION_MINOR) Then
             sHiByte = CStr(HiByte(WSAD.wVersion))
             sLoByte = CStr(LoByte(WSAD.wVersion))
             MsgBox "Sockets version " & sLoByte & "." & sHiByte & " is not supported by 32-bit Windows Sockets."
             SocketsInitialize = False
             Exit Function
         End If
         'must be OK, so lets do it
         SocketsInitialize = True
    End Function


    Вопрос:

       Подскажите плиз, какие мне нужны функции, чтобы написать сканер клавы. Если можно то с описанием, хотя не обязательно.

    Ответ:

    Автор ответа: Vir

    'Модуль
    Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
      
    'Программа
    If GetAsyncKeyState(VKey) Then
         msgboх "Кто то трогает ТАБ", vbinformation
    End If
      
    Программу помести в таймер, в API можно подстовлять числа 0..255 каждая для своей кнопки:
    ' KeyName(1) = "Left mouse"
    ' KeyName(2) = "Right mouse"
    ' KeyName(4) = "Midle mouse"
    ' KeyName(8) = "Backspace"
    ' KeyName(9) = "Tab"
    ' KeyName(13) = "Enter"
    ' KeyName(16) = "Shift"
    ' KeyName(17) = "Ctrl"
    ' KeyName(18) = "Alt"
    ' KeyName(19) = "Pause"
    ' KeyName(20) = "Caps Lock"
    ' KeyName(27) = "Esc"
    ' KeyName(32) = "Space"
    ' KeyName(33) = "Page Up"
    ' KeyName(34) = "Page Down"
    ' KeyName(35) = "End"
    ' KeyName(36) = "Home"
    ' KeyName(37) = "Left"
    ' KeyName(38) = "Up"
    ' KeyName(39) = "Right"
    ' KeyName(40) = "Down"
    ' KeyName(44) = "Print Scrin"
    ' KeyName(45) = "Insert"
    ' KeyName(46) = "Delete"
    ' KeyName(48) = "0"
    ' KeyName(49) = "1"
    ' KeyName(50) = "2"
    ' KeyName(51) = "3"
    ' KeyName(52) = "4"
    ' KeyName(53) = "5"
    ' KeyName(54) = "6"
    ' KeyName(55) = "7"
    ' KeyName(56) = "8"
    ' KeyName(57) = "9"
    ' KeyName(65) = "A"
    ' KeyName(66) = "B"
    ' KeyName(67) = "C"
    ' KeyName(68) = "D"
    ' KeyName(69) = "E"
    ' KeyName(70) = "F"
    ' KeyName(71) = "G"
    ' KeyName(72) = "H"
    ' KeyName(73) = "I"
    ' KeyName(74) = "J"
    ' KeyName(75) = "K"
    ' KeyName(76) = "L"
    ' KeyName(77) = "M"
    ' KeyName(78) = "N"
    ' KeyName(79) = "O"
    ' KeyName(80) = "P"
    ' KeyName(81) = "Q"
    ' KeyName(82) = "R"
    ' KeyName(83) = "S"
    ' KeyName(84) = "T"
    ' KeyName(85) = "U"
    ' KeyName(86) = "V"
    ' KeyName(87) = "W"
    ' KeyName(88) = "X"
    ' KeyName(89) = "Y"
    ' KeyName(90) = "Z"
    ' KeyName(91) = "Windows" 'Left
    ' KeyName(92) = "Windows" 'Right
    ' KeyName(93) = "Menu"
    ' KeyName(95) = "Sleep"
    ' KeyName(96) = "Num 0"
    ' KeyName(97) = "Num 1"
    ' KeyName(98) = "Num 2"
    ' KeyName(99) = "Num 3"
    ' KeyName(100) = "Num 4"
    ' KeyName(101) = "Num 5"
    ' KeyName(102) = "Num 6"
    ' KeyName(103) = "Num 7"
    ' KeyName(104) = "Num 8"
    ' KeyName(105) = "Num 9"
    ' KeyName(106) = "Num *"
    ' KeyName(107) = "Num +"
    ' KeyName(109) = "Num -"
    ' KeyName(110) = "Num ."
    ' KeyName(111) = "Num /"
    ' KeyName(112) = "F1"
    ' KeyName(113) = "F2"
    ' KeyName(114) = "F3"
    ' KeyName(115) = "F4"
    ' KeyName(116) = "F5"
    ' KeyName(117) = "F6"
    ' KeyName(118) = "F7"
    ' KeyName(119) = "F8"
    ' KeyName(120) = "F9"
    ' KeyName(121) = "F10"
    ' KeyName(122) = "F11"
    ' KeyName(123) = "F12"
    ' KeyName(144) = "Num Lock"
    ' KeyName(145) = "Scroll Lock"
    ' KeyName(160) = "Null" 'Left Shift
    ' KeyName(161) = "Null" 'Right Shift
    ' KeyName(162) = "Null" 'Left Ctrl
    ' KeyName(163) = "Null" 'Right Ctrl
    ' KeyName(164) = "Null" 'Left Alt
    ' KeyName(165) = "Null" 'Right Alt
    ' KeyName(166) = "Page Previous"
    ' KeyName(167) = "Page Next"
    ' KeyName(169) = "Stop"
    ' KeyName(170) = "Find"
    ' KeyName(171) = "Favorite"
    ' KeyName(172) = "Brauser"
    ' KeyName(180) = "E-Mail"
    ' KeyName(186) = ";"
    ' KeyName(188) = ","
    ' KeyName(190) = "."
    ' KeyName(191) = "/"
    ' KeyName(192) = "`"
    ' KeyName(219) = "["
    ' KeyName(220) = "\"
    ' KeyName(221) = "]"
    ' KeyName(222) = "'"



    Ответ:

    Автор ответа: AndroiD

    GetAsyncKeyState. (Api Guide - скачай с AllApi.Net Хотя я эту фишку юзал еще до того, как им обзавелся)

    'In a module
    Public Const DT_CENTER = &H1
    Public Const DT_WORDBREAK = &H10
    Type RECT
         Left As Long
         Top As Long
         Right As Long
         Bottom As Long
    End Type
    Declare Function DrawTextEx Lib "user32" Alias "DrawTextExA" (ByVal hDC As Long, ByVal lpsz As String, ByVal n As Long, lpRect As RECT, ByVal un As Long, ByVal lpDrawTextParams As Any) As Long
    Declare Function SetTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long
    Declare Function KillTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long) As Long
    Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
    Declare Function SetRect Lib "user32" (lpRect As RECT, ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
    Global Cnt As Long, sSave As String, sOld As String, Ret As String
    Dim Tel As Long
    Function GetPressedKey() As String
         For Cnt = 32 To 128
             'Get the keystate of a specified key
             If GetAsyncKeyState(Cnt) <> 0 Then
                 GetPressedKey = Chr$(Cnt)
                 Exit For
             End If
         Next Cnt
    End Function
    Sub TimerProc(ByVal hwnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long)
         Ret = GetPressedKey
         If Ret <> sOld Then
             sOld = Ret
             sSave = sSave + sOld
         End If
    End Sub

    'In a form
    Private Sub Form_Load()
         'KPD-Team 1999
         'URL: http://www.allapi.net/
         'E-Mail: KPDTeam@Allapi.net
         Me.Caption = "Key Spy"
         'Create an API-timer
         SetTimer Me.hwnd, 0, 1, AddressOf TimerProc
    End Sub
    Private Sub Form_Paint()
         Dim R As RECT
         Const mStr = "Start this project, go to another application, type something, switch back to this application and unload the form. If you unload the form, a messagebox with all the typed keys will be shown."
         'Clear the form
         Me.Cls
         'API uses pixels
         Me.ScaleMode = vbPixels
         'Set the rectangle's values
         SetRect R, 0, 0, Me.ScaleWidth, Me.ScaleHeight
         'Draw the text on the form
         DrawTextEx Me.hDC, mStr, Len(mStr), R, DT_WORDBREAK Or DT_CENTER, ByVal 0&
    End Sub
    Private Sub Form_Resize()
         Form_Paint
    End Sub
    Private Sub Form_Unload(Cancel As Integer)
         'Kill our API-timer
         KillTimer Me.hwnd, 0
         'Show all the typed keys
         MsgBox sSave
    End Sub


    Вопрос:

       Подскажите, если кто знает, как разбить файл на часть, а потом собрать. Если это в VB вообще возможно.

    Ответ:

    Автор ответа: LUNET Co.

    Конечно, это возможно. Пример можно скачать с VBPLANET. Качай с этого URL: http://www.vbplanet.km.ru/vbp/sources/deliameter.zip.



    Ответ:

    Автор ответа: AndroiD

    Of course, возможно....

    Бинарный доступ к файлам + хороший crc файл для сборки. И немного мозгов :)) Самую малость.

    Open КАКОЙТОФАЙЛ For Binary as #1
    и поехали мучать функции Input и Put.

    Первую - чтобы бинарно читать подопытный файл.
    Вторую - чтобы клепать куски этого файла.

    А в crc файл пишем инфу для сборки. Сколько кусков, исходное имя файла, даты и атрибуты файла и т.п.

    Обычный метод работы с файлами не подойдет. Хочешь узнать почему? Открой любой ЕХЕ Блокнотом и тут же сохрани. Все, можешь стирать этот несчастный ЕХЕ. Он больше никогда не заработает :))


    Вопрос:

       Создал ActiveX Control в котором поместил в массив Image 9 рисунков. При выполнении метода Next компонента отображение рисунков меняется.
    Помещаю свой компонент на форму. Выполняю периодически метод Next. И через случайное количество вызова метода происходит как бы мерцание компонента.

    Как бы избавится от сих бликов?

    Ответ:

    Автор ответа: AndroiD

    Вот как только люди не извращаются....
    Прикрепи к проекту файл ресурса с этими картинками.

    Используй ОДИН PictureBox. Именно его, потому что заставить не мигать ImageBox ты не сможешь. И грузи в него поочередно рисунки из ресурса.


    Вопрос:

       Как можно подключить API функцию из DLL, находяшимся в папке с программой, в частности:
    Public Declare Sub SaveToJpg1 Lib "savtojpg.dll" (ByVal hgd As Long, ByVal FileName As String, ByVal Height As Long, ByVal Width As Long)

    Ответ:

    Автор ответа: Vladimir [PRC]

    Если объявление происходит в модуле формы, то объявляй как Private и главное указывай путь к dll. Например:

    Private Declare Sub SaveToJpg1 Lib App.path & "\savtojpg.dll" (ByVal hgd As Long, ByVal FileName As String, ByVal Height As Long, ByVal Width As Long)

    Но при разработке файл проекта и dll будут находиться в разных местах и поэтому необходимо указывать конкретный путь к dll:

    Private Declare Sub SaveToJpg1 Lib "c:\test\savtojpg.dll" (ByVal hgd As Long, ByVal FileName As String, ByVal Height As Long, ByVal Width As Long)



    Ответ:

    Автор ответа: Tibor

    Public Declare Sub SaveToJpg1 Lib "путь\savtojpg.dll" (ByVal hgd As Long, ByVal FileName As String, ByVal Height As Long, ByVal Width As Long)



    Ответ:

    Автор ответа: AndroiD

    А ты прямо при запуске проги копируй енту DLL'ину в System32.

    Хочешь верь, хочешь нет - VB пытается установить связь с DLL в момент ПЕРВОГО вызова экспортируемой функции. Этот забавный факт я сам установил с полгода назад. Дык вот. Спокойно объявляешь. С чистой совестью. И VB на это плевать. Потом копируешь. А потом вызываешь.

    PS: А вот если это не простой dll (и не золотой), а ActiveX, то просто перед этим его зарегистрируй. (с активом не проверял, врать не буду)




    Можете заполнить эту форму, либо отослать вопрос СЮДА

    Форма для добавления нового вопроса в этот раздел. Информация отсылается по E-mail владельцу сайта.
    Текст сообщения:
    Ваше имя
    E-mail для ответа

    наверх


    Выпуск подготовили:

    Сурменок Павел