반응형

* VBNET PC 비프음 (Beep) 예제...

 

전체 소스 코드

Form1.vb

 

Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Console.Beep(262, 400)  '도
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Console.Beep(294, 400)  '레
    End Sub

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        Console.Beep(330, 400)  '미
    End Sub

    Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
        Console.Beep(349, 400)  '파
    End Sub

    Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
        Console.Beep(392, 400)  '솔
    End Sub

    Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click
        Console.Beep(440, 400)  '라
    End Sub

    Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button7.Click
        Console.Beep(494, 400)  '시
    End Sub

    Private Sub Button8_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button8.Click
        Console.Beep(523, 400)  '도
    End Sub
End Class

 

반응형
반응형

* VBNET API 윈도우 (Window) 창 찾기 예제...

 

메인화면

전체 소스 코드

Form1.vb

 

Imports System.Runtime.InteropServices

Public Class Form1
    <DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _
     Private Shared Function FindWindow( _
          ByVal lpClassName As String, _
          ByVal lpWindowName As String) As IntPtr
    End Function

    Declare Function SetForegroundWindow Lib "user32" Alias "SetForegroundWindow" (ByVal hwnd As Integer) As Integer
    Declare Function ShowWindowAsync Lib "user32" (ByVal hwnd As Integer, ByVal nCmdShow As Integer) As Integer


    Private Const SW_WINDOW_NORMAL As Integer = 1
    Private Const SW_WINDOW_MINIMIZED As Integer = 2
    Private Const SW_WINDOW_MAXIMIZED As Integer = 3

    Private Sub button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button1.Click
        ' 윈도우 타이틀명으로 핸들을 찾음.
        Dim hWnd As IntPtr = FindWindow(Nothing, TextBox1.Text)

        If Not hWnd.Equals(IntPtr.Zero) Then
            ' 윈도우가 최소화 되어 있다면 활성화 
            ShowWindowAsync(hWnd, SW_WINDOW_NORMAL)

            ' 윈도우에 포커스를 줘서 최상위로 만든다
            SetForegroundWindow(hWnd)
        End If
    End Sub
End Class

* 예제 결과

 

반응형
반응형

* VBNET API 다른 응용 프로그램 실행 시키기 예제 : ShellExecuteA

 

메인화면

전체 소스 코드

Form1.vb

 

Public Class Form1

    Public Declare Function ShellExecuteA Lib "shell32.dll" ( _
    ByVal hWnd As IntPtr, _
    ByVal lpOperation As String, _
    ByVal lpFile As String, _
    ByVal lpParameters As String, _
    ByVal lpDirectory As String, _
    ByVal nShowCmd As Integer) As IntPtr

    Private Sub button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button1.Click
        '탐색기 실행 시키기...
        ShellExecuteA(Me.Handle, "open", "explorer.exe", "", "", 4)
    End Sub

    Private Sub button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button2.Click
        '계산기 실행 시키기...
        ShellExecuteA(Me.Handle, "open", "calc.exe", "", "", 4)
    End Sub

    Private Sub button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button3.Click
        '실행 파일 오픈...
        Dim ofd As OpenFileDialog = New OpenFileDialog

        ofd.Filter = "EXE File (*.exe) | *.exe"

        '실행 파일 열기...
        If ofd.ShowDialog() = Windows.Forms.DialogResult.OK Then
            '선택된 실행 파일 실행...
            ShellExecuteA(Me.Handle, "open", ofd.FileName, "", "", 4)
        End If

    End Sub
End Class

 

 

* 예제 결과

 

 

마지막 실행 파일 오픈 버튼 : 바로기가 또는 EXE 파일을 오픈 하여 그 프로그램이 실행 되는 모습을 보실 수 있습니다.


 

https://kdsoft-zeros.tistory.com/105

 

