반응형

* VBNET 파일 비교 (File Compare) 예제...

 

Main

- 사용한 컨트롤 : Label 5개 , Button 3개 , GroupBox 1개

전체 소스 코드

Form1.vb

 

Public Class Form1

    Private Sub button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button1.Click
        '원본 파일 선택...
        Dim ofd As OpenFileDialog = New OpenFileDialog()

        If ofd.ShowDialog() = Windows.Forms.DialogResult.OK Then
            lblSource.Text = ofd.FileName
        End If

    End Sub

    Private Sub button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button2.Click
        '대상 파일 선택...
        Dim ofd As OpenFileDialog = New OpenFileDialog()

        If ofd.ShowDialog() = Windows.Forms.DialogResult.OK Then
            lblDesc.Text = ofd.FileName
        End If

    End Sub

    Private Sub button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button3.Click
        Dim iFile1byte As Integer
        Dim iFile2byte As Integer
        Dim fs1 As System.IO.FileStream
        Dim fs2 As System.IO.FileStream

        '파일 위치 및 이름이 같으면...
        If lblSource.Text = lblDesc.Text Then
            lblCompare.Text = "같은 파일 입니다."
            Return
        End If

        ' Open the two files.
        fs1 = New System.IO.FileStream(lblSource.Text, System.IO.FileMode.Open)
        fs2 = New System.IO.FileStream(lblDesc.Text, System.IO.FileMode.Open)

        '파일 길이 비교...
        If fs1.Length <> fs2.Length Then
            ' Close the file
            fs1.Close()
            fs2.Close()

            ' Return false to indicate files are different
            lblCompare.Text = "다른 파일 입니다."
            Return
        End If

        Do
            'Read one byte from each file.
            iFile1byte = fs1.ReadByte()
            iFile2byte = fs2.ReadByte()
        Loop While ((iFile1byte = iFile2byte) And (iFile1byte <> -1))

        ' Close the files.
        fs1.Close()
        fs2.Close()

        If (iFile1byte - iFile2byte) = 0 Then
            lblCompare.Text = "같은 파일 입니다."
        End If

    End Sub
End Class

 

 

*예제 결과

 

- 길이 및 읽은 바이트 수가 같으면...

 

 

- 파일 위치 및 이름이 같으면...

 

 

- 파일 길이 및 이름, 읽은 바이트 수가 다르면...

 

 

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

 

