[ Visual Basic / VBScript (без WEB-кодинга) ] — начинающим: задаем вопросы

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by SuperTroll, 29 Mar 2011.

  1. SuperTroll

    SuperTroll Member

    Joined:
    19 Jul 2010
    Messages:
    36
    Likes Received:
    14
    Reputations:
    4
    В этой специальной теме новички могут задавать "элементарные" вопросы по синтаксису и прочим начинаниям в языке. Аспекты программирования на данном языке под Web рекомендуется обсуждать в соседнем разделе (браузерный VBScript, кодинг под IIS и проч.).
    .
    Moderator.
    __________________________________________





    Не флуди,убьет!​

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


    Запуск файла
    На форму кидаем Process
    Code:
    Process1.StartInfo.FileName = ("C:\WINDOWS\system32\calc.exe")
    Process1.Start()
    Удаление файла
    Code:
    Kill("c:\1.txt")
    Информация о Информация о системе
    Code:
    Label1.Text = My.Computer.Info.OSFullName
    Label2.Text = My.Computer.Info.OSPlatform
    Label3.Text = My.Computer.Info.OSVersion
    Переход на сайт​

    Code:
    System.Diagnostics.Process.Start("www.google.ru")
    Screenshot​

    Code:
          Try
                Dim ScreenSize As Size = New Size(My.Computer.Screen.Bounds.Width, My.Computer.Screen.Bounds.Height)
                Dim screenGrab As New Bitmap(My.Computer.Screen.Bounds.Width, My.Computer.Screen.Bounds.Height)
                Dim q As System.Drawing.Graphics = System.Drawing.Graphics.FromImage(screenGrab)
                q.CopyFromScreen(New Point(0, 0), New Point(0, 0), ScreenSize)
                screenGrab.Save("c:\Screen.jpeg")
            Catch ex As Exception
                MsgBox("Error", MsgBoxStyle.Critical, "Error!")
            End Try
    Снятие процесса
    Code:
            Dim pList() As System.Diagnostics.Process = _
          System.Diagnostics.Process.GetProcessesByName("taskmgr")
            For Each proc As System.Diagnostics.Process In pList
                proc.Kill()
            Next
    Проигрывание музыки
    Только wav формат!
    Code:
      My.Computer.Audio.Play("C:\instal\1.wav", AudioPlayMode.Background)
    Установка курсора в определённую точку
    Code:
    Cursor.Position = New Point(192, 123) 
    Local ip
    На форму кидаем TextBox1
    Code:
    Dim ip As System.Net.IPHostEntry = System.Net.Dns.GetHostEntry(System.Net.Dns.GetHostName)
    TextBox1.Text = ip.AddressList.GetValue(0).ToString
    OpenFileDialog
    На форму кидаем TextBox1 и OpenFileDialog1
    Code:
    OpenFileDialog1.ShowDialog()
    TextBox1.Text = (OpenFileDialog1.FileName)
    ProgressBar​

    На форму кидаем ProgressBar1
    Code:
    ProgressBar1.Value = ProgressBar1.Value + 10
    If ProgressBar1.Value = ProgressBar1.Maximum Then
    MsgBox("Done!")
    End If
    Создание папки
    Code:
    MkDir("c:\Папка")
    Случайные числа​
    Code:
    Dim num As String
    Randomize()
    Dim value As Integer = CInt(Int((9999 * Rnd()) + 1))
    num = (value)
    Закачка файлов из Интернета​
    Code:
    My.Computer.Network.DownloadFile("www.test.ru\1.txt", "c:\Antichat.ru.txt")
    Время​
    Code:
    Label1.Text = CStr(TimeOfDay)
    Ping​
    Code:
    If My.Computer.Network.Ping("www.google.ru", 1000) Then
    MsgBox("Сервер работает.")
    Else
    MsgBox("Сервер не работает.")
    End If
    Переименовываем папку​
    Code:
    My.Computer.FileSystem.MoveDirectory("C:\test", "C:\Antichat.ru", True)
    Проверяем существование файла​
    Code:
            If My.Computer.FileSystem.FileExists("c:\test.txt") Then
    MsgBox("File found.")
    Else
    MsgBox("File not found.")
    End If
    Имя компьютера​
    Code:
    MsgBox(My.Computer.Name)
    Имитируем нажатия клавиш клавиатуры​
    Code:
    My.Computer.Keyboard.SendKeys("A")
    My.Computer.Keyboard.SendKeys("n")
    My.Computer.Keyboard.SendKeys("t")
    My.Computer.Keyboard.SendKeys("i")
    My.Computer.Keyboard.SendKeys("c")
    My.Computer.Keyboard.SendKeys("h")
    My.Computer.Keyboard.SendKeys("a")
    My.Computer.Keyboard.SendKeys("t")
    
    или
    
    My.Computer.Keyboard.SendKeys("Antichat")
    Цвет пикселя под курсором​

    На форму кидаем Label1 и PictureBox1
    Code:
    Dim a As New Drawing.Bitmap(1, 1)
    Dim b As System.Drawing.Graphics = System.Drawing.Graphics.FromImage(a)
    b.CopyFromScreen(New Drawing.Point(Cursor.Position.X, Cursor.Position.Y), New Drawing.Point(0, 0), a.Size)
    Dim c As Drawing.Color = a.GetPixel(0, 0)
    PictureBox1.BackColor = c
    Label1.Text = PictureBox1.BackColor.Name
    Получаем заголовок окна, которое находится в фокусе​

    Объявляем декларации
    Code:
    Declare Function GetForegroundWindow Lib "user32" Alias "GetForegroundWindow" () As Integer
    Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Integer, ByVal lpString As String, ByVal cch As Integer) As Integer
    Code:
    Dim hWndActive As String
    hWndActive = GetForegroundWindow()
    Dim capt As String
    Dim lenC As Integer
    capt = Space(200) 
    lenC = GetWindowText(hWndActive, capt, 255) 
    Label1.Text = capt
    Передаём фокус определённому окну​

    Объявляем декларации
    Code:
    Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowsName As String) As Long
    Private Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As Long
    Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal cCmdShow As Long) As Long
    Code:
    Dim lFoundWindow As Long
    Dim lOK As Long
    Dim lOK1 As Long
    lFoundWindow = FindWindow(vbNullString, "Диспетчер задач Windows")
    If lFoundWindow <> 0 Then
    lOK = SetForegroundWindow(lFoundWindow)
    lOK1 = ShowWindow(lFoundWindow, 9)
    lOK1 = ShowWindow(lFoundWindow, 10)
    lFoundWindow = 0
    lOK = 0
    lOK1 = 0
    End If
    Переключаем раскладку клавиатуры​

    Объявляем декларации
    Code:
    Private Declare Function ActivateKeyboardLayout Lib "user32" (ByVal HKL As Long, ByVal Flags As Long) As Long
    Private Declare Function LoadKeyboardLayout Lib "user32" Alias "LoadKeyboardLayoutA" (ByVal pwszKLID As String, ByVal Flags As Long) As Long
    Const KbdRu = "00000419"
    Const KbdEn = "00000409"
    Ru - En
    Code:
      Dim hLayout As Long
    hLayout = LoadKeyboardLayout(KbdEn, 0)
    ActivateKeyboardLayout(hLayout, 0)
    En - Ru
    Code:
    Dim hLayout As Long
    hLayout = LoadKeyboardLayout(KbdRu, 0)
    ActivateKeyboardLayout(hLayout, 0)
    Считаем MD5 файла​
    функции
    Code:
        Public Function MD5CalcFile(ByVal filepath As String) As String
    Using reader As New System.IO.FileStream(filepath, IO.FileMode.Open, IO.FileAccess.Read)
    Using md5 As New System.Security.Cryptography.MD5CryptoServiceProvider
    Dim hash() As Byte = md5.ComputeHash(reader)
    Return ByteArrayToString(hash)
    End Using
    End Using
    End Function
    
        Private Function ByteArrayToString(ByVal arrInput() As Byte) As String
    Dim sb As New System.Text.StringBuilder(arrInput.Length * 2)
    For i As Integer = 0 To arrInput.Length - 1
    sb.Append(arrInput(i).ToString("X2"))
    Next
    Return sb.ToString().ToLower
    End Function
    Code:
    TextBox1.Text = MD5CalcFile("c:\test.exe")


    MD5 Encrypter
    функции
    Code:
       Public Shared Function MD5(ByVal Text As String, Optional ByVal Seperator As String = Nothing) As String
    Dim Hash As Byte()
    Dim Encoder As New System.Text.UTF8Encoding()
    Dim Hasher As New System.Security.Cryptography.MD5CryptoServiceProvider()
    Hash = Hasher.ComputeHash(Encoder.GetBytes(Text))
    Text = Replace(BitConverter.ToString(Hash), "-", Seperator)
    Return Text
    End Function
    Code:
    TextBox2.Text = MD5(TextBox1.Text) 
    Получаем внешний IP​

    Imports
    Code:
    Imports System.Text.RegularExpressions
    Imports System.Net
    Imports System.IO
    Code:
    Dim FindIP As New System.Net.WebClient
    Label1.Text = System.Text.Encoding.ASCII.GetString((FindIP.DownloadData("http://whatismyip.com/automation/n09230945.asp")))
    FindIP.Dispose()
    Host Name​

    Imports
    Code:
    Imports System.Text.RegularExpressions
    Imports System.Net
    Imports System.IO
    Code:
    Dim HostNameAs String
    HostName= Dns.GetHostName
    Label1.Text = HostName
    CD-ROM​

    декларация
    Code:
    Private Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" (ByVal lpstrCommand As String, ByVal lpstrReturnString As String, ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long
    Открыть дверцу CD-ROM
    Code:
    Call mciSendString("Set CDAudio Door Open Wait", 0&, 0&, 0&)
    Закрываем дверцу CD-ROM
    Code:
    Call mciSendString("Set CDAudio Door Closed Wait", 0&, 0&, 0&)
    Загрузка файла на сервер по FTP
    Code:
        Dim request As System.Net.FtpWebRequest = DirectCast(System.Net.WebRequest.Create("ftp://ftp.narod.ru/file.txt"), System.Net.FtpWebRequest)
            request.Credentials = New System.Net.NetworkCredential("Ваш Login", "Ваш Password")
            request.Method = System.Net.WebRequestMethods.Ftp.UploadFile
            Dim file() As Byte = System.IO.File.ReadAllBytes("c:\file.txt")
            Dim strz As System.IO.Stream = request.GetRequestStream()
            strz.Write(file, 0, file.Length)
            strz.Close()
            strz.Dispose()
    Убираем программу из TaskBar и прячем форму
    Code:
    Me.Hide()
    Me.ShowInTaskbar = False
    
    Продолжение следует…
     
    #1 SuperTroll, 29 Mar 2011
    Last edited by a moderator: 26 Sep 2011
    maza-in, Andrej1928, makag and 2 others like this.
    1. Mr.Replica

      Mr.Replica Member

      Joined:
      18 May 2010
      Messages:
      124
      Likes Received:
      41
      Reputations:
      10
      Эмм,прости конечно,но в чём смысл темы???Для изучающих VB есть отдельные площадки типо Cyberforum и т.д где всё расписанно вдоль и поперег.
       
      1. SuperTroll

        SuperTroll Member

        Joined:
        19 Jul 2010
        Messages:
        36
        Likes Received:
        14
        Reputations:
        4
        кому надо - тот поймёт
         
        1. sidapas23

          sidapas23 New Member

          Joined:
          13 Nov 2010
          Messages:
          88
          Likes Received:
          2
          Reputations:
          -3
          Помогите мне где находятся компоненты кроме стандартных(general) ничего не нашел.
           
          1. SuperTroll

            SuperTroll Member

            Joined:
            19 Jul 2010
            Messages:
            36
            Likes Received:
            14
            Reputations:
            4
            Если для VB6 то:
            [​IMG]
            [​IMG]
            P.S.
            Ставь Visual Studio 2008 или Visual Studio 2010
             
            1. GRAFMC

              GRAFMC New Member

              Joined:
              7 Aug 2011
              Messages:
              5
              Likes Received:
              0
              Reputations:
              0
              зараствуйте, помогите, как сделать так что бы из Textbox1 и Textbox2 введённые даные при нажатии на Button1 отправлялись на мыло/аську. Заранее спасибо.
               
              1. UltraLoh

                UltraLoh New Member

                Joined:
                12 Apr 2011
                Messages:
                1
                Likes Received:
                0
                Reputations:
                0
                Как на ICQ - не знаю, а вот на мыло можно двумя способами:
                1. Создать сайт (Например на hostinger.ru), залить на него PHP скрипт, который при обращении к нему отсылает тексты на Ваше мыло.
                2. Через SMTP-сервер. Пример на gmail.com :
                Code:
                    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
                        Try
                            Dim SmtpServer As New SmtpClient()
                            Dim mail As New MailMessage()
                            SmtpServer.Credentials = New Net.NetworkCredential("твояпочта@gmail.com", "твойпароль")
                            SmtpServer.Port = 587
                            SmtpServer.Host = "smtp.gmail.com"
                            mail = New MailMessage()
                            mail.From = New MailAddress("твояпочта@gmail.com")
                            mail.To.Add("почтаполучателя@gmail.com")
                            mail.Subject = "Тема сообщения"
                            SmtpServer.EnableSsl = True
                            mail.Body = TextBox1.Text & TextBox2.text
                            SmtpServer.Send(mail)
                            MsgBox("Сообщение отправлено")
                        Catch ex As Exception
                            MsgBox("Сообщение не отправлено")
                        End Try
                    End Sub
                    End Sub
                 
                1. rtyy

                  rtyy Member

                  Joined:
                  8 Mar 2008
                  Messages:
                  12
                  Likes Received:
                  7
                  Reputations:
                  -2
                  Почти всё что выше справедливо лишь для VB.NET и никоим образом не относится ни к классическому Visual Basic, ни уж тем более к VBScript.
                   
                  #8 rtyy, 10 Aug 2011
                  Last edited: 10 Aug 2011
                  1. rtyy

                    rtyy Member

                    Joined:
                    8 Mar 2008
                    Messages:
                    12
                    Likes Received:
                    7
                    Reputations:
                    -2
                    VBScript: работа с CD-rom (оригинальный подход).
                    С помощью контрола Windows Media Player, можно не только открыть трей CD-рома, но также успешно и закрыть:
                    Code:
                    openCD()
                    WSCRIPT.SLEEP 2000
                    closeCD()
                    
                    '--------------------
                    'OPEN
                    sub openCD
                            Set WMP = CreateObject ("WMPlayer.OCX")
                                    WMP.cdromCollection.Item(0).Eject()
                    end sub
                    '--------------------
                    'CLOSE
                    sub closeCD
                            Set WMP = CreateObject ("WMPlayer.OCX")
                                    WMP.cdromCollection.Item(0).Eject()
                                    WMP.cdromCollection.Item(0).Eject()
                    end sub
                     
                    1. Qb1024

                      Qb1024 New Member

                      Joined:
                      15 Jul 2009
                      Messages:
                      323
                      Likes Received:
                      4
                      Reputations:
                      0
                      Как отправить бинарный файл на сервер в виде POST запроса?
                      Я понимаю, что нужно использовать WebRequest Class, но как туда засунуть файл?
                       
                      1. aka_maestro

                        aka_maestro Фрикер

                        Joined:
                        11 Jan 2010
                        Messages:
                        388
                        Likes Received:
                        74
                        Reputations:
                        104
                        VB

                        ребят, может и глупо но
                        прошу помощи
                        мой товарищ находящийся на первом курсе требует от меня следующие.
                        я в программировании 1.5% из ста

                        вот задача. я хз что он просит, но сказал выглядит так

                        denny (22:30:20 25/09/2011)
                        кароче "ввести с клавиатуры число в десятичной системе и вывести в шестнадцетиричную" :rolleyes:

                        просьба меня сильно не троллить и не пинать.
                        как я понял вводишь в консоль число, она выдаёт в 16ой системе. помогите с написанием
                         
                        #11 aka_maestro, 25 Sep 2011
                        Last edited: 25 Sep 2011
                        1. justonline

                          justonline network ninja

                          Joined:
                          27 Jul 2011
                          Messages:
                          499
                          Likes Received:
                          60
                          Reputations:
                          53
                          Гугл не?
                          http://www.cyberforum.ru/vba/thread38130.html
                           
                          1 person likes this.
                          1. Demon__666

                            Demon__666 New Member

                            Joined:
                            26 Sep 2011
                            Messages:
                            16
                            Likes Received:
                            1
                            Reputations:
                            0
                            как подключить курсорные клавиши методом if chr(keycode) = "?????"
                             
                            1. Feonor

                              Feonor Elder - Старейшина

                              Joined:
                              23 Jul 2008
                              Messages:
                              128
                              Likes Received:
                              52
                              Reputations:
                              19
                              лови
                              Code:
                              Dim s As String
                              s = = Console.ReadLine()
                              s = s.ToString("X")
                              Console.Writeline(s)
                               
                              #14 Feonor, 21 Oct 2011
                              Last edited: 21 Oct 2011
                              1. Demon__666

                                Demon__666 New Member

                                Joined:
                                26 Sep 2011
                                Messages:
                                16
                                Likes Received:
                                1
                                Reputations:
                                0
                                Помогите

                                каким компонентом можно заменить Panel с 2010 VB в visual basic 6
                                Дело в том что пишу теннис .. написал его в 2010 VB
                                вот код :
                                Public Class Form1
                                Dim Links As Double = 20
                                Dim oben As Double = 20

                                Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
                                Ball.Left -= Links
                                Ball.Top -= oben

                                If Ball.Top <= 0 Then oben = -25
                                If Ball.Bottom >= 325 Then oben = +10
                                If Ball.Left <= -100 Then Links = -20
                                If Ball.Right >= 1000 Then Links = +20
                                Plattform1.Top = MousePosition.Y - Me.Location.Y - 50

                                If Ball.Top > Plattform2.Top Then Plattform2.Top += 15
                                If Ball.Bottom < Plattform2.Bottom Then Plattform2.Top -= 15

                                If Ball.Left <= Plattform1.Right Then
                                If Ball.Bottom >= Plattform1.Top Then Links = -20 Else Label1.Text = "Игрок2 выиграл"
                                End If

                                If Ball.Right >= Plattform2.Left Then
                                If Ball.Bottom >= Plattform2.Top Then Links = +20 Else Label2.Text = "Игрок1 выиграл"
                                End If



                                End Sub

                                Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
                                Timer1.Start()
                                End Sub

                                Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
                                Timer1.Stop()

                                End Sub


                                Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
                                Ball.Top = Location.Y = 156
                                Ball.Top = Location.X = 434
                                Label1.Text = " Игрок1 "
                                Label2.Text = " Игрок2 "
                                End Sub


                                End Class
                                 
                                #15 Demon__666, 27 Oct 2011
                                Last edited: 27 Oct 2011
                                1. De-visible

                                  De-visible [NDC] Network develope c0ders

                                  Joined:
                                  6 Jan 2008
                                  Messages:
                                  916
                                  Likes Received:
                                  550
                                  Reputations:
                                  66
                                  Бля это не яп, а конструктор лего... пздц
                                   
                                  1. C00LPack

                                    C00LPack Elder - Старейшина

                                    Joined:
                                    7 Oct 2010
                                    Messages:
                                    425
                                    Likes Received:
                                    72
                                    Reputations:
                                    19
                                    то же самое я могу сказать про делфи\с#\подставить_нужное.
                                     
                                    1. Feonor

                                      Feonor Elder - Старейшина

                                      Joined:
                                      23 Jul 2008
                                      Messages:
                                      128
                                      Likes Received:
                                      52
                                      Reputations:
                                      19
                                      из MSDN
                                      Используй Frame control

                                      2 De-visible, что то новое для себя открыл? хаха))
                                       
                                      1. cerber3000

                                        cerber3000 Member

                                        Joined:
                                        8 Nov 2008
                                        Messages:
                                        76
                                        Likes Received:
                                        31
                                        Reputations:
                                        2
                                        Здравствуйте задали задчку сделать программу которая создает базу данных работников предприятия (информация должна записываться в файл Acess) что могу сказать по функционалу программы то в ней должно вводиться ФИО работника его дата рождения и адрес и год поступления на работу, также чтобы из этой программы можно было распечатать эту информацию. Если сможите помогите пожалуйста пришлите исходник.
                                         
                                        1. pro100_4ydak

                                          pro100_4ydak New Member

                                          Joined:
                                          2 Sep 2011
                                          Messages:
                                          1
                                          Likes Received:
                                          0
                                          Reputations:
                                          0
                                          VB6.0
                                          задано 4 числа, найти минимальное по модулю число и каждое из заданных чисел умножить на него

                                          Private Sub Command1_Click()
                                          Dim A, B, C, D As Integer
                                          If Abs(A) < Abs(B) And Abs(A) < Abs(C) And Abs(A) < Abs(D) Then
                                          P1 = A * B And P2 = A * C And P3 = A * D
                                          ElseIf Abs(B) < Abs(A) And Abs(B) < Abs(C) And Abs(B) < Abs(D) Then
                                          P4 = B * A And P5 = B * C And P6 = B * D
                                          ElseIf Abs(C) < Abs(A) And Abs(C) < Abs(B) And Abs(C) < Abs(D) Then
                                          P7 = C * A And P8 = C * B And P9 = C * D
                                          Else: P10 = D * A And P11 = D * B And P12 = D * C
                                          End If
                                          End Sub

                                          не работает... при вводе например а=4 b=3 с =1 d=7 в P10 выдается 0, хотя ответы должны быть в P7,8,9
                                           
                                          #20 pro100_4ydak, 8 Dec 2011
                                          Last edited: 8 Dec 2011