[C#] [API] 다른 응용 프로그램 실행 시키기 : ShellExecute ()

* C# 다른 응용 프로그램 실행 시키기 예제... 전체 소스 코드 Form1.cs using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using Syste..

kdsoft-zeros.tistory.com

 

반응형
반응형

* VBNET 가변 전달 인자 Params 키워드 예제...

 

메인화면

전체 소스 코드

Form1.vb

 

Public Class Form1

    Private Sub ParamsEx(ByVal strTmp As String, ByVal ParamArray sParam() As String)

        lbList.Items.Add(strTmp)

        '1번째 방법
        'For Each s As String In sParam
        'lbList.Items.Add(s)
        'Next

        '2번째 방법
        For iCount As Integer = 0 To sParam.Length - 1
            lbList.Items.Add(sParam(iCount))
        Next


    End Sub



    Private Sub button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button1.Click
        lbList.Items.Clear()

        '1
        ParamsEx("TEST1", "1")

        lbList.Items.Add("=================")

        '2
        ParamsEx("TEST2", "1", "12")

        lbList.Items.Add("=================")

        '3
        ParamsEx("TEST3", "1", "12", "123")

        lbList.Items.Add("=================")

        '4
        ParamsEx("TEST4", "1", "12", "123", "1234")

        lbList.Items.Add("=================")

        '5
        ParamsEx("TEST5", "1", "12", "123", "12345")
    End Sub
End Class

* 위 ParamsEx 함수에서 보듯이 두번째 전달 인자에 params 키워드를 써서 가변 전달 인자로 받고 있습니다.

  아래의 그림과 같이 첫번째 전달 인자 이후 두번째 부턴 꼭 함수 오버로딩 된 듯한 형태로 나타 납니다.

 

  => 함수 오버로딩 : 간략히 같은 이름의 함수가 전달 인자 및 리턴 인자만 다른 형태

                            Ex) Sub ParamsEx(strTmp As String, s1 As String)

                                Sub ParamsEx(strTmp As String, s1 As String, s2 As String)

                                Sub ParamsEx(strTmp As String, s1 As String, s2 As String, s3 As String)

 

                                위 예제 처럼 함수 오버로딩 하면 아래의 그림 처럼 함수 호출이 되겠습니다.

 

* 예제 결과

 

반응형
반응형

* VBNET Json Parsing 을 이용한 로또 (Lotto) 당첨번호 읽어 오기 예제...

 

메인화면

전체 소스 코드

Form1.vb

 

Imports System.Net 
Imports System.IO 
Imports System.Net.Json 

Public Class Form1 


    Private Function GetHttpLottoString(ByVal strUri As String) As String 
        Dim strResponseText As String = String.Empty 

        Dim request As HttpWebRequest = CType(WebRequest.Create(strUri), HttpWebRequest) 
        request.Method = "GET" 

        '웹리퀘스트 타임아웃  
        request.Timeout = 20 * 1000 ' 20초 
        'request.Headers.Add("Authorization", "BASIC SGVsbG8="); // 헤더 추가 방법 

        '응답 받기... 
        Using hwr As HttpWebResponse = CType(request.GetResponse(), HttpWebResponse) 

            '응답이 정상적으로 이루어 졌으면... 
            If hwr.StatusCode = HttpStatusCode.OK Then 
                Dim respStream As Stream = hwr.GetResponseStream() 

                Using sr As StreamReader = New StreamReader(respStream) 
                    strResponseText = sr.ReadToEnd() 
                End Using 

            Else 
                strResponseText = "" 
            End If 

        End Using 

        Return strResponseText 
    End Function 

    Private Function IsNullString(ByVal str As String) As Boolean 
        Return String.IsNullOrEmpty(str) 
    End Function 

    Private Function IsInt(ByVal ob As Object) As Integer 
        If ob Is Nothing Then 
            Return 0 
        End If 

        Dim iCheck As Integer = 0 
        Dim bCheck As Boolean = Integer.TryParse(ob.ToString(), iCheck) 

        If Not bCheck Then 
            Return 0 
        End If 

        Return iCheck 
    End Function 

    Private Sub button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button2.Click 
        '빈값이거나 null 값이면... 
        If IsNullString(textBox1.Text) Then 
            MessageBox.Show("빈 값일 순 없습니다.") 
            Return 
        End If 

        '숫자가 아니면... 
        If IsInt(textBox1.Text) = 0 Then 
            MessageBox.Show("숫자만 입력 해 주세요.") 
            Return 
        End If 

        '로또 회차 넘버 불러오기... 
        Dim strReturnValue As String = GetHttpLottoString("https://www.dhlottery.co.kr/common.do?method=getLottoNumber&drwNo=" + textBox1.Text) 

        If strReturnValue = "" Then 
            MessageBox.Show("Lotto Number 불러오기 실패...") 
            Return 
        End If 


        'Json 으로 바꾸기... 
        Dim jtr As JsonTextParser = New JsonTextParser() 
        Dim jo As JsonObject = jtr.Parse(strReturnValue) 

        Dim jac As JsonObjectCollection = CType(jo, JsonObjectCollection) 

        '불러오기가 성공 하면... 
        textBox2.Text = "" 
        If jac("returnValue").GetValue().ToString() = "success" Then 
            '텍스트 박스에 뿌려주기... 
            textBox2.Text += "로또 당첨일: " + jac("drwNoDate").GetValue().ToString() + System.Environment.NewLine 
            textBox2.Text += "로또 회차: " + jac("drwNo").GetValue().ToString() + System.Environment.NewLine + System.Environment.NewLine 
            textBox2.Text += "1등 당첨금: " + jac("firstWinamnt").GetValue().ToString() + System.Environment.NewLine 
            textBox2.Text += "1등 당첨 인원: " + jac("firstPrzwnerCo").GetValue().ToString() + " 명" + System.Environment.NewLine 
            textBox2.Text += "누적 상금: " + jac("totSellamnt").GetValue().ToString() + System.Environment.NewLine + System.Environment.NewLine 
            textBox2.Text += "당첨 번호: " + jac("drwtNo1").GetValue().ToString() + _ 
                                        "," + jac("drwtNo2").GetValue().ToString() + _ 
                                        "," + jac("drwtNo3").GetValue().ToString() + _ 
                                        "," + jac("drwtNo4").GetValue().ToString() + _ 
                                        "," + jac("drwtNo5").GetValue().ToString() + _ 
                                        "," + jac("drwtNo6").GetValue().ToString() + System.Environment.NewLine 
            textBox2.Text += "보너스 번호: " + jac("bnusNo").GetValue().ToString() + System.Environment.NewLine 
        End If 


    End Sub 

    Private Sub textBox1_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles textBox1.KeyDown 
        '사용자가 엔터키를 입력 하면... 
        If e.KeyCode = Keys.Enter Then 
            '버튼 이벤트 함수 불러오기 
            button2_Click(Nothing, Nothing) 
        End If 

    End Sub 

End Class

 

 

* 예제 결과

 

결과 화면

 

↓ 참조 문서 

 

https://kdsoft-zeros.tistory.com/98

 

[VBNET] Json File Write & Read 예제...

* VBNET Json 파일 읽고 쓰기 예제... (System.Net.Json.dll) 파일 참조 위 첨부된 파일을 다운 받아 dll 참조 추가를 해줍니다. 오른쪽에 솔루션 탐색기가 나타나지 않는다면, 상단 메뉴 (보기) -> (솔루션탐색..

kdsoft-zeros.tistory.com

https://kdsoft-zeros.tistory.com/77

 

[VBNET] string 을 int 및 double 형으로 변환 하기, string null 체크

* string 문자열을 정수 및 실수 형으로 변환 하기 예제... 전체 소스코드 Form1.vb Public Class Form1 Private Sub button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles butto..

kdsoft-zeros.tistory.com

 

반응형
반응형

* VBNET Json 파일 읽고 쓰기 예제...

(System.Net.Json.dll) 파일 참조 

 

 

System.Net.Json.dll
0.02MB

위 첨부된 파일을 다운 받아 dll 참조 추가를 해줍니다.

오른쪽에 솔루션 탐색기가 나타나지 않는다면, 상단 메뉴 (보기) -> (솔루션탐색기) 를 선택 해 줍니다.

 

My Project 를 마우스 왼쪽 버튼 더블 클릭을 하면 위 그림 처럼 프로젝트 속성으로 들어 갈 수 있습니다.

왼쪽 참조 메뉴를 클릭 -> 추가 버튼을 클릭 합니다.

 

찾아보기 탭에서 System.Net.Json.dll 파일 위치를 찾아가셔서 클릭 후 추가 해 줍니다.

참고로 저 같은 경우 항상 참조 dll 은 프로젝트 생성 폴더에 같이 놔두기에 위와 같이 바로 찾을 수 있음.

 

위 그림 처럼 나오게 되면 System.Net.Json 파일이 참조가 완료 되었습니다.

 

* 예제 메인화면

전체 소스코드

Form1.vb

 

Imports System.Net.Json

Public Class Form1

    '현재 EXE 파일이 생성 되는 폴더 위치
    Dim strLocalPath As String = Application.ExecutablePath.Substring(0, Application.ExecutablePath.LastIndexOf("\"))

    Private Sub button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button1.Click
        'Json Write
        '파일이 존재한다면 삭제...
        If System.IO.File.Exists(strLocalPath + "\\Test.json") Then
            System.IO.File.Delete(strLocalPath + "\\Test.json")
        End If

        'Json Write...
        Dim root As JsonObjectCollection = New JsonObjectCollection()

        'Json Title 정하기 Server_Info
        Dim jacServer As JsonArrayCollection = New JsonArrayCollection("Server_Info")

        'Json Title 에 속한 노드(속성) 만들기
        Dim joc As JsonObjectCollection = New JsonObjectCollection()
        joc.Add(New JsonStringValue("IP", "192.168.0.11"))
        joc.Add(New JsonStringValue("PW", "1231231231"))
        joc.Add(New JsonStringValue("DataBase", "TEST"))
        jacServer.Add(joc)

        Dim jacTest As JsonArrayCollection = New JsonArrayCollection("Test_Info")
        Dim joc2 As JsonObjectCollection = New JsonObjectCollection()
        joc2.Add(New JsonStringValue("X", "100"))
        joc2.Add(New JsonStringValue("Y", "200"))
        joc2.Add(New JsonStringValue("Z", "300"))
        jacTest.Add(joc2)

        '최상위 노드에 속성 노드 추가
        root.Add(jacServer)
        root.Add(jacTest)

        '파일에 쓰기...
        Dim strRoot As String = root.ToString()
        textBox1.Text = strRoot
        System.IO.File.WriteAllText("Test.json", strRoot)

    End Sub

    Private Sub button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button2.Click
        'Json Read

        '파일이 존재 하지 않으면...
        If Not System.IO.File.Exists(strLocalPath + "\\Test.json") Then
            Return
        End If

        'Json Read...
        Dim strReturnValue As String = System.IO.File.ReadAllText("Test.json")
        If strReturnValue = "" Then
            MessageBox.Show("불러오기 실패...")
            Return
        End If

        'Json 으로 바꾸기...
        Dim jtr As JsonTextParser = New JsonTextParser()
        Dim jo As JsonObject = jtr.Parse(strReturnValue)

        Dim jac As JsonObjectCollection = CType(jo, JsonObjectCollection)
        Dim arr1 As JsonArrayCollection = CType(jac("Server_Info"), JsonArrayCollection)
        Dim arr2 As JsonArrayCollection = CType(jac("Test_Info"), JsonArrayCollection)

        textBox2.Text = ""

        '첫번째 속성 읽기...
        For Each joc As JsonObjectCollection In arr1
            textBox2.Text += "Server_Info" + System.Environment.NewLine
            textBox2.Text += "IP: " + joc("IP").GetValue().ToString() + System.Environment.NewLine
            textBox2.Text += "PW: " + joc("PW").GetValue().ToString() + System.Environment.NewLine
            textBox2.Text += "DataBase: " + joc("DataBase").GetValue().ToString() + System.Environment.NewLine
        Next

        textBox2.Text += System.Environment.NewLine

        '두번째 속성 읽기...
        For Each joc2 As JsonObjectCollection In arr2
            textBox2.Text += "Test_Info" + System.Environment.NewLine
            textBox2.Text += "X: " + joc2("X").GetValue().ToString() + System.Environment.NewLine
            textBox2.Text += "Y: " + joc2("Y").GetValue().ToString() + System.Environment.NewLine
            textBox2.Text += "Z: " + joc2("Z").GetValue().ToString() + System.Environment.NewLine
        Next

    End Sub
End Class

 

* 예제 결과

 

Write Button Click

 

 

Read Button Click



https://kdsoft-zeros.tistory.com/97

 

[C#] Json File Write & Read 예제

* C# Json 파일 읽기 쓰기 예제... (System.Net.Json.dll) 파일 참조 위 첨부된 파일을 다운 받아 dll 참조 추가를 해줍니다. 오른쪽에 솔루션 탐색기가 나타나지 않는다면, 상단 메뉴 (보기) -> (솔루션탐색기)..

kdsoft-zeros.tistory.com

 

반응형
반응형

* VBNET 반올림 Math.Round() 

 

'테스트 변수
        Dim dbTmp As Double = 12.5
        '반올림 
        Dim iRound As Integer = Convert.ToInt32(Math.Round(dbTmp, MidpointRounding.AwayFromZero))
        '결과 : iRound = 13 

        '올림 
        Dim iCeiling As Integer = Convert.ToInt32(Math.Ceiling(dbTmp))
        '결과 : iCeiling = 13 

        '내림 
        Dim iTruncate As Integer = Convert.ToInt32(Math.Truncate(dbTmp))
        '결과 : iTruncate = 12 

        'int 형으로 캐스팅 했을 시 
        Dim iTmp As Integer = Convert.ToInt32(dbTmp)
        '결과 : iTmp = 12 


        MessageBox.Show(iRound.ToString() + ", " + iCeiling.ToString() + ", " + iTruncate.ToString() + ", " + iTmp.ToString())

 

 

위 소스코드를 보면 Math.Round() 함수에 인자가 반드시 열거형 인자 MidpointRounding.AwayFromZero

전달 되는 걸 볼 수 있습니다. 만약 열거형 인자  MidpointRounding.AwayFromZero 없다면 소수점 0.5 가 반

올림이 되지 않는 걸 볼 수 있습니다. 

 

다음 표에서 일부 양수 및 음수 값과 함께에서 반올림의 결과 보여 줍니다. MidpointRounding합니다. 숫자를 반올림 하거나 내림 하는 데 자릿수가 소수점 반올림 연산에 영향을 줍니다 후 수는 0입니다. 예를 들어-2.5 수, 소수점 뒤의 숫자는 5입니다. 해당 숫자가 중간점 이기 때문에 사용할 수는 MidpointRounding 값을 반올림 한 결과 확인 합니다.  AwayFromZero 지정 된 경우-3은 전체 자릿수가 0 인 가장 가까운 숫자 이므로 반환 됩니다.  ToEven 지정 하면 전체 자릿수가 0 인 가장 가까운 짝수로는-2가 반환 됩니다.

 

원래 수                                          AwayFromZero                               ToEven

3.5 4 4
2.8 3 3
2.5 3 2
2.1 2 2
-2.1 -2 -2
-2.5 -3 -2
-2.8 -3 -3
-3.5 -4 -4

 

*참조 문서 https://docs.microsoft.com/ko-kr/dotnet/api/system.midpointrounding?view=netframework-4.8



반응형
반응형

* Redim Preserve 및 배열 크기 조절 예제...

 

메인화면

 

전체 소스 코드

Form1.vb

 

Public Class Form1

    Dim strTmp(2) As String

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        strTmp(0) = "Test 1"
        strTmp(1) = "Test 2"
    End Sub

    Private Sub button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button1.Click

        'TextBox 값이 빈 값이면...
        If txtNumber.Text = "" Then
            MessageBox.Show("배열 수 값이 빈 텍스트 일 순 없습니다.", "확 인", MessageBoxButtons.OK, MessageBoxIcon.Asterisk)
            Return
        End If

        'TextBox 값이 숫자가 아닐 경우...
        If IsInt(txtNumber.Text) = 0 Then
            MessageBox.Show("숫자만 입력 해 주세요.", "확 인", MessageBoxButtons.OK, MessageBoxIcon.Asterisk)
            txtNumber.Text = ""
            txtNumber.Focus()
            Return
        End If

        '기본 배열 갯수 보다 이상 으로 숫자 입력 받음...
        If Convert.ToInt32(txtNumber.Text) <= 3 Then
            MessageBox.Show("3 이상 숫자를 입력 해 주세요.", "확 인", MessageBoxButtons.OK, MessageBoxIcon.Asterisk)
            txtNumber.Text = ""
            txtNumber.Focus()
            Return
        End If

        '배열 인덱스 가르킬 변수...
        Dim iIndex As Integer = 2

        txtMsg.Text = ""
        txtMsg.Text += strTmp(0) + System.Environment.NewLine
        txtMsg.Text += strTmp(1) + System.Environment.NewLine

        '두번째 방법 Redim 문 사용 VB6 처럼
        'txtNumber 수 만큼 배열 크기 늘리기 
        '기존 2 개 선언 했던 값 포함 됨 Test 1 과 Test 2 값.
        'ReDim Preserve strTmp(Convert.ToInt32(txtNumber.Text))

        For iCount As Integer = 3 To Convert.ToInt32(txtNumber.Text)
            '첫번째 방법 C# 과 같이 Array 클래스 사용 
            '배열 갯수 증가...
            Array.Resize(strTmp, iCount)

            strTmp(iIndex) = "Test " + iCount.ToString()
            txtMsg.Text += strTmp(iIndex) + System.Environment.NewLine
            iIndex += 1

        Next

    End Sub

    Private Function IsInt(ByVal ob As Object) As Integer
        If ob Is Nothing Then Return 0
        Dim i As Integer
        'int 형 변환
        Dim b As Boolean = Integer.TryParse(ob.ToString(), i)

        If Not b Then Return 0

        Return i
    End Function
    

End Class

* 예제 결과 화면

결과 화면에서 보듯이 예제를 따라 완성 해보면 배열 사이즈를 줄였다 늘렸다 할 수 있습니다.

 

 

https://kdsoft-zeros.tistory.com/77

 

[VBNET] string 을 int 및 double 형으로 변환 하기, string null 체크

* string 문자열을 정수 및 실수 형으로 변환 하기 예제... 전체 소스코드 Form1.vb Public Class Form1 Private Sub button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles butto..

kdsoft-zeros.tistory.com

 

반응형

+ Recent posts