[C#] 파일 비교 (File Compare)

* C# 파일 비교 (File Compare) 예제... - 사용한 컨트롤 : Label 5개 , Button 3개 , GroupBox 1개 전체 소스 코드 Form1.cs using System; using System.Collections.Generic; using System.ComponentModel; us..

kdsoft-zeros.tistory.com

 

반응형
반응형

* VBNET 소스코드 동적 컴파일 예제...

 

 

Main

 

전체 소스 코드

Form1.vb

 

Imports System.Runtime.InteropServices
Imports System.CodeDom.Compiler

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

    Protected Overrides Sub OnLoad(ByVal e As System.EventArgs)
        MyBase.OnLoad(e)

        TextBox1.Text = "Imports System " + vbCrLf + _
                        "   Module Module1 " + vbCrLf + _
                        "       Sub Main() " + vbCrLf + _
                        "           System.Console.WriteLine(""Hello World!"")" + vbCrLf + _
                        "           System.Console.WriteLine(""Press the Enter Key to Continue."")" + vbCrLf + _
                        "           System.Console.ReadLine() " + vbCrLf + _
                        "       End Sub " + vbCrLf + _
                        "   End Module"

    End Sub


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

        Dim cdp As CodeDomProvider = CodeDomProvider.CreateProvider("vb")
        Dim cp As CompilerParameters = New CompilerParameters()

        'Flase : Dll output True : EXE File out put
        cp.GenerateExecutable = True
        'Path Set
        cp.OutputAssembly = "C:\vbnettest.exe"
        Dim cr As CompilerResults = cdp.CompileAssemblyFromSource(cp, TextBox1.Text)

        If cr.Errors.Count > 0 Then
            MessageBox.Show("Compile Error")
            Return
        End If

        ShellExecuteA(Me.Handle, "open", "C:\vbnettest.exe", "", "", 4)

    End Sub

End Class

 

 

*예제 결과

 

반응형
반응형

* VBNET DateTimeFormat yyyy-MM-dd HH:mm:ss - 전역 설정 예제...

 

Main

전체 소스 코드

Form1.vb

 

Imports System.Globalization
Imports System.Threading

Public Class Form1

    Protected Overrides Sub OnLoad(ByVal e As System.EventArgs)
        MyBase.OnLoad(e)

        '전역 설정...
        Dim cti As CultureInfo = CType(CultureInfo.CurrentCulture.Clone(), CultureInfo)
        cti.DateTimeFormat.LongDatePattern = "yyyy-MM-dd"
        cti.DateTimeFormat.LongTimePattern = "HH:mm:ss"
        cti.DateTimeFormat.ShortDatePattern = "yyyy-MM-dd"
        cti.DateTimeFormat.ShortTimePattern = "HH:mm:ss"
        Thread.CurrentThread.CurrentUICulture = cti
        Thread.CurrentThread.CurrentCulture = cti

    End Sub


    Private Sub button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button1.Click
        '전역 설정 했을 경우 2020-03-19 21:47:54 로 나타남.
        '하지 않았을 경우 2020-03-19 오후 9:47:54.
        label1.Text = DateTime.Now.ToString()
        'label1.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")
    End Sub
End Class

 

*예제 결과

 

 

반응형
반응형

* VBNET 설치된 닷넷프레임워크(NET Framework) 리스트 조회 예제...

 

Main

 

전체 소스 코드

Form1.vb

 

Imports Microsoft.Win32

Public Class Form1

    Private Sub button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button1.Click
        'Listview Item 초기화...
        listView1.Items.Clear()

        Using rk As RegistryKey = Registry.LocalMachine.OpenSubKey("SOFTWARE\Microsoft\NET Framework Setup\NDP\")
            Dim iCount As Integer = 0
            Dim strNET As String = ""

            '하위 레지스트리 검색...
            For Each strRegName As String In rk.GetSubKeyNames()
                Dim lvi As ListViewItem = New ListViewItem()

                '문자열이 v로 시작하면...
                If strRegName.StartsWith("v") Then

                    '하위 레지스트리 열기...
                    Using versionKey As RegistryKey = rk.OpenSubKey(strRegName)
                        'Get the .NET Framework version value.
                        Dim strVersion = Convert.ToString(versionKey.GetValue("Version", ""))

                        'strVersion 이 null 이거나 빈 값이면...
                        If String.IsNullOrEmpty(strVersion) Then

                            '하위 레지스트리 검색...
                            For Each strSubKey As String In versionKey.GetSubKeyNames()
                                '하위 레지스트리 열기...
                                Using rkSub As RegistryKey = versionKey.OpenSubKey(strSubKey)
                                    '하위 레지스트리에 version 값 얻어 오기...
                                    Dim strVer As String = Convert.ToString(rkSub.GetValue("Version", ""))
                                    strNET = strVer
                                End Using
                            Next

                        Else '빈값이 아니라면...
                            strNET = strVersion
                        End If

                    End Using

                    'Listview Display...
                    lvi.Text = (iCount + 1).ToString()
                    lvi.SubItems.Add(strNET)
                    listView1.Items.Add(lvi)
                    iCount += 1

                End If

            Next

        End Using

    End Sub

End Class

 

 

설치된 닷넷 프레임워크 버전들 위치는 아래와 같습니다.

 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP

레지스트리 에디터 열기

윈도우 시작 -> 실행 -> regiedit 입력

 

아래의 그림은 레지스트리 에디터를 열고 위치를 직접 찾아가 본 모습입니다. 

NDP 안에 여러개의 v 로 시작 되면서 닷넷프레임워크 버전들이 존재 하고 있는 모습을 볼 수 있습니다.

 

 

*예제 결과

 

 

* 참조 문서 : https://docs.microsoft.com/ko-kr/dotnet/framework/migration-guide/how-to-determine-which-versions-are-installed



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

 

[C#] 설치된 닷넷프레임워크 버전 리스트 조회

*C# 레지스트리를 이용한 설치된 닷넷프레임워크 버전 리스트 조회 예제... 전체 소스 코드 Form1.cs using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using..

kdsoft-zeros.tistory.com

 

반응형
반응형

* VBNET API 이용한 제어판 기본 프린터 (Default Printer) 변경 하기 예제...

 

Main

 

전체 소스 코드

Form1.vb

 

Imports System.Collections
Imports System.Drawing.Printing

Public Class Form1
    'API
    Declare Function SetDefaultPrinter Lib "winspool.drv" Alias "SetDefaultPrinterA" (ByVal pszPrinter As String) As Boolean

    Private Sub button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button1.Click
        '프린터 목록 콜렉션 배열에 담기...
        Dim alList As System.Collections.ArrayList = New System.Collections.ArrayList(PrinterSettings.InstalledPrinters)

        '정렬
        alList.Sort()
        '리스트뷰 아이템 초기화
        listView1.Items.Clear()

        Dim iCount As Integer
        For iCount = 0 To alList.Count - 1 Step iCount + 1
            '프린터 목록 리스트 보여주기...
            Dim lvi As ListViewItem = New ListViewItem()
            lvi.Text = (iCount + 1).ToString()
            lvi.SubItems.Add(alList(iCount).ToString())

            '리스트뷰 아이템에 추가...
            listView1.Items.Add(lvi)
        Next
    End Sub

    Private Sub listView1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles listView1.SelectedIndexChanged
        'Select Printer
        lblSelectPrinter.Text = listView1.FocusedItem.SubItems(1).Text
    End Sub

    Private Sub button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button2.Click
        'Default Printer Set
        If lblSelectPrinter.Text = "" Then Return

        If SetDefaultPrinter(lblSelectPrinter.Text) Then
            MessageBox.Show("Default Printer Set Success...", "확 인", MessageBoxButtons.OK, MessageBoxIcon.Asterisk)
        Else
            MessageBox.Show("Default Printer Set Failed...", "확 인", MessageBoxButtons.OK, MessageBoxIcon.Error)
        End If

    End Sub
End Class

 

 

*예제 결과

 

 

위 그림은 기본 프린터 변경 전 모습으로 윈도우 시작 -> 제어판 -> 장치 및 프린터 로 가보게 되면 기본 프린터가 NesPDF 로 되어 있습니다. 

 

해당 리스트뷰에서 기본 프린터로 지정될 항목을 클릭 한 뒤 Default Printer Set 버튼을 클릭 하여 아래의 그림과 같이

변경 

 

 

 

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

 

[VBNET] 제어판 프린터(Printer) 목록 불러오기

* VBNET 제어판 프린터 목록 불러 오기 예제... 전체 소스 코드 Form1.vb Imports System.Collections Imports System.Drawing.Printing Public Class Form1 Private Sub button1_Click(ByVal sender As System.O..

kdsoft-zeros.tistory.com

 

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

 

[C#] [API] 제어판 기본 프린터(Default Printer) 변경

* C# API 를 이용한 제어판 기본 프린터(Default Printer) 변경 예제... 전체 소스 코드 Form1.cs using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using Sys..

kdsoft-zeros.tistory.com

 

반응형
반응형

*VBNET WMI 를 이용한 실시간 메모리 사용량 체크 (Memory Check) 예제...

- WMI 를 사용하기 위해 참조 -> System.Management dll 을 추가 -> 소스 코드 Imports System.Management

 

Main

 

전체 소스 코드

Form1.vb

 

Imports System.Management

Public Class Form1

    Private Sub button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button1.Click
        'Timer Start
        timer1.Start()
    End Sub

    Private Sub button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button2.Click
        'Timer Stop
        timer1.Stop()
    End Sub

    Private Sub timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles timer1.Tick
        Dim itotalMem As Integer = 0  ' 총 메모리 KB 단위
        Dim itotalMemMB As Integer = 0  ' 총 메모리 MB 단위
        Dim ifreeMem As Integer = 0  ' 사용 가능 메모리 KB 단위
        Dim ifreeMemMB As Integer = 0  ' 사용 가능 메모리 MB 단위

        Dim cls As ManagementClass = New ManagementClass("Win32_OperatingSystem")
        Dim moc As ManagementObjectCollection = cls.GetInstances()

        For Each mo As ManagementObject In moc
            itotalMem = Integer.Parse(mo("TotalVisibleMemorySize").ToString())
            ifreeMem = Integer.Parse(mo("FreePhysicalMemory").ToString())
        Next

        itotalMemMB = itotalMem / 1024  ' 총 메모리 MB 단위 변경	
        ifreeMemMB = ifreeMem / 1024  ' 사용 가능 메모리 MB 단위 변경 Then

        'Progressbar Max Setting...
        pbTotal.Maximum = itotalMemMB
        pbFree.Maximum = itotalMemMB
        pbUse.Maximum = itotalMemMB

        'Label Display
        lblTotal.Text = itotalMemMB.ToString()
        lblFree.Text = ifreeMemMB.ToString()
        lblUse.Text = (itotalMemMB - ifreeMemMB).ToString()

        'Progressbar Display
        pbTotal.Value = itotalMemMB
        pbFree.Value = ifreeMemMB
        pbUse.Value = (itotalMemMB - ifreeMemMB)
    End Sub

End Class

 

 

*예제 결과

 

아래의 그림과 같이 NoxPlayer 를 켜고 난 뒤 게임을 실행 하면서 메모리 사용량이 변화 하는 것을 WMI 를 이용한

프로그램과 작업관리자 화면 을 동시에 비교 해 봤을 때 변화 하는 것을 볼 수 있습니다. 물론 단위가 작업관리자는 GB 로 나오고 WMI 를 이용해 만든 프로그램은 MB 이지만 1024를 한번 더 나누게 되면 단위는 GB 가 됩니다.

 

또한 소스 코드는 int 형 변수로 구현 했지만  Double 형 변수를 써서 구현 하게 되시면 작업 관리자 화면 처럼 소수점 2번째 자리 까지 표현 하면서 나타낼 수 있습니다.

 

 

 




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

 

[C#] [WMI] 실시간 메모리 사용량 체크 (Memory Check) - Progressbar

*C# WMI 를 이용한 실시간 메모리 사용량 체크 (Memory Check) 예제... - WMI 를 사용하기 위해 참조 -> System.Management dll 을 추가 -> 소스 코드 using System.Management 전체 소스 코드 Form1.cs using Sy..

kdsoft-zeros.tistory.com

 

반응형
반응형

* VBNET 제어판 프린터 목록 불러 오기 예제...

 

 Main

 

전체 소스 코드

Form1.vb

 

Imports System.Collections
Imports System.Drawing.Printing

Public Class Form1

    Private Sub button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button1.Click
        '프린터 목록 콜렉션 배열에 담기...
        Dim alList As System.Collections.ArrayList = New System.Collections.ArrayList(PrinterSettings.InstalledPrinters)

        '정렬
        alList.Sort()
        '리스트뷰 아이템 초기화
        listView1.Items.Clear()

        Dim iCount As Integer
        For iCount = 0 To alList.Count - 1 Step iCount + 1
            '프린터 목록 리스트 보여주기...
            Dim lvi As ListViewItem = New ListViewItem()
            lvi.Text = (iCount + 1).ToString()
            lvi.SubItems.Add(alList(iCount).ToString())

            '리스트뷰 아이템에 추가...
            listView1.Items.Add(lvi)
        Next
    End Sub

End Class

 

 

*예제 결과

 

결과 화면

 

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

 

[C#] 제어판 프린터(Printer) 목록 불러오기

* C# 제어판 프린터 (Printer) 목록 불러오기 예제... 전체 소스 코드 Form1.cs using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; usin..

kdsoft-zeros.tistory.com

 

반응형
반응형

* VBNET API 를 이용한 마우스 커서 좌표 이동 및 이동한 위치 자동 클릭 이벤트 예제...

 

Main

전체 소스 코드

Form1.vb

 

Imports System.Runtime.InteropServices

Public Class Form1

    'API선언...
    <DllImport("user32")> _
    Shared Function SetCursorPos(ByVal x As Int32, ByVal y As Int32) As Int32
    End Function
    Declare Sub mouse_event Lib "user32" Alias "mouse_event" (ByVal dwFlags As Integer, _
                                                              ByVal dx As Integer, _
                                                              ByVal dy As Integer, _
                                                              ByVal cButtons As Integer, _
                                                              ByVal dwExtaInfo As Integer)

    <DllImport("user32")> _
    Public Shared Function GetCursorPos(ByRef pt As Point) As Int32
    End Function

    Const MOUSE_LBUTTONDOWN As Integer = &H2
    Const MOUSE_LBUTTONUP As Integer = &H4

    Dim pi As Point = New Point()

    Protected Overrides Sub OnLoad(ByVal e As System.EventArgs)
        MyBase.OnLoad(e)

        timer1.Start()

    End Sub

    Protected Overrides Sub OnClosed(ByVal e As System.EventArgs)
        MyBase.OnClosed(e)

        timer1.Stop()

    End Sub


    Private Sub button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button2.Click
        'Start
        If (IsInt(txtX.Text) = 0) And (IsInt(txtY.Text) = 0) Then
            MessageBox.Show("TextBox Value Not Number !!! Check Please...", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
            txtX.Focus()
            Return
        End If

        'Cursor Location
        SetCursorPos(Convert.ToInt32(txtX.Text), Convert.ToInt32(txtY.Text))

        'Mouse Left Button Click
        mouse_event(MOUSE_LBUTTONDOWN, 0, 0, 0, 0) 'Mouse LEFT Down Event
        mouse_event(MOUSE_LBUTTONUP, 0, 0, 0, 0)   'Mouse LEFT UP Event

    End Sub

    Private Sub button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button1.Click
        'Result
        MessageBox.Show("API Mouse Button Click Success...", "확 인", MessageBoxButtons.OK, MessageBoxIcon.Asterisk)
    End Sub

    Private Sub timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles timer1.Tick

        If GetCursorPos(pi) Then

            lblX.Text = pi.X.ToString()
            lblY.Text = pi.Y.ToString()

        End If

    End Sub

    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

End Class

 

 

*예제 결과

 

결과 화면

 

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

 

[VBNET] [API] 마우스 커서 좌표 얻어오기

* VBNET API 를 이용한 마우스 커서 좌표 얻어 오기 예제... 전체 소스 코드 Form1.vb Imports System.Runtime.InteropServices Public Class Form1 'API 선언... <dllimport("user32")> _ Public Shared Functio..</dllimport("user32")>

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

 

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

 

[C#] [API] Mouse Cursor Move And AutoClick Event

* C# API 를 이용한 마우스 커서 이동 및 마우스 버튼 클릭 이벤트 예제... 전체 소스 코드 Form1.cs - API 선언 함수 : mouse_event , GetCursorPos, SetCursorPos using System; using System.Collections.Gene..

kdsoft-zeros.tistory.com

 

반응형

+ Recent posts