Visual Basic: новости сайтов, советы, примеры кодов. Выпуск 179.
Информационный Канал Subscribe.Ru |
Visual Basic: новости сайтов, советы, примеры кодов.
Выпуск 179.
VBNet
VBMania
Голосование: Голосования сайта VBNet.Ru. Результаты голосований передаются на сайт. Проследите, что есть соединение с интернетом. Ссылки: |
Господа!!! читайте MSDN!!! Несколько слов от автора:
Новый выпуск! Присылайте коды!!!!!!
Читайте! Содержание выпуска
Книги
Остальные книги о VB можно найти здесь. наверх Размытие картинки Данный код демонстрирует размытие картинки. На форму поместить Picture1 и в него какую нибудь картинку. Private Type TColorRGB Red As Long Green As Long Blue As Long End Type Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single) If Button <> 1 Then Exit Sub Dim a1 As TColorRGB Dim b1 As TColorRGB Rad = 10 ' ?????? ??????????? For i = y - Rad To y + Rad For j = x - Rad To x + Rad n = 1 - (((j - x) / Rad) ^ 2 + ((i - y) / Rad) ^ 2) If n <= 0 Then GoTo lab1 sr = 0 sg = 0 sb = 0 For o = i - 1 To i + 1 For k = j - 1 To j + 1 a = Picture1.Point(k, o) a1 = LongToRGB(a) sr = a1.Red + sr sg = a1.Green + sg sb = a1.Blue + sb Next Next sr = sr / 9 sg = sg / 9 sb = sb / 9 a = Picture1.Point(j, i) a1 = LongToRGB(a) r = (sr - a1.Red) * (n) + a1.Red g = (sg - a1.Green) * (n) + a1.Green b = (sb - a1.Blue) * (n) + a1.Blue If r < 0 Then r = 0 If g < 0 Then g = 0 If b < 0 Then b = 0 Picture1.PSet (j, i), RGB(r, g, b) lab1: Next Next End Sub Private Function LongToRGB(ByVal Index As Long) As TColorRGB LongToRGB.Red = Index And 255 LongToRGB.Green = (Index And 65280) \ 256 LongToRGB.Blue = (Index And 16711680) \ 65535 End Function наверх Огонь Создайте новый проект, вставьте этот код. Довольно красивый огонь! Option Explicit Private Const x As Long = 25 Private Const y As Long = 60 Dim disp1(x, y) As Long Dim disp2(x, y) As Long Dim fon(x, y) As Long Private Declare Function SetPixel Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal crColor As Long) As Long Dim l As Long Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long) Private Sub Form_Activate() Do Timer DoEvents Loop End Sub Private Sub Timer() PSet (0, 0), 0 Dim i As Integer Dim o As Integer Dim R1 As Integer Dim G1 As Integer Dim B1 As Integer For i = 1 To 2 disp1(Rnd * x / 2 + x / 4, 1) = Rnd * 20000 Next For i = 1 To x - 1 For o = 1 To y - 2 l = (disp1(i - 1, o - 1) + disp1(i, o - 1) + disp1(i + 1, o - 1) + disp1(i - 1, o) _ + disp1(i + 1, o) + disp1(i - 1, o + 1) + disp1(i, o + 1) + disp1(i + 1, o + 1) + disp1(i, o)) / 9.5 LongToColor l, R1, G1, B1 Call SetPixel(Form1.hdc, i + 123, y - o + 32, RGB(R1, G1, B1)) disp2(i, o + 1) = l Next Next CopyMemory disp1(0, 0), disp2(0, 0), (x + 1) * (y + 1) * Len(disp2(0, 0)) End Sub Private Sub LongToColor(Index As Long, R As Integer, G As Integer, B As Integer) R = -((Index > 255) * 255 + (Index >= 0 And Index <= 255) * (Index Mod 256)) G = -((Index > 511) * 255 + (Index >= 256 And Index <= 511) * (Index Mod 256)) B = -((Index > 767) * 255 + (Index >= 512 And Index <= 767) * (Index Mod 256)) End Sub наверх Текст за курсором Надпись за курсором. Создайте новый проект, свойство формы ScaleMode установить в 3-Pixel. На форму установите таймер, интервал подберите опытным путём... Вставьте этот код. Private Declare Function SetWindowPos Lib "user32" (ByVal hWnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long Const HWND_NOTOPMOST = -2 Const HWND_TOPMOST = -1 Const SWP_NOACTIVATE = &H10 Const SWP_NOMOVE = &H2 Const SWP_NOSIZE = &H1 Dim message As String Dim xpos() As Integer Dim ypos() As Integer Private Declare Function BeginPath Lib "gdi32" (ByVal hdc As Long) As Long Private Declare Function EndPath Lib "gdi32" (ByVal hdc As Long) As Long Private Declare Function PathToRegion Lib "gdi32" (ByVal hdc As Long) As Long Private Declare Function SetWindowRgn Lib "user32" (ByVal hWnd As Long, ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long Private Type POINTAPI X As Long Y As Long End Type Dim vv As POINTAPI Dim hRgn As Long Private Sub Form_Load() Me.Move 0, 0, Screen.Width * Screen.TwipsPerPixelX, Screen.Height * Screen.TwipsPerPixelY message = " -<(VIR)>-" ReDim xpos(Len(message)) ReDim ypos(Len(message)) Timer1.Enabled = True Call SetFormPosition(Me.hWnd, True) End Sub Public Sub SetFormPosition(frmHandl As Long, TopPosition As Boolean) If TopPosition Then SetWindowPos frmHandl, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOACTIVATE Or SWP_NOSIZE Or SWP_NOMOVE Else SetWindowPos frmHandl, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOSIZE Or SWP_NOMOVE End If End Sub Private Sub Timer1_Timer() GetCursorPos vv xpos(1) = vv.X ypos(1) = vv.Y For i = Len(message) - 1 To 1 Step -1 xpos(i + 1) = xpos(i) + 20 ypos(i + 1) = ypos(i) Next Font.Name = "Times New Roman" Font.Bold = True Font.Size = 16 BeginPath hdc For i = 1 To Len(message) CurrentX = xpos(i) CurrentY = ypos(i) Print Mid(message, i, 1) Next EndPath hdc hRgn = PathToRegion(hdc) SetWindowRgn hWnd, hRgn, True End Sub наверх Мои программы BalloonMessage for MS Agent BalloonMessage for Microsoft Agent реализует диалог программы с
пользователем, используя при этом технологию Microsoft Agent. OCX реализует три
типа диалоговых окон: InputBox, MsgBox и MsgLabels. Автора: Шатрыкин Иван и Павел Сурменок. наверх Вопрос/Ответ Здесь Вы можете задать вопрос, или ответить на уже имеющиеся вопросы. Вопросы:Автор вопроса: Тим Ответ ожидается по этому адресу Вопрос по работе с Treeview. Можно ли сделать так, что бы плюсик у нода отображался независимо от того, есть внутри дети или нет? Проблема в том, что если не грузить сразу всё дерево из базы, потому что огромное оно, а только по уровням. что бы можно было на событие "Экспанд" загрузить детей и так далее. Без плюсика нет "экспанда". Сейчас выхожу из положения так: просто гружу один чилд в ноде, чтобы плюсик появился, а потом удаляю его перед загрузкой реальных детей. Но это муторное дело, приходится сначала сразу сворачивать нод, что б не прыгало всё дерево вверх-вниз, а потом опять разворачивать. Куча проверок и так далее. Автор вопроса: Андрей Ответ ожидается по этому адресу Люди, ПРОГРАММИСТЫ, скиньте пожалуйста на E – mail (map@buzuluk.esoo.ru) какие-нибудь электронные книги (справки, коды) по VB6 для начинающих. Автор вопроса: AlexSoft Ответ ожидается по этому адресу Нужен контрол или код для такой операции (она сплошь и рядом в броузерах и крупных приложениях): есть два обьекта, разделенные вертикальной линией (например, TreeView и Listbox). Если взятся за эту линию, то можно, пропорционально изменить длину окна каждого элемента. Автор вопроса: Максим Ответ ожидается по этому адресу Написал я, скажем, программу, и хочу что-нибудь получить от того, кто ее использует. Как это устроить? Кто-нибудь может поделится знаниями электронной коммерции? Автор вопроса: Сергей Ответ ожидается по этому адресу У меня вопрос к тем, кто разрабатывал видеоплейеры и т.д. Пытаюсь перевести свой проект из VB6 в NET, и столкнулся с такими проблемами: Имею примерно такой код: End Function Public Structure AVI_FILE_INFO Public dwMaxBytesPerSecond As Integer Public dwFlags As Integer Public dwCaps As Integer Public dwStreams As Integer Public dwSuggestedBufferSize As Integer Public dwWidth As Integer Public dwHeight As Integer Public dwScale As Integer Public dwRate As Integer Public dwLength As Integer Public dwEditCount As Integer Public szFileType As String ' (* 64 - VB6) End Structure .... Dim p As AVI_FILE_INFO dim pfile as Long hr = AVIFileOpen(pfile, "c:\myfile.avi", 0, 0) hr = AVIFileInfo(pfile, p, Len(p)) ....... Вопросы: 1. Размер структуры AVI_FILE_INFO получается 48 байтов, тогда как в VB6 он был 108 байтов. 2. Открыть-то файл могу, а вот получить информацию - нет. А точнее, выскакивает hr<>0 и p не заполняется. Автор вопроса: Anatoliy Ответ ожидается по этому адресу Как сделать так, чтобы форма при активации (по таймеру), "вставала" поверх всех окон? Автор вопроса: Taras Prikhodko Ответ ожидается по этому адресу Как работать со службой сообщений из VB в XP? Автор вопроса: LeCCy Ответ ожидается по этому адресу Как можно создать доступ к БД, которой пользуются 2 проги одновременно, при этом коннект к ним должен быть открытым у обоих? Автор вопроса: Иван Ответ ожидается по этому адресу Есть Access XP. В нем (в одной из форм) надо организовать автоматическую проверку правописания а-ля Word. Т.е. чтобы неправильные слова подчеркивались красной линией. Автор вопроса: Андрей Ответ ожидается по этому адресу Есть программа, в ней в качстве фона формы используются картинки в формате JPG, которые загружаються из указаной папки, при этом нужно эту папочку с картинками поставлять с программой, можно ли какм то образом эти картинки вшить в екзешник, чтобы избавиться от этого неудобства? Автор вопроса: FAS Ответ ожидается по этому адресу Почему когда пишу из массива в файл по For...Next все ок, но тормоза страшные (сами проверьте на файлике метра в три), а Put #1,,TMP -- моментально, но в конец файла дописывается лишний символ с кодом ноль. Функция Left работать отказалась на отрез... Что делать? P.S. То что можно просто скопировать файл test в test.in... Просто код упрощен для понимания, а так данные по идее будут преобразовываться. Заранее благодарен за ответ. Option Explicit Dim Str() As Byte Dim X As Long Dim Y As Long Dim TMP() As Byte Dim M Private Sub Form_Load() Me.Show Me.Refresh DoEvents Open "c:\test" For Binary As #1 X = FileLen("c:\test") ReDim Str(X) ReDim TMP(X) Get #1, , Str Close For Y = 0 To X - 1 Step 0 TMP(Y) = Str(Y) Y = Y + 1 Next Y Open "c:\test.in" For Binary As #1 'Так все ок, но тормозза... For Y = 0 To X - 1 Step 0 Put #1, , TMP(Y) Y = Y + 1 Next Y Close 'Так быстро, но в конец файла дописывается лишний символ 'с кодом 0 Put #1, , TMP MsgBox "OK", , "" End End Sub Автор вопроса: clayman Ответ ожидается по этому адресу Как в Access 97 создать представление из VB6? Автор вопроса: Александр Ответ ожидается по этому адресу Как определить из кода VB, открыт ли файл (файл MS Excel) другим пользователем? Автор вопроса: Dima Ответ ожидается по этому адресу Используя DataReport в VB6 создаю отчет. Надо установить горизонтальную ориентацию страницы. Если изменять размеры в DataReport, то выдается ошибка, что ширина отчета больше ширины бумаги. Как изменить ориентацию бумаги в DataReport или как программно изменять ориентацию бумаги в установках принтера? Автор вопроса: CRAZYDIMA Ответ ожидается по этому адресу Опять кодировки! Почти все почтовые программы кодируют письма используя кодировку charset=Windows-1251, когда же мне необходимо самому дешифровать её - возникают проблемы! В предложенных примерах перевода из одной кодировки в другую не нашел кодировку 1251. Что это за такое? И как с ним бороться? Автор вопроса: Данила Ответ ожидается по этому адресу 1. Как в DAO 3.51 в открытой таблице узнать, какие есть колонки, т.е. их названия? 2. Как в DAO 3.51 определить, сколько записей в таблице? Ответы: Вопрос: Подскажите как работает API функция и как можно записать про помощи неё новое значение в определённую ячейку памяти. Вот как выглядит функция: WriteProcessMemory Lib "kernel32" (ByVal hProcess As Long, lpBaseAddress As Any, lpBuffer As Any, ByVal nSize As Long, lpNumberOfBytesWritten As Long) As Long Объясните, что значат параметры IpBuffer, nSize и lnNumberOfBytesWritten и в какой из них нужно записывать новое значение. И ещё подскажите как работает ReadProcessMemory и объясните её параметры. Очень нужно. Ответ: Автор ответа: Jevgenij WriteProcessMemory: Функция записывает данные в адресном пространстве другого процесса. hProcess - манипулятор процесса, в памятъ которого записываются данные lpBaseAddress - адрес в адресном пространстве другого процесса lpBuffer - буфер с данными, копируемыми в память другого процесса nSize - количество копируемых байт lpNumberOfBytesWritten - заполняется количеством байт, скопированных функцией ReadProcessmemory: Функция читает содержимое памяти из адресного пространства другого процесса. Все параметры те-же, только “наоборот”. Вопрос: А где можно увидеть рабочий пример Чата, типа клиент-клиент? Ответ: Автор ответа: InvisibleMan У меня есть, но только клиент-сервер. А каков принцип работы клиент-клиент? Вопрос: Как создать свой dll для своей проги? Ответ: Автор ответа: InvisibleMan Создаёшь длл проект, в sub main() пишешь: If App.StartMode = vbSModeStandalone Then gfrmperiodselect.Show vbModal End If Пишешь свои процедуры и/или функции в модуле(ях) классов, если используешь API ф-и, то прописывать их желательно в отдельном модуле. Вопрос: 1. Я испольяую базу данных Access, первоначальные таблицы я создал вручную, а можно ли программно создать таблицу в базе данных Access? 2. Как можно сделать так чтобы системный шрифты отображались в элементе СomboList? Ответ: Автор ответа: Данила Dim таблица_журнал As TableDef Set база_место = DBEngine.Workspaces(0) ' создаем базу Set база = база_место.CreateDatabase("baza.mdb", dbLangCyrillic) ' создаем таблицу "men" Set таблица_журнал = база.CreateTableDef("men") ' объявляем колонки для табл "men" Dim fio As Field, ID_work As Field, subject As Field ' дальше идет описание колонок Set fio = таблица_журнал.CreateField("fio", dbText, 100) Set ID_work = таблица_журнал.CreateField("ID_work", dbText, 100) ID_work.AllowZeroLength = True Set subject = таблица_журнал.CreateField("subject", dbMemo) ' теперь добавляем колонки к таблице таблица_журнал.Fields.Append fio таблица_журнал.Fields.Append ID_work таблица_журнал.Fields.Append subject 'добавляем таблицу к базе база.TableDefs.Append таблица_журнал Вопрос: Я работаю с ASP. Как сделать так, чтобы на странице выводились из базы данных не все поля, а например 5. Чтобы внизу страницы соотвественно появлялись вот такие штуки, например: [1][2][3][5][6][7][8][9].И если кликнуть на 3, то соответсвенно выводятся с 11 по 15 статью. Ответ: Автор ответа: Chernov Dmitry Все зависит от того, какую БД ты используешь Если это MS SQL то используй конструкцию Select ... Limit [n,] m которая выводит m записей БД, начиная с n-ной (с первой, если n не указано) MS Access данный параметр SQL запросов не поддерживает, тут придется обходится программными методами (т.е. пробегать первые x записей из запроса без вывода, а потом выводить m записей). Как это оформить программно - поищи в INet, наверняка что нибудь найдешь. Примеров реализации подобного на PHP в INet достаточно, про ASP - не знаю. Вопрос: Есть три запроса , как из них собрать один запрос? запрос: qBal_Chet SELECT Clients.id_Clients, Clients.ClientName, Sum([Kol-vo]*[Cost]) AS ChetSum FROM (CheetToClient LEFT JOIN CheetToClient_tovars ON CheetToClient.id_chet = CheetToClient_tovars.id_chet) RIGHT JOIN Clients ON CheetToClient.id_Clients = Clients.id_Clients GROUP BY Clients.id_Clients, Clients.ClientName запрос:qBal_Plat SELECT Clients.id_Clients, Sum(PlatFromClient.PlatSum) AS [Sum-PlatSum] FROM Clients LEFT JOIN PlatFromClient ON Clients.id_Clients = PlatFromClient.id_Clients GROUP BY Clients.id_Clients Запрос: Собирающий два предыдущих SELECT Clients.ClientName, qBal_Chet.ChetSum, qBal_Plat.[Sum-PlatSum], [ChetSum]-[Sum-PlatSum] AS Zadoljennost FROM (qBal_Chet LEFT JOIN qBal_Plat ON qBal_Chet.id_Clients = qBal_Plat.id_Clients) RIGHT JOIN Clients ON qBal_Chet.id_Clients = Clients.id_Clients; Ответ: Автор ответа: CRAZYDIMA Если ты используешь Ассеss, то проблем нет: 1. Создай первый запрос.,сохрани его 2. Второй, если он базируется на первом, то вместо добавления таблиц, добавь первый и делай необходимые выборки и условия. Вопрос: Как вызвать при печати какого-либо текста окно настроек принтера? Ответ: Автор ответа: malex Если я правильно понял, то тебе надо использовать ShowPrinter. Вопрос: Как прописать программу в автозагрузку? Ответ: Автор ответа: Iva Автозагрузка в Windows XP Какие способы автозагрузки существуют? Где найти список программ, загружаемых Windows автоматически? Этим темам и посвящена данная статья.Существует немало способов автозагрузки программ. Ниже приведены несколько вариантов для ознакомления, возможно это поможет вам, если возникнет необходимость найти и удалить какую-либо программу из автозагрузки. Способы автозагрузки: Реестр - в реестре автозагрузка представлена в нескольких местах: [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run] - программы, которые запускаются при входе в систему. Данный раздел отвечает за запуск программ для всех пользователей системы. [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce] - программы, которые запускаются только один раз при входе пользователя в систему. После этого ключи программ автоматически удаляются из данного раздела реестра. Данный раздел отвечает за запуск программ для всех пользователей системы. [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx] - программы, которые запускаются только один раз, когда загружается система. Этот раздел используется при инсталляции программ, например для запуска настроечных модулей. После этого ключи программ автоматически удаляются из данного раздела реестра. Данный раздел отвечает за запуск программ для всех пользователей системы. [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run] - программы, которые запускаются при входе текущего пользователя в систему [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce] - программы, которые запускаются только один раз при входе текущего пользователя в систему. После этого ключи программ автоматически удаляются из данного раздела реестра. [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunServices] - программы, которые загружаются при старте системы до входа пользователя в Windows. [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunServicesOnce] - программы отсюда загружаются только один раз, когда загружается система. Например, чтобы автоматически запускать Блокнот при входе текущего пользователя, открываем Редактор реестра (regedit.exe), переходим в раздел [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run] и добавляем следующий ключ: "NOTEPAD.EXE"="C:\\WINDOWS\\System32\\notepad.exe" Назначенные задания - программы могут запускаться с помощью "Мастера планирования заданий". Посмотреть список установленных заданий, а также добавить новое можно так: "Пуск - Все программы - Стандартные - Служебные - Назначенные задания" - при этом откроется папка ..\WINDOWS\Tasks, в которой отображены назначенные задания. Чтобы добавить новое задание, нужно дважды щелкнуть левой кнопкой мыши по значку "Добавить задание". Запуск программ с помощью этого мастера возможен однократно, при входе в Windows, при включении компьютера, а также по расписанию. Папка "Автозагрузка" - это папка, в которой хранятся ярлыки для программ запускаемых после входа пользователя в систему. Ярлыки в эту папку могут добавляться программами при их установке или пользователем самостоятельно. Существует две папки - общая для всех пользователей и индивидуальная для текущего пользователя. По умолчанию эти папки находятся здесь: ..\Documents and Settings\All Users\Главное меню\Программы\Автозагрузка - это папка, программы из которой будут запускаться для всех пользователей компьютера. ..\Documents and Settings\Username\Главное меню\Программы\Автозагрузка - это папка, программы из которой будут запускаться для текущего пользователя (здесь он назван Username). Посмотреть, какие программы у вас запускаются таким способом можно, открыв меню "Пуск - Все программы - Автозагрузка". Если вы создадите в этой папке ярлык для какой-нибудь программы, она будет запускаться автоматически после входа пользователя в систему. Смена папки автозагрузки - Windows считывает данные о пути к папке "Автозагрузка" из реестра. Этот путь прописан в следующих разделах: [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders] "Common Startup"="%ALLUSERSPROFILE%\Главное меню\Программы\Автозагрузка" - для всех пользователей системы. [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders] "Startup"="%USERPROFILE%\Главное меню\Программы\Автозагрузка" - для текущего пользователя. Сменив путь к папке мы получим автозагрузку всех программ из указанной папки. Например: [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders] "Startup"="c:\mystartup" - система загрузит все программы, ярлыки которых находятся в папке c:\mystartup\, при этом папка "Автозагрузка" все так же будет отображаться в меню "Пуск", а если у пользователя в ней ничего не было, то он и не заметит подмены. Подмена ярлыка для программы из списка автозагрузки - допустим у вас установлен русскоязычный пакет Microsoft Office. Тогда в папке "Автозагрузка" у вас будет находиться ярлык "Быстрый запуск Microsoft Office" - этот ярлык устанавливается туда по умолчанию. Но вовсе необязательно этот ярлык ссылается именно на "Быстрый запуск Microsoft Office" - вместо него может быть запущена любая другая программа, тем более что на функциональности Office это не скажется. Добавление программы к программе запускаемой из списка автозагрузки - модификация предыдущего варианта - одновременно с загрузкой какой-либо программы из списка автозагрузки у вас будет стартовать другая программа - дело в том, что можно "склеить" два исполняемых файла в один и они будут запускаться одновременно. Существуют программы для такой "склейки". Или ярлык может ссылаться на командный файл, из которого и будут запускаться как оригинальная программа из списка, так и добавленные посторонние программы. Посмотреть список автоматически загружаемых программ можно открыв программу "Сведения о системе" (откройте "Пуск - Все программы - Стандартные - Служебные - Сведения о системе" или наберите msinfo32.exe в командной строке) и перейдя в пункт "Программная среда - Автоматически загружаемые программы". Программа "Свойства системы" отображает группы автозагрузки из реестра и папок "Автозагрузка". Другая программа, позволяющая посмотреть список программ автозагрузки - "Настройка системы" (для запуска наберите msconfig.exe из командной строки). Эта программа кроме просмотра списка автозагрузки предоставляет возможность отключения всех пунктов автозагрузки (вкладка "Общие") или выборочных программ (вкладка "Автозагрузка"). Существует множество менеджеров автозагрузки от сторонних разработчиков. Один из таких менеджеров - Startup Extractor, вы можете скачать здесь. Он автоматически сканирует папки автозагрузки, системный реестр, и отображает все найденные программы и файлы в виде списка. Если какая-то программа будет добавлена в список автозагрузки, Startup Extractor сообщит вам об этом и предложит либо оставить эту программу в списке либо удалить ее. При удалении программы из списка Starup Extractor может восстановить ее. Также вы сможете добавлять программы, редактировать параметры программ, сохранять список автозагрузки и многое другое. Программа имеет русский интерфейс, бесплатна, не требует установки. Примечание: Приведенная информация приведена в справочных целях. Вся информация, приведенная выше, относится в первую очередь к опытным пользователям, способным восстановить систему после ошибочных изменений в реестре. Если вы не уверены, что в случае ошибочных действий сможете восстановить систему, не используйте приведенную информацию в практических целях, ошибочные действия при внесении изменений в реестр могут серьезно повредить систему и даже привести к переустановке системы. Начинающие пользователи для добавления программ в список автозагрузки должны использовать только папку "Автозагрузка" или "Мастер назначенных заданий". Вопрос: Только начал изучать VB6. Стоит ли вместо VB6 сразу перейти к VB .NET? Ответ: Автор ответа: .::neo::. Это моё личное мнение: если только начал изучать VB, то лучше перейди сразу на .NET! Ответ: Автор ответа: CRAZYDIMA Это абсолютно разные языки с разными подходами и разной реализациями. Синтаксис остался прежним и всего-то. Если ты мыслишь на VB6 как на родном русском, то не стоит, если еще не привык к нему, то смело изучай новый, то бишь VB .NET. Вопрос: Как, зупустив дос-команду из VB, получить результат обратно в VB, чтобы прога ожидала этого рузультата и только после продолжала выполнение? Ответ: Автор ответа: CRAZYDIMA Проблема, как я понял, в том, что тебе надо синхронно запустить программу, а Вб-эшная Шелл действует противоположэно - запустит программу и идут выполняться следующие за ней операторы?! Выход попробуй такой: Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long Private Const INFINITE = &HFFFF Private Const PROCESS_ALL_ACCESS As Long = &H1F0FFF Public Function ShellWait(ByRef sPathName, ByVal iWindowStyle As VbAppWinStyle) As Boolean Dim vProg As Variant, iProc As Long, iRet As Long On Error GoTo errLabel vProg = Shell(sPathName, iWindowStyle) iProc = OpenProcess(PROCESS_ALL_ACCESS, False, vProg) If iProc <> 0 Then iRet = WaitForSingleObject(iProc, INFINITE) CloseHandle iProc ShellWait = True Else ShellWait = False End If Exit Function errLabel: If Err.Number = 53 Then ' file not found MsgBox "Error", vbCritical + vbOKOnly + vbDefaultButton1 ShellWait = False End If End Function Это функция ожидания заверщения процесса. Запускается таким образом: call ShellWait("notepad.exe", vbNormalFocus) Вопрос: Необходимо загнать данные из файла 46 49 50 51 _ 52 53 54 55 _ 56 57 48 _ 49 50 51 _ 52 53 54 _ 55 56 57 _ 48 81 87 _ в listbox. Пишу так: Dim nl As Integer Dim ks As Integer Private Sub Command1_Click() Dim txt Dim FN As Integer FN = FreeFile Dim FName As String FName = "C:\file0.txt" Open FName For Input As #FN txt = Input(LOF(FN), #FN) Close #FN For n = 1 To Len(txt) ks = ks + 1 If Mid$(txt, n, 1) = "_" Then nl = nl + 1: List1.AddItem (Mid$(txt, n - ks, ks)), nl: ks = 0 End If Next n End Sub Private Sub Form_Load() nl = -1 ks = 0 End Sub Пишет "недопустимый вызов процедуры" в List1.AddItem (Mid$(txt, n - ks, ks)), nl: ks = 0 Ответ: Автор ответа: Илларион List1.AddItem (Mid$(txt, n - ks, ks)), nl: ks = 0 А что ты загоняешь то? Зачем вторые скобки? List1.AddItem Mid$(txt, n - ks, ks) & nl : ks = 0 Если загоняешь вместе с переменной nl, тогда просто лепи их вместе. Вопрос: Вот что у меня есть: Private Sub Command1_Click() On Error GoTo метка MkDir ("c:\Графики") метка: SavePicture Picture1.Image, "c:\Графики\1.bmp" End Sub А как сделать, чтобы при нажатии на кнопку график сохранялся под новым именем? (2.bmp, 3.bmp и т.д.) Ответ: Автор ответа: Денис n=n+1 SavePicture Picture1.Image, "c:\Графики\" & Cstr(n) & ".bmp" Ответ: Автор ответа: В. Язов Private Sub Command1_Click() static n as integer dim sFn as string On Error GoTo метка MkDir ("c:\Графики") метка: sFn="c:\Графики\" n=n+1'Крутим счетчик дальше sFn=sFn & trim$(str(n)) & ".bmp" SavePicture Picture1.Image, sFn End Sub Ответ: Автор ответа: Илларион Private Sub Command1_Click() Dim m As String n=n+1 m ="C:\Графики\ & n & ".bmp" On Error GoTo метка MkDir ("c:\Графики") метка: SavePicture Picture1.Image, m End Sub Только в декларациях объяви переменную n как Integer - Public n As Integer ,иначе n будет постоянно равно 1. Можете заполнить эту форму, либо отослать вопрос СЮДА Форма для добавления нового вопроса в этот раздел. Информация отсылается по E-mail владельцу сайта. |
|||||||||||||||
Выпуск подготовили: |
Сурменок Павел |
http://subscribe.ru/
E-mail: ask@subscribe.ru |
Отписаться
Убрать рекламу |
В избранное | ||