Visual Basic: новости сайтов, советы, примеры кодов. Выпуск 164.
Информационный Канал Subscribe.Ru |
Visual Basic: новости сайтов, советы, примеры кодов.
Выпуск 164.
VBNet
VBMania
Голосование: Ссылки: |
Господа!!! читайте MSDN!!! Несколько слов от автора: Читайте! Содержание выпуска
Книги
Остальные книги о VB можно найти здесь. наверх Конкурс! Здравствуйте, любители Visual Basic! Подведены итоги третьего конкурса на лучшую статью по программированию на Visual Basic. В конкурсе участвовало 10 работ! Спасибо всем, кто принял участие в конкурсе, прислав свои работы, а также тем, кто помогал в выборе победителя, голосовав на сайте. О результатах. Места распределились следующим образом: Первое место:
Ларин Александр "Защита Защиты" Какие же призы мы приготовили авторам? Ларин Александр получает подписку на журнал "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
Последние 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 Новые статьи:
Новые примеры: наверх Один момент из жизни форума: 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 наверх Доска объявлений Ищу телеработу.
наверх Мои программы 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 владельцу сайта. |
|||||||||||||||||||||||||||||||
Выпуск подготовили: |
Сурменок Павел |
http://subscribe.ru/
E-mail: ask@subscribe.ru |
Отписаться
Убрать рекламу |
В избранное | ||