반응형

* 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

 

*예제 결과

 

 

반응형
반응형

* C# DateTime Format yyyy-MM-dd HH:mm:ss - 전역 설정 예제...

 

Main

 

전체 소스 코드

Form1.cs

 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

using System.Globalization;
using System.Threading;

namespace CSharp_GlobalDateTimeFormat
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();

            //전역 설정...
            CultureInfo cti = CultureInfo.CurrentCulture.Clone() as 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";
            System.Threading.Thread.CurrentThread.CurrentCulture = cti;
            System.Threading.Thread.CurrentThread.CurrentUICulture = cti;

        }

        private void button1_Click(object sender, EventArgs e)
        {
            //전역 설정 했을 경우 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");
        }
    }
}

 

 

*예제 결과

 

반응형
반응형

* 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

 

반응형
반응형

*C# 레지스트리를 이용한 설치된 닷넷프레임워크 버전 리스트 조회 예제...

 

Main

 

전체 소스 코드

Form1.cs

 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

using Microsoft.Win32;

namespace CSharp_InstallFrameworkList
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {

            listView1.Items.Clear();

            using (RegistryKey rk = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\NET Framework Setup\NDP\"))
            {
                int iCount=0;
                string strNET="";

                //하위 레지스트리 검색
                foreach(string strRegName in rk.GetSubKeyNames())
                {
                    ListViewItem lvi = new ListViewItem();

                    //문자열이 v로 시작 하면...
                    if(strRegName .StartsWith("v"))
                    {
                        //하위 레지스트리 열기...
                        using (RegistryKey versionKey = rk.OpenSubKey(strRegName))
                        {
                            // Get the .NET Framework version value.
                            string strVersion = (string)versionKey.GetValue("Version", "");

                            //strVersion 이 null 이거나 빈값이면...
                            if (string.IsNullOrEmpty(strVersion))
                            {
                                //하위 레지스트리 검색...
                                foreach (string strSubKey in versionKey.GetSubKeyNames())
                                {
                                    //하위 레지스트리 열기...
                                    using (RegistryKey rkSub = versionKey.OpenSubKey(strSubKey))
                                    {
                                        //하위 레지스트리에 Version 값 얻어오기...
                                        string strVer = (string)rkSub.GetValue("Version", "");
                                        strNET = strVer;
                                    }
                                }
                            }
                            else
                            {
                                strNET = strVersion;
                            }
                        }

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

                    }//if

                }//foreach
            }//using

        }//button1_Click

    }
}

 

 

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

 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

 

설치된 .NET Framework 버전 확인

코드, regedit.exe 또는 PowerShell을 사용하여 Windows 레지스트리를 쿼리하는 방법으로 컴퓨터에 설치된 .NET Framework 버전을 검색합니다.

docs.microsoft.com

 

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

 

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

* VBNET 설치된 닷넷프레임워크(NET Framework) 리스트 조회 예제... 전체 소스 코드 Form1.vb Imports Microsoft.Win32 Public Class Form1 Private Sub button1_Click(ByVal sender As System.Object, ByVal e..

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

 

반응형
반응형

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

 

Main

 

전체 소스 코드

Form1.cs

 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

using System.Drawing.Printing;
using System.Runtime.InteropServices;

namespace CSharp_PrinterList
{
    public partial class Form1 : Form
    {
        [DllImport("winspool.drv")]
        static extern bool SetDefaultPrinter(string name);


        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            //프린터 목록 콜렉션 배열에 담기...
            System.Collections.ArrayList alList = new System.Collections.ArrayList(
                PrinterSettings.InstalledPrinters);

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

            for (int iCount = 0; iCount < alList.Count; iCount++)
            {
                //프린터 목록 리스트 보여주기...
                ListViewItem lvi = new ListViewItem();
                lvi.Text = (iCount + 1).ToString();
                lvi.SubItems.Add(alList[iCount].ToString());

                //리스트뷰 아이템에 추가...
                listView1.Items.Add(lvi);
            }

        }

        private void listView1_SelectedIndexChanged(object sender, EventArgs e)
        {
            //Select Printer
            lblSelectPrinter.Text = listView1.FocusedItem.SubItems[1].Text;
        }

        private void button2_Click(object sender, EventArgs e)
        {
            //Default Printer Set
            if (lblSelectPrinter.Text == "") return;

            if (SetDefaultPrinter(lblSelectPrinter.Text))
            {
                MessageBox.Show("Default Printer Set Success...", "확 인", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
            }
            else
            {
                MessageBox.Show("Default Printer Set Failed...", "확 인", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }

        }
    }
}

 

* 예제 결과

 

 

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

 

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

변경 

 

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

 

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

 

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

* VBNET API 이용한 제어판 기본 프린터 (Default Printer) 변경 하기 예제... 전체 소스 코드 Form1.vb Imports System.Collections Imports System.Drawing.Printing Public Class Form1 'API Declare Function..

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

 

반응형

+ Recent posts