VBNet
VBMania
Голосование: Голосования сайта VBNet.Ru. Результаты голосований передаются на сайт. Проследите, что есть соединение с интернетом. Ссылки: |
Господа!!! читайте MSDN!!! Несколько слов от автора:
Наконец-то в график укладываться начал :)
Читайте! Содержание выпуска
Aslof рекомендует Ищешь фильм? http://subscribe.ru/catalog/rest.cinema.filmforyou Сайт рассылки - http://aslof.balzer.ru/ Как открыть засосавшийся лоток привода? Вопрос: Иногда, Windows XP, после записи компакт диска в Проводнике, лоток привода засасывает. Раньше приходилось перегружать систему, но потом обнаружил что если засосало, то для выбрасывания привода можно воспользоваться NERO. Решил написать для себя маленькую прогу, которая, естественно, использует функцию API mciSendString и поместить ее в панель быстрого запуска. Сказано: сделано! Но вот после очередного засасывания, моя прога не помогла, пришлось опять воспользоваться NERO Вот и вопрос, какими средствами это делает NERO? Ясно что не mciSendString. Ответ:
Public Declare Function DeviceIoControl Lib "kernel32" Alias hDevice можно получить из CreateFile с параметром вроде "\\.\E:" (если у вас CD-Rom - E: и т.д.). Ещё нужна константа
Const IOCTL_STORAGE_MEDIA_REMOVAL = &H2D4804
и тип
Type PREVENT_MEDIA_REMOVAL
Кстати, под 98-ми etc., может быть код
Const IOCTL_MEDIA_REMOVAL = &H74804
Но тут точно не знаю.И eject'ить тоже можно через DeviceIOControl. Andrey Shchekin наверх Как в Access организовать выборку по полю? Вопрос: Написал программулю, которая работает с базой данных на Access'е. Все работает, выборки проходят нормально, но я споткнулся на том, как сделать выборку по полю, формат которого "Дата" Если просто в апострофах брать '01.02.2002' - не проходит (несоответствие типов) Пробовал SQL'вельную функцию To_Date('01.02.2002',dd.mm.yyyy), говорит, что не знает такую функцию Ответ: Дату надо заключать в решётки (#) А чтобы гарантировано прошло преобразование передавать её в американском формате #mm/dd/yyyy# Алексей Вишневский наверх Как сделать участки, имеющие определенный цвет, прозрачными? Вопрос: У меня на форме есть участки с определенным цветом. Как сделать участки, имеющие этот цвет, прозрачными? Ответ: Если VB .NET, то можно указывать цвет точки не только R, G и B компоненты, но и альфа-канал (уровень прозрачности в процентах). Павел Сурменок Через картинку. Других не знаю. Картинку ты всегда можешь подогнать под свою форму. Создай BMP в которой закрась определенным цветом те участки, которые ты хочешь изничтожить (или наоборот). Написал маленький пример для упрощения (см файл "Вырезать форму.zip" Аваков Дмитрий Александрович наверх Как сделать запрос с исключением? Вопрос: Можно в селекте исключить повторяющиеся записи по какому-нибудь полю? Скажем у меня есть несколько записей содержащих одинаковое значение в поле Field1. Мне нужно только значение этого поля, которое я добавлю в список на форме. Хочу отсечь повторения на уровне запроса. Ответ: Select field1 From YouTable Group By field1 Paponov Igor Вот нормальный рабочий запрос: select distinct [ParentID] from [CodeItems] DmitryK1 наверх Как побороть проблемы с кодировкой текста в приложении на VB, использующим БД MS Access? Вопрос: Ситуация. Моё приложение на VB 6 использует файл Access 2000. В полях таблицы этого файла, имеющих тип Text, я без проблем пишу по-русски (весь "офис" у меня с русской поддержкой). Но при "вытаскивании" содержимого этих полей в TextBox'ы приложения получаю лишь набор ?????. На машине у меня windows 98 (английский). Помогите разобраться в причине проблемы. Ответ: По всей видимости, проблема в шрифте TextBox'а. Попробуйте в явном виде задать для него "Кириличный" шрифт, например Courier New Cyr. VMJ наверх Вопрос/Ответ Здесь Вы можете задать вопрос, или ответить на уже имеющиеся вопросы. Вопросы:Автор вопроса: Николай Ответ ожидается по этому адресу Как из VB запустить какую-либо программу (Excel, Word и др.)? Автор вопроса: •Creator• Ответ ожидается по этому адресу У кого-нибудь есть контрол для декодирования музыки с компакта в MP3? Автор вопроса: Andrey Ответ ожидается по этому адресу Есть .ехе с MDI-окном, к ней подкрепляется .dll'ка которая содержит репорты. Как репорты сделать дочерними по отношению .ехе MDI окна? Установка свойства MDIChild у репорта не проходит, выдается 336 ошибка. Автор вопроса: Сивов Игорь Ответ ожидается по этому адресу Как программно определить текущий символ разделитель в международных стандартах (точка или запятая), и какие существую функции чтобы произвести замену программно одно на другое или иное? Автор вопроса: Андрей Ответ ожидается по этому адресу Может быть кто знает как обрабатывать параллельный порт (LPT) средствами Vb? Или,если уже есть где-то такие программы, может подскажете ссылку. Интересует опрос порта и запись в него. Ответы: Вопрос: Подскажите, пожалуйста, как узнать список всех подразделов и параметров реестра определенной ветви. Ответ: Автор ответа: Calhoon Проще создай bas-файл registry и используй его в прогах обычным добавленим модуля: Public Const HKEY_CLASSES_ROOT = &H80000000 Public Const HKEY_CURRENT_USER = &H80000001 Public Const HKEY_LOCAL_MACHINE = &H80000002 Public Const HKEY_USERS = &H80000003 Public Const HKEY_PERFORMANCE_DATA = &H80000004 Public Const ERROR_SUCCESS = 0& ' Registry API prototypes Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long Declare Function RegDeleteKey Lib "advapi32.dll" Alias "RegDeleteKeyA" (ByVal hKey As Long, ByVal lpSubKey As String) As Long Declare Function RegDeleteValue Lib "advapi32.dll" Alias "RegDeleteValueA" (ByVal hKey As Long, ByVal lpValueName As String) As Long Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Long) As Long Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long Public Const REG_SZ = 1 ' Unicode nul terminated string Public Const REG_DWORD = 4 ' 32-bit number Public Sub savekey(hKey As Long, strPath As String) Dim keyhand& r = RegCreateKey(hKey, strPath, keyhand&) r = RegCloseKey(keyhand&) End Sub Public Function getstring(hKey As Long, strPath As String, strValue As String) Dim keyhand As Long Dim datatype As Long Dim lResult As Long Dim strBuf As String Dim lDataBufSize As Long Dim intZeroPos As Integer r = RegOpenKey(hKey, strPath, keyhand) lResult = RegQueryValueEx(keyhand, strValue, 0&, lValueType, ByVal 0&, lDataBufSize) If lValueType = REG_SZ Then strBuf = String(lDataBufSize, " ") lResult = RegQueryValueEx(keyhand, strValue, 0&, 0&, ByVal strBuf, lDataBufSize) If lResult = ERROR_SUCCESS Then intZeroPos = InStr(strBuf, Chr$(0)) If intZeroPos > 0 Then getstring = Left$(strBuf, intZeroPos - 1) Else getstring = strBuf End If End If End If RegCloseKey keyhand End Function Public Sub savestring(hKey As Long, strPath As String, strValue As String, strdata As String) Dim keyhand As Long Dim r As Long r = RegCreateKey(hKey, strPath, keyhand) r = RegSetValueEx(keyhand, strValue, 0, REG_SZ, ByVal strdata, Len(strdata)) r = RegCloseKey(keyhand) End Sub Function getdword(ByVal hKey As Long, ByVal strPath As String, ByVal strValueName As String) As Long Dim lResult As Long Dim lValueType As Long Dim lBuf As Long Dim lDataBufSize As Long Dim r As Long Dim keyhand As Long r = RegOpenKey(hKey, strPath, keyhand) ' Get length/data type lDataBufSize = 4 lResult = RegQueryValueEx(keyhand, strValueName, 0&, lValueType, lBuf, lDataBufSize) If lResult = ERROR_SUCCESS Then If lValueType = REG_DWORD Then getdword = lBuf End If 'Else ' Call errlog("GetDWORD-" & strPath, False) End If r = RegCloseKey(keyhand) End Function Function SaveDword(ByVal hKey As Long, ByVal strPath As String, ByVal strValueName As String, ByVal lData As Long) Dim lResult As Long Dim keyhand As Long Dim r As Long r = RegCreateKey(hKey, strPath, keyhand) lResult = RegSetValueEx(keyhand, strValueName, 0&, REG_DWORD, lData, 4) 'If lResult <> error_success Then Call errlog("SetDWORD", False) r = RegCloseKey(keyhand) End Function Public Function DeleteKey(ByVal hKey As Long, ByVal strKey As String) Dim r As Long r = RegDeleteKey(hKey, strKey) End Function Public Function DeleteValue(ByVal hKey As Long, ByVal strPath As String, ByVal strValue As String) Dim keyhand As Long r = RegOpenKey(hKey, strPath, keyhand) r = RegDeleteValue(keyhand, strValue) r = RegCloseKey(keyhand) End Function Вопрос: Подскажите, пожалуйста, как в этой строке прикреплять аттачи? ShellExecute 0&, "Open", "mailto:" + Ps1_Email + "?Subject=" + Ps2_Subject + "&body=" + Ps3_Body, "", "", SW_SHOWNORMAL Ответ: Автор ответа: •Creator• Попробуйте дописать это: + ";A=" + Chr$(34) + "filename" + Chr$(34) Кстати Chr$(34) - это ковычки ". Их лучше использовать, если будут где-то пробелы... Вопрос: Как в отдельном окне, не связанном с написанной на VB6 программой, открыть программы с расширениями .exe, .doc, .txt, .jpg, .bmp, и др. Ответ: Автор ответа: •Creator• Public Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hWnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long Public Function ShellProgramm(WebAdress As String) ShellProgramm = ShellExecute(0, "open", WebAdress, "", "", 1) End Function Во всей программе используешь так: ShellProgramm("c:\My Documents\file.doc") Вопрос: Что означает ошибка номер 91 "Object variable or With block variable not set"? Как можно её исправить? Ответ: Автор ответа: Calhoon Ответ help'a: (сам переводи =) ) There are two steps to creating an object variable. First you must declare the object variable. Then you must assign a valid reference to the object variable using the Set statement. Similarly, a With...End With block must be initialized by executing the With statement entry point. This error has the following causes and solutions: ћ You attempted to use an object variable that isn't yet referencing a valid object. Specify or respecify a reference for the object variable. For example, if the Set statement is omitted in the following code, an error would be generated on the reference to MyObject: Dim MyObject As Object ' Create object variable. Set MyObject = Sheets(1) ' Create valid object reference. MyCount = MyObject.Count ' Assign Count value to MyCount. ћ You attempted to use an object variable that has been set to Nothing. Set MyObject = Nothing ' Release the object. MyCount = MyObject.Count ' Make a reference to a released object. Respecify a reference for the object variable. For example, use a new Set statement to set a new reference to the object. ћ The object is a valid object, but it wasn't set because the object library in which it is described hasn't been selected in the References dialog box. Select the object library in the Add References dialog box. ћ The target of a GoTo statement is inside a With block. Don't jump into a With block. Make sure the block is initialized by executing the With statement entry point. ћ You specified a line inside a With block when you chose the Set Next Statement command. The With block must be initialized by executing the With statement. Ответ: Автор ответа: Тим Это означает, что эта объектная переменная имеет значение Nothing. В окне просмотра объекта в отладчике это можно увидеть. Я часто использую следующую кострукцию, когда не уверен, что объект существует If Not (myobjectVariable Is Nothing) Then какие то действия с объектом end if или If myobjectVariable Is Nothing Then set myobjectVariable = какой-то объект, который точно не Nothing end if Вопрос: После упаковки готового проекта с помощью Package and Diployment Wizard VB6.0 получаю следующие файлы и папки: C:\Мои документы\My VB6\Установка\*.* SETUP.LST setup.exe Проект1.CAB Проект1.TXT SETUP.LST Плюс Папка "Support" с копиями файлов упаковки проекта и самого проекта. При инсталяции упакованного проекта, после окна: Setup is checking for necessary disk space... (Установка проверяет необходимое дисковое пространство ...) выдается ошибка: C:\WINDOWS\SETUP.LST Invalid line in setup information file! Section: Setup1 Files @Project1.exe,$(AppPath),,$(Shared),12.12.03 10:53:58AM,16384,1.0.0.0 Содержимое файла SETUP.LST: [Bootstrap] SetupTitle=Install SetupText=Copying Files, please stand by. CabFile=Project1.CAB Spawn=Setup1.exe Uninstal=st6unst.exe TmpDir=msftqws.pdw Cabs=1 [Bootstrap Files] File1=@VB6STKIT.DLL,$(WinSysPathSysFile),,,6.18.98 12:00:00 AM,102912,6.0.81.69 File2=@COMCAT.DLL,$(WinSysPathSysFile),$(DLLSelfRegister),,5.31.98 12:00:00 AM,22288,4.71.1460.1 File3=@STDOLE2.TLB,$(WinSysPathSysFile),$(TLBRegister),,5.5.99 10:22:00 PM,17920,2.40.4275.1 File4=@ASYCFILT.DLL,$(WinSysPathSysFile),,,5.5.99 10:22:00 PM,147728,2.40.4275.1 File5=@Olepro32.dll,$(WinSysPathSysFile),$(DLLSelfRegister),,6.8.00 5:00:00 PM,164112,5.0.4515.0 File6=@OLEAUT32.DLL,$(WinSysPathSysFile),$(DLLSelfRegister),,9.19.01 2:47:08 PM,614672,2.40.4515.0 File7=@MSVBVM60.DLL,$(WinSysPathSysFile),$(DLLSelfRegister),,12.9.98 4:28:18 PM,1409024,6.0.82.68 [IconGroups] Group0=Установка программы VB_6 PrivateGroup0=True Parent0=$(Programs) Group1=Установка программы VB6 PrivateGroup1=False Parent1=$(Start Menu) [Установка программы VB_6] Icon1="Проект1.exe" Title1=Установка программы VB_6 StartIn1=$(AppPath) [Setup] Title=Установка программы VB_6 DefaultDir=$(ProgramFiles)\Проект1 AppExe=Проект1.exe AppToUninstall=Проект1.exe [Setup1 Files] File1=@Проект1.exe,$(AppPath),,$(Shared),12.12.03 9:43:30 AM,20480,1.0.0.0 Прошу подсказать, где мною допускается ошибка. Ответ: Автор ответа: Тим 1.C помощью Microsoft Visual Basic откроем проект [Program Files]\Microsoft Visual Studio\VB98\Wizards\PDWizard\Setup1\Setup1.vbp 2.Откроем для редактирования модуль basSetup1 (файл setup1.bas) 3.Внесем изменения в функцию ParseDateTime() Оригинальная функция ParseDateTime() имеет вид: Function ParseDateTime(ByVal strDateTime As String) As Date Dim Var As Variant Var = strDateTime If 0 = VariantChangeTypeEx(VarPtr(Var), VarPtr(Var), &H409, 0, vbDate) Then ParseDateTime = Var Else 'Raise same error as CDate Err.Raise 13 End If End Function Функция ParseDateTime() производит перевод даты из строки в тип Date посредством вызова функции API VariantChangeTypeEx(). В данном случае, VariantChangeTypeEx делает попытку привести Variant-переменную к типу Date без учета установок в Regional Settings, и, соответственно, требует жесткого соблюдения формата записи даты в файле setup.lst ("mm/dd/yy" или "mm/dd/yyyy"). Поскольку P&D Wizard не придерживается этого правила, функция VariantChangeTypeEx() не всегда отрабатывает успешно. Используем для преобразования строки в дату функцию СDate. Эта функция работает более гибко и позволяет использовать в качестве аргумента строку с различными видами разделителей (точка, запятая, '/'). Приведем функцию ParseDateTime() к виду: Function ParseDateTime(ByVal strDateTime As String) As Date ParseDateTime=CDate(strDateTime) End Function 4.Скомпилируем проект (File\Make Setup1.exe:) для создания нового модуля setup1.exe. 5.Перенесем новый setup1.exe папку "...\Wizards\PDWizard\" (именно отсюда он берется P&D Wizard'ом при создания дистрибутива). Теперь можно использовать P&D Wizard для создания дистрибутива на компьютере с разделителями даты/времени устанавливаемыми по умолчанию для России. Или здесь http://www.vbrussian.com/DepWiz.asp полная статья Вопрос: А как в уже имеющийся документ Excel внести данные из VB60 в определенные ячейки (Например D4, E5)? Ответ: Автор ответа: •Creator• Dim numbCell As Integer Dim indCell, myNameCell As String numbCell = 25: indCell = "D" myNameCell = indCell & Trim(Str(numbCell)) ' в переменную myNameCell записали значение "D25" Range(myNameCell).Font.Color = vbRed Range(myNameCell).Value = "Привет" ' установили цвет щрифта - красный ' записали в ячейку "D25" символьную строку: "Привет" Ответ: Автор ответа: C...R...a...S...H Это довольно просто мой_Excel.cell(x,y)="HI" x,y - координаты(числовые) Вопрос: Скажите пожалуйста как прочитать из реестра(!) информацию о текущем видеоадаптере, его название и обезательно(!) в какой ветке реестра он прописан. Например у меня он прописан в: "HKEY_LOCAL_MACHINE\Enum\PCI\VEN_5333&DEV_8A01&SUBSYS_8A015333&REV_01\BUS_00&DEV_0B&FUNC_00" (У меня PCI видео). Это означает что в каждой конкретной системе он прописан в разных местах и просто считать его не получится. Как можно реализовать универсальный метод определение этого самого места в реестре ? Ответ: Автор ответа: •Creator• Используй API, если такая есть... У меня вообще Enum нэту в HKLM Кстати про PCI тоже кое-где в реестре упоминается, хотя таким и не пахнет. У меня там: HKLM\System\ControlSet001\Control\Class\{4df4vd4fvd4vd44d4dfv4d4dv4dfv4d4fvd4vf4dv}\0000\DriverDesc = "SuperGeForce5 1024mb" HKLM\System\ControlSet001\Enum\PCI\VEN_8086&DEV........ тут тоже, да вобще почти во всем реестре эта карточка, где же истина? Вопрос: Купил резак, хочу сделать свой диск с инфой и автораном. Последний на VB. VB недавно начал учить, но есть опыт работы с Паскалем. Расскажи вкратце про это дело, и если знаешь дай пару ссылок. Ответ: Автор ответа: C...R...a...S...H Создаешь программу на форму кидаешь кнопку, в ее коде пишишь: on error goto 1 shell app.path & "/" & "Путь что запускать" exit sub 1: msgbox "Fatal Error" Вопрос: Как в тексте найти двойные кавычки (") ? Ответ: Автор ответа: Calhoon Их код chr(34). Например: if strSymbol = chr(34) then ....... Ответ: Автор ответа: RaZoom instr(<строка>,"""") Можете заполнить эту форму, либо отослать вопрос СЮДА Форма для добавления нового вопроса в этот раздел. Информация отсылается по E-mail владельцу сайта. |
Выпуск подготовили: |
Сурменок Павел |