Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

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


Информационный Канал Subscribe.Ru

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


VBNet VBMania
Ссылки:

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

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

       Т.к. лето - период отпусков, то не все читатели рассылки смогли узнать о выпуске нашего нового диска - VBNet CD '07 2004. Поэтому в этом выпуске рассылке анонс диска повторен. Тем, кто уже его видел, просьба сильно не ругаться :)
    Читайте!


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




    VBNet CD

    VBNet.RU представляет новый компакт диск "VBNet CD 07 2004". На диск помещены новые материалы:
    • Софт
      • .NET Framework 1.1 Rus
      • .NET Framework 2.0 Beta 1
      • VS .NET Whidbey Express beta
      • .NET Framework 1.1 SP1
      • .NET Compact Framework 1.0 SP2
      • MSDN October Update
      • Visual Studio 6.0 SP6
      • Spices .NET
      • Report Sharp-Shooter
      • И многое другое...

    • Сайты, рассылки, журналы - Популярные сайты, рассылки, электронные журналы о VB.
      • Сайт VBNet.Ru
      • Сайт Hypertech.Ru
      • И многое другое...

    • Коллекция компонент и DLL - Коллекция лицензионных .NET компонентов.
      • ComponentOne Studio for Mobile Devices
      • ComponentOne WebMarket
      • PanelBar.NET Lite
      • .netCHARTING
      • VbPowerPack Rus

    • Книги
      • Комбинаторика
      • Искусство программирования
      • Защищенный код
      • Applied Microsoft .Net Framework Programming
      • Building Web Services with ASP .NET and .NET Remoting
      • Modeling Web Applications Architectures With UML
      • Managed DirectX Kick Start Graphicsand Game Programming
      • Developing Visual Studio .NET Macros and Add-Ins
      • И многое другое...

    • Справочники
      • Справочник по функциям Windows API
      • Microsoft Agent 2.0
      • Объектная модель FileSystemObject
      • Функции Windows API:Сообщения
      • Функции Visual Basic
      • И многое другое...

    • Эксклюзив
      • Обратная связь с клиентами: делегаты и интерфейсы - Из этой статьи вы узнаете, что такое делегаты и интерфейсы, для чего они нужны, как их можно применять в своих приложениях, а также преимущества того или иного механизма в конкретной задаче.


       В разделе Софт представлен полный набор многочисленных обновлений для .NET. Кроме того, на диске имеется даже экспресс бета версия Visual Studio .NET Whidbey!

       В разделе Книги выложено множество книг о .NET, ASP.NET, Managed DirectX, среди которых присутствуют такие знаменитые книги как "Защищенный код" и "Искусство программирования"!

       Полное содержание диска Вы можете скачать здесь.

       Диск распространяется по почте наложенным платежом.
       Цена: 70 рублей + 40 рублей (за почтовые расходы) = 110 рублей. Действует система скидок для постоянных клиентов.
       Заказать диск можно здесь.

    наверх


    Как ловить нажатие системных клавиш?

    Вопрос:

    Привет, вопросик может у кого под рукой есть кусок кода или по памяти вставите как поймат системные клавиши типа Del, Esc, F5... i t.d.?

    Ответ:

    Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
       MsgBox KeyCode
    End Sub


        .::Savenger::.

    vbKeyDelete, vbKeyEscape, vbKeyF5 и т.д. соответственно.

    А если хочешь хнать побольше таких констант - залезай в Object Browser и ищи это: библиотека VBRUN, Класс KeyCodeConstants

    Или в коде напиши:
    if KeyCode=VBRUN.KeyCodeConstants. (и тут выпадет списочек констант).

        Артем Кривокрисенко

    наверх


    Не подскажите как на сервере по http открыть файл?

    Вопрос:

    Не подскажите как на сервере по http открыть файл (если зараннее извесно какой) и содержимое его записать в textbox

    Ответ:

    Ставь лучше не просто текстбокс а Microsoft RichTextBox, он слова переносит сам.
    И еще понадобится Microsoft Internet Transfer Control.
    А теперь пиши куда надо эту строку:

    RichTextBox1.Text = Inet1.OpenURL("http://komifree.ru/avans/", icString)

        FELIX-RUS

    наверх


    Как поменять местами слова?

    Вопрос:

    Нужно сделать следующее: введя предложение из трех слов в текстбокс, и по нажатию кнопки, в этом предложении два последних слова должны поменяться местами. Как это сделать.

    Ответ:

    Dim masTemp() As String
    masTemp() = Split(Text1.Text, chr$(32))
    Text1.Text = masTemp(0) & " " & masTemp(2) & " " & masTemp(1)

        .::Savenger::.

    наверх


    Как в VB осуществить считывание данных с прибора (по Com-порту)?

    Вопрос:

    Есть прибор, соединённый с компом через СОМ порт. Как в VB осуществить считывание данных с прибора?

    Ответ:

    Делал я такое. Прибор считывал даные 8 пар датчиков а я с компа забирал эти даные и рисовал графики высчитывал нагрузки и все такое (для спортсменов), основная процедура выглядит так:

    'zdesia ja tipa iniciliziruju komport
    'muzno otpravit' komandu komportu i poslat' ustroistvu komandu na peredaciu danih
    Public Sub Komand(COMport, First, Second, What)
         MSComm3.CommPort = Right(COMport, 1)
         MSComm3.Settings = "9600,N,8,1"
         MSComm3.InputLen = 0
         On Error Resume Next
         MSComm3.PortOpen = True ' Open the port.
         If Err Then
            MsgBox "Sаsaja nepriima. Pakeiskite sаsajos numeri."
            'tut vivoditsia soobsenie esli com port zaniat
            'eto bivaet esli Comport = 1 a v jom sidit mishka :)
            Exit Sub
         End If
         eil = Right(What, Len(What) - 4)
         Call Check(eil, CheckSum) 'scitaju cheksumu
         Eilute = "" 'skidivaem strochku, Eilute dolzna bit' global
         MSComm3.Output = Chr$(First) + Chr$(First) + What + Chr$(Second) + Chr$(Second) + CheckSum
         'vistavliaju komandu v komport
    End Sub
      
    'a tut mi prinimaem danie, ves fokus v tom cto v VB string mozet bit\ beskonecnim, poka ram'a hvatit :)
    'dlia cego eto nuzno? Prosto komport prinimaet hren znaet kak :) vsnisle kogda 6 bit kogda 8 i ja resil prosto
    'vigribat' iznego vsio cto est' i skladivat' v strochku a potom ejo analiziruju
    Public Sub MSComm3_OnComm()
    Dim Instring As String
         Select Case MSComm3.CommEvent 'zdem sobitija cto cto to knam prishlo
            Case comEvReceive 'prijom (ostalnie naidesh v MSDN)
                     Instring = MSComm3.Input 'hvataem skoka est' v bufere (bufer automaticiski stanovitsia pustim)
                     Eilute = Eilute & Instring 'sumiruem v beskonecnost' (ja do 1Mb prinimal)
                     l.Text = Eilute
                     a = Right(Instring, 3) 'tut ja iskal simvol konca peredaci poskolku komport nuzno zakrit' pered
    'novim k nemu obraseniem, u menia toka tak polucilos' :) mozet mozno i podrugomu no mne togda bilo ne do krasati :)
    'kak pridumal tak i sdelal :)
                     If Left(a, 1) = Chr$(3) Or (Right(a, 1) = Chr$(3) And Mid(a, 2, 1) = Chr$(3)) Then
                         MSComm3.PortOpen = False
                         Call Rashyk(Eilute) 'otpravliaju na analiz
                     End If
         End Select
    End Sub
    'tut ja dekodiruju info, neznaju kak tam u tia s usloviem no avos' prigoditsia
    Public Sub Rashyk(Eilute)
         Me.MousePointer = 0
         Eilute = Mid(Eilute, 11, Len(Eilute) - 10 - 4)
         DoEvents
         MsgBox "Viskas. Siuntimas baigtas."
         Open Text1.Text + ".SPM" For Output As #2
         Call ReadIni(WorkDir, COMport, Dist1, Dist2, Dist3, Dist4, Dist5, Dist6, Dist7, Dist8)
         Print #2, "[Irashu kiekis]"
         Print #2, kiek.Caption
         Print #2, ""
         Print #2, "[Diskretiskumas]"
         Print #2, disk
         Print #2, ""
         Print #2, "[Atstumai]"
         Print #2, Dist1
         Print #2, Dist2
         Print #2, Dist3
         Print #2, Dist4
         Print #2, Dist5
         Print #2, Dist6
         Print #2, Dist7
         Print #2, Dist8
         Print #2, ""
         Print #2, "[Duomenys]"
         f = ""
         k = 0
         For n = 1 To Len(Eilute) Step 2
             abcd = Mid(Eilute, n, 2)
             a = Left(abcd, 1)
             b = Right(abcd, 1)
             c = a
             If a = "A" Then c = 10
             If a = "B" Then c = 11
             If a = "C" Then c = 12
             If a = "D" Then c = 13
             If a = "E" Then c = 14
             If a = "F" Then c = 15
             d = b
             If b = "A" Then d = 10
             If b = "B" Then d = 11
             If b = "C" Then d = 12
             If b = "D" Then d = 13
             If b = "E" Then d = 14
             If b = "F" Then d = 15
             e = d * 16 + c
             k = k + 1
             f = f + Str(e) + ","
             If k = 3 Then
                 k = 0
                 Print #2, Left(f, Len(f) - 1)
                 f = ""
             End If
         Next n
         Close #2
         Call Grafikas(Text1.Text)
    End Sub

        Kvark

    наверх


    Как узнать размер кэш второго уровня [L2] процессора из VB в Windows XP?

    Вопрос:

    Как узнать размер кэш второго уровня [L2] процессора из VB в Windows XP?

    Ответ:

    Следующий пример выводит размер и скорость кеша L2 в Immediate (для всех процессоров в системе !). Если надо получить информацию о другой машине в сети - замените localhost на соответствующее имя.

    В Project:References надо предварительно выбрать "Microsoft WMI Scripting ... Library"

    Dim WMIService As SWbemServicesEx, Processors As SWbemObjectSet
    Dim Processor As SWbemObjectEx

    Set WMIService = GetObject("winmgmts:\\localhost\root\cimv2")
    Set Processors = WMIService.ExecQuery("Select * from Win32_Processor", ,48)
      
    For Each Processor In Processors
         With Processor
             Debug.Print String(20, "-")
             Debug.Print .Name & ", " & .CurrentClockSpeed & "MHz"
             Debug.Print "L2Cache: " & .L2CacheSize & "Kb L2Speed: " & _
             .L2CacheSpeed & "MHz"
         End With
    Next

    Но работать будет скорее всего только в XP/2K.

        Andrey Shchekin [darXeth]



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

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

    Вопросы:


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

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

       Есть файл (электронной таблицы) со списком учащихся разных классов и школ. В таблице указаны: ФИО, класс, школа (4 школы и в каждой школе разное количество классов и учащихся). Необходимо сформировать по группам в несколько человек (из разных школ и разных классов). Входной файл *.xls, группы сформированные должны записываться на отдельный лист книги *.xls.

    У меня два вопроса:

    1. Как сделать так, чтобы группы формировались из ребят разных классов (например по 2-6 человек)?

    2. Как сделать так, чтобы сформированные группы записывались на отдельный лист в электронной таблице? Например формировали книгу из 25 страниц.

    Есть ли возможность написать все это на VBASIC?


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

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

       У меня есть две таблицы в формате dbf. В одной поля (№ договора, ФИО, и т.д.) в другой множество данных с одинаковым номером договора (№ договора, и т.д.). В первой форме открываются данные из первой таблицы, а потом при нажатии кнопки открывается другая форма, с данными отобранными по выделеному номеру договора.

    Вопрос: Как через элемент DATA или ADODC или программно сделать такой отбор и как привязать результат к элементу Datagrid (т.е. таблице)?


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

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

       В составе программы directx есть программа MSInfo где указаны все сведения о системе и компьютере, и там есть "Сведения о системе-компоненты-Запинающие устройства-диски", пишется описания жестких дисков в том числе и модель жесткого диска.

    Как в VB6 вытащить модель жесткого диска, версии и даты биоса компьютера?


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

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

       В VB6 есть Resource Editor, как сделать смену языков через файл Project1.RES, при выборе установки самой программы или в самой программе при выборе формы свойств?


    Автор вопроса: Николай

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

       Как добавить записи в связанные таблицы реляционной базы данных? Желательно с примером на языке Visual Basic 5.0.


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

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

       Подскажите код для удаления строки из базы в ASP.NET в режиме выполнения.

    Для добавления я использую этот код:

    Dim sqlContactBaza As New
    SqlClient.SqlConnection("server=(local);database=H_dreambib;
    Trusted_Connection=yes")

             '2 Cоздать обьект адаптера данных

             Dim sqlAdapter As New SqlClient.SqlDataAdapter("SELECT * FROM
    NaimKomn", sqlContactBaza)

             '3 Cоздать набор данных

             Dim dsContact As New Data.DataSet

             sqlAdapter.SelectCommand.CommandText = "SELECT * FROM NaimKomn"

      

             'сгенерировать команды для добавления , удаления , обновления данных


             Dim cmdContact As SqlClient.SqlCommandBuilder = New
    SqlClient.SqlCommandBuilder(sqlAdapter)

      

             '4 Заполнить набор данных

             sqlAdapter.Fill(dsContact, "NaimKomn")

             ' Создать новую строку

             Dim RowInsert As Data.DataRow = dsContact.Tables("NaimKomn").NewRow

             'записать значения полей строки

             RowInsert("Komnata") = txtNewKomnt.Text

             'добавить строку к набору данных

             dsContact.Tables("NaimKomn").Rows.Add(RowInsert)

             'записать данные в базу

             sqlAdapter.Update(dsContact.Tables("NaimKomn"))

             Obnovlenie()


    Автор вопроса: C...R...a...S...H

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

       Как сделать на toolbare комбобокс, где можно было бы шрифты выбирать?




    Ответы:


    Вопрос:

       Как средствами VB запустить на выполнение exe файл с параметрами.?
    test.exe c:\file.dbt c:\file2.def

    Ответ:

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

    В form_load программы test берешь переменную Command и делаешь с ней все, что хочешь. Эта и есть вся коммандная строка.
    Иногда возникает trouble с Command - то кавычки лишние появятся, то Command оказывается не строкой...

    If Command <> "" Then
         Dim strCmd As String
         strCmd = CStr(Command)
         If Left(strCmd, 1) = Chr(34) Then strCmd = Mid(strCmd, 2, Len(strCmd) - 2) 'обрезаем кавычки по краям (если есть)
         Call cLine(strCmd)
    End If

    Private Sub cLine(strCL As String)
    'обработка командной строки

    'тут код

    End Sub


    Вопрос:

       Как программно нажать кнопку, скажем PrintScreen или Escape?

    Ответ:

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

    Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal
    dwExtraInfo As Long)
    'bVk - Виртуальный код клавиши для имитации нажатия и отпускания клавиши.
    'bScan - Зарезервировано -- установлено в 0.
    'dwFlags - Комбинация следующих флагов определяет различные способы имитации:
    'KEYEVENTF_EXTENDEDKEY - Префикс скэн-кода с префиксным байтом, имеющим значение &HE0.
    'KEYEVENTF_KEYUP - Клавиша, указанная в bVk будет отпущена. Если этот флажок не определен, клавиша будет нажата.
    'dwExtraInfo - Дополнительное 32-разрядное значение, связанное с событием клавиатуры.
    Const KEYEVENTF_KEYUP = &H2 'событие отпускания клавиши
    Const VK_ADD = &H6B 'клавиша +
    Const VK_CONTROL = &H11 'клавиша Ctrl
    Const VK_TAB = &H9 'клавиша Tab
    Const VK_MENU = &H12 'клавиша Alt
    Const VK_ESCAPE = &H1B 'клавиша Escape
    Const VK_LWIN = &H5B 'левая клавиша, эмулирующая нажатие кнопки ПУСК

    Private Sub ShowStartMenu()
    'Функция эмулирует нажатие Ctrl + Esc
    Call keybd_event(VK_CONTROL, 0, 0, 0) 'Hажимаем Ctrl
    Call keybd_event(VK_ESCAPE, 0, 0, 0) 'Hажимаем Esc
    Call keybd_event(VK_ESCAPE, 0, KEYEVENTF_KEYUP, 0) 'Отпускаем Esc
    Call keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0) 'Отпускаем Ctrl
    End Sub

    Private Sub Command1_Click()
    ShowStartMenu
    End Sub


    --------------------------------------------------------------------------------

    'эмуляция нажатия клавиши Alt
    Call keybd_event(VK_ADD, 0, 0, 0)
    Call keybd_event(VK_ADD, 0, KEYEVENTF_KEYUP, 0)
    'эмуляция нажатия левой кнопки с логотипом Windows
    Call keybd_event(VK_LWIN, 0, 0, 0)
    Call keybd_event(VK_LWIN, 0, KEYEVENTF_KEYUP, 0)
    'Запустить проводник
    Call keybd_event(VK_LWIN, 0, 0, 0)
    Call keybd_event(69, 0, 0, 0)
    Call keybd_event(VK_LWIN, 0, KEYEVENTF_KEYUP, 0)
    'поиск файла
    'Call keybd_event(VK_LWIN, 0, 0, 0)
    'Call keybd_event(70, 0, 0, 0)
    'Call keybd_event(VK_LWIN, 0, KEYEVENTF_KEYUP, 0)


    --------------------------------------------------------------------------------

    Private Const VK_ADD = &H6B
    Private Const VK_ATTN = &HF6
    Private Const VK_BACK = &H8
    Private Const VK_CANCEL = &H3
    Private Const VK_CAPITAL = &H14
    Private Const VK_CLEAR = &HC
    Private Const VK_CONTROL = &H11
    Private Const VK_CRSEL = &HF7
    Private Const VK_DECIMAL = &H6E
    Private Const VK_DELETE = &H2E
    Private Const VK_DIVIDE = &H6F
    Private Const VK_DOWN = &H28
    Private Const VK_END = &H23
    Private Const VK_EREOF = &HF9
    Private Const VK_ESCAPE = &H1B
    Private Const VK_EXECUTE = &H2B
    Private Const VK_EXSEL = &HF8
    Private Const VK_F1 = &H70
    Private Const VK_F10 = &H79
    Private Const VK_F11 = &H7A
    Private Const VK_F12 = &H7B
    Private Const VK_F13 = &H7C
    Private Const VK_F14 = &H7D
    Private Const VK_F15 = &H7E
    Private Const VK_F16 = &H7F
    Private Const VK_F17 = &H80
    Private Const VK_F18 = &H81
    Private Const VK_F19 = &H82
    Private Const VK_F2 = &H71
    Private Const VK_F20 = &H83
    Private Const VK_F21 = &H84
    Private Const VK_F22 = &H85
    Private Const VK_F23 = &H86
    Private Const VK_F24 = &H87
    Private Const VK_F3 = &H72
    Private Const VK_F4 = &H73
    Private Const VK_F5 = &H74
    Private Const VK_F6 = &H75
    Private Const VK_F7 = &H76
    Private Const VK_F8 = &H77
    Private Const VK_F9 = &H78
    Private Const VK_HELP = &H2F
    Private Const VK_HOME = &H24
    Private Const VK_INSERT = &H2D
    Private Const VK_LBUTTON = &H1
    Private Const VK_LCONTROL = &HA2
    Private Const VK_LEFT = &H25
    Private Const VK_LMENU = &HA4
    Private Const VK_LSHIFT = &HA0
    Private Const VK_MBUTTON = &H4 ' NOT contiguous with L RBUTTON
    Private Const VK_MENU = &H12
    Private Const VK_MULTIPLY = &H6A
    Private Const VK_NEXT = &H22
    Private Const VK_NONAME = &HFC
    Private Const VK_NUMLOCK = &H90
    Private Const VK_NUMPAD0 = &H60
    Private Const VK_NUMPAD1 = &H61
    Private Const VK_NUMPAD2 = &H62
    Private Const VK_NUMPAD3 = &H63
    Private Const VK_NUMPAD4 = &H64
    Private Const VK_NUMPAD5 = &H65
    Private Const VK_NUMPAD6 = &H66
    Private Const VK_NUMPAD7 = &H67
    Private Const VK_NUMPAD8 = &H68
    Private Const VK_NUMPAD9 = &H69
    Private Const VK_OEM_CLEAR = &HFE
    Private Const VK_PA1 = &HFD
    Private Const VK_PAUSE = &H13
    Private Const VK_PLAY = &HFA
    Private Const VK_PRINT = &H2A
    Private Const VK_PRIOR = &H21
    Private Const VK_PROCESSKEY = &HE5
    Private Const VK_RBUTTON = &H2
    Private Const VK_RCONTROL = &HA3
    Private Const VK_RETURN = &HD
    Private Const VK_RIGHT = &H27
    Private Const VK_RMENU = &HA5
    Private Const VK_RSHIFT = &HA1
    Private Const VK_SCROLL = &H91
    Private Const VK_SELECT = &H29
    Private Const VK_SEPARATOR = &H6C
    Private Const VK_SHIFT = &H10
    Private Const VK_SNAPSHOT = &H2C
    Private Const VK_SPACE = &H20
    Private Const VK_SUBTRACT = &H6D
    Private Const VK_TAB = &H9
    Private Const VK_UP = &H26
    Private Const VK_ZOOM = &HFB



    Ответ:

    Автор ответа: Хатламаджиян

    Это можно сделать при помоши API-функции keybd_event.
    Простой пример:
    1. Создай обычный проект.
    2. На форме свойство KeyPreview поставь на True
    3. Добавь сделующий код в форму

    Option Explicit
    Private Declare Sub keybd_event Lib "user32.dll" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal
    dwExtraInfo As Long)
    Private Sub Form_KeyPress(KeyAscii As Integer)
         If KeyAscii = vbKeyEscape Then MsgBox "Was pressed ESC key", vbInformation, "Info"
    End Sub
    Private Sub Form_Load()
         keybd_event vbKeyEscape, 0, &H0, 0 ' down
         keybd_event vbKeyEscape, 0, &H2, 0 ' up
    End Sub

    'Для PrintScreen'а используй vbKeyPrint аналогично вышеприведённому примеру.


    Вопрос:

       Как в WORD передвигаться вперёд и назад програмно в VBA ?

    Ответ:

    Автор ответа: Сергеев Олег Михайлович

    Selection.MoveDown Unit:=wdLine, Count:=3

    Или попробуй включить макрос в word на запись и посмотри, что получится.



    Ответ:

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

      Selection.MoveRight Unit:=wdCharacter, Count:=1 ' На символ вправо
      Selection.MoveDown Unit:=wdLine, Count:=1 ' На строчку вниз
      
    Ну и т.д. - запиши макрос, походи с клавиатуры - все увидишь :-)



    Ответ:

    Автор ответа: C...R...a...S...H

    Selection.MoveUp Unit:=wdLine, Count:=10000
    Selection.MoveDown Unit:=wdLine, Count:=10000

    Где count - кол-во строк, на которые надо переместиться.


    Вопрос:

       Как узнать частоту процессора без всяких дополнительных DLL?

    Ответ:

    Автор ответа: Хатламаджиян

    Есть альтернативный вариант. Посмотри в реестре
    "HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\CentralProcessor\0"
    Значение DWORD параметра "~MHz" - частота процессора


    Вопрос:

       Как запустить программу, зная только путь к ярлыку этой программы?

    Ответ:

    Автор ответа: Хатламаджиян

    Надеюсь известен не только путь к ярлыку программы, но и имя ярлыка.
    Короче:

    'Используем только эту функцию
    Private 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
    Const SW_SHOWNORMAL = 1

    'Вот небольшой Sub
    Private Sub CallLink(lName As String, lPath As String)
         ShellExecute Me.hwnd, vbNullString, lName, vbNullString, lPath, SW_SHOWNORMAL
    End Sub
    'Можно путь в ярлыку оставить vbNullString (вместо lPath). Некоторые
    'программы могут правильно запуститься, если вызывать их из других
    'директорий, но лучше не рисковать.


    Вопрос:

       Как прописать в реестр, в раздел Run, какую-то программу?

    Ответ:

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

    Private Const HKEY_LOCAL_MACHINE = &H80000002
    Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
    Private Declare Function RegDeleteValue Lib "advapi32.dll" Alias "RegDeleteValueA" (ByVal hKey As Long, ByVal lpValueName
    As String) As Long
    Private Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String,
    phkResult As Long) As Long
    Private 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
    Private Sub AddToStartup(ByVal sDesc As String, ByVal sFile As String)
    Dim lRegKey As Long
    RegOpenKey HKEY_LOCAL_MACHINE, "Software\Microsoft\Windows\CurrentVersion\Run", lRegKey
    If lRegKey Then
    RegSetValueEx lRegKey, sDesc, 0, 1, ByVal sFile, Len(sApp)
    RegCloseKey lRegKey
    End If
    End Sub
    Private Function DeleteAtStartup(ByVal strValue As String)
    Dim keyhand As Long
    r = RegOpenKey(HKEY_LOCAL_MACHINE, "Software\Microsoft\Windows\CurrentVersion\Run", keyhand)
    r = RegDeleteValue(keyhand, strValue)
    r = RegCloseKey(keyhand)
    End Function

    Private Sub Command1_Click()
    AddToStartup "Моя программа", "C:\soft\MyProg.exe"
    End Sub
    Private Sub Command2_Click()
    DeleteAtStartup "Моя программа"
    End Sub



    Ответ:

    Автор ответа: Хатламаджиян

    Option Explicit
    Public Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String,
    phkResult As Long) As Long
    Private Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal
    lpValueName As String, ByVal lpReserved As Long, lpType As Long, ByVal lpData As String, lpcbData As Long) As Long

    Const HKEY_CLASSES_ROOT As Long = &H80000000
    Const REG_SZ As Long = &H1

    Public Sub RegSetValue(ByRef hKey As Long, ByRef SubKey As String, Optional ByRef KeyName As String = "", Optional ByRef
    KeyValue As String = "")
    Dim hKeyID As Long
    Begin:
    If RegOpenKey(hKey, SubKey, hKeyID) = 0 Then
         If RegSetValueEx(hKeyID, KeyName, 0, REG_SZ, KeyValue, Len(KeyValue)) = 0 Then RegCloseKey hKeyID
    Else
         If RegCreateKey(hKey, SubKey, hKeyID) = 0 Then RegCloseKey hKeyID
         Goto Begin
    End If
    End Sub

    Теперь, где необходимо пишешь следующее:

    RegSetValue HKEY_CURRENT_USER, "Software\Microsoft\Windows\CurrentVersion\Run","qqq","www"

    '"qqq" - некоторое значение (обычно пишут имя прогаммы)
    '"www" - командная строка (полный_путь_к_программы + имя_программы_с_расширением) (если программа находится в системных директориях (System, Windows), то путь к программе можно не писать).




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

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

    наверх


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

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

    http://subscribe.ru/
    http://subscribe.ru/feedback/
    Подписан адрес:
    Код этой рассылки: comp.soft.prog.vbnewsadvices
    Отписаться

    В избранное