반응형

* C# API 를 이용한 마우스 커서 이동 및 마우스 버튼 클릭 이벤트 예제...

 

Main

전체 소스 코드

Form1.cs

 

- API 선언 함수

 : mouse_event , GetCursorPos, SetCursorPos

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.Runtime.InteropServices;

namespace CSharp_MouseClick
{
    public partial class Form1 : Form
    {

        //API 선언
        [DllImport("user32.dll")]
        static extern void mouse_event(uint dwFlags, uint dx, uint dy, uint dwData, int dwExtraInfo);
        [DllImport("user32.dll")] 
        static extern bool GetCursorPos(ref Point lpPoint);
        [DllImport("user32.dll")] 
        static extern int SetCursorPos(int x, int y);


        //변수 선언...
        private const uint MOUSE_LBUTTONDOWN = 0x0002;   // 왼쪽 마우스 버튼 눌림
        private const uint MOUSE_LBUTTONUP = 0x0004;   // 왼쪽 마우스 버튼 떼어짐

        Point pi = new Point();

        public Form1()
        {
            InitializeComponent();
        }

        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);

            timer1.Start();

        }

        protected override void OnClosed(EventArgs e)
        {
            base.OnClosed(e);

            timer1.Stop();

        }

        private void button2_Click(object sender, EventArgs e)
        {
            //Start
            if (IsInt(txtX.Text) == 0 && IsInt(txtY.Text) == 0)
            {
                MessageBox.Show("TextBox Value Not Number !!! Check Please...", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                txtX.Focus();
                return;
            }

            //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
            
        }

        private void button1_Click(object sender, EventArgs e)
        {
            //Result
            MessageBox.Show("API Mouse Button Click Success...", "확 인", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            //Mouse Cursor Location
            if (GetCursorPos(ref pi))
            {
                lblX.Text = pi.X.ToString();
                lblY.Text = pi.Y.ToString();
            }
        }


        private int IsInt(object ob)
        { 
            if (ob == null) return 0; 
            
            int iCheck = 0; 
            bool bCheck = int.TryParse(ob.ToString(), out iCheck); 
            
            if (!bCheck) 
            { 
                return 0; 
            } 

            return iCheck;
        }

        

    }
}

 

 

*예제 결과

 

결과 화면

 

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

 

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

* C# API 를 이용한 마우스 커서 좌표 얻어오기 예제... 전체 소스 코드 Form1.cs using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; us..

kdsoft-zeros.tistory.com

 

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

 

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

* string 문자열을 정수 및 실수 형으로 변환 하기 예제... 전체 소스코드 Form1.cs using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing;..

kdsoft-zeros.tistory.com

 

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

 

[VBNET] [API] Mouse Cursor Move And AutoClick Event

* VBNET API 를 이용한 마우스 커서 좌표 이동 및 이동한 위치 자동 클릭 이벤트 예제... 전체 소스 코드 Form1.vb Imports System.Runtime.InteropServices Public Class Form1 'API선언... <dllimport("user32"..< p=""> </dllimport("user32"..<>

kdsoft-zeros.tistory.com

 

반응형
반응형

* C# API 를 이용한 마우스 커서 좌표 얻어오기 예제...

 

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.Runtime.InteropServices;

namespace CSharp_MouseLocation
{
    public partial class Form1 : Form
    {
       
        [DllImport("user32.dll")]
        // GetCursorPos() makes everything possible
        static extern bool GetCursorPos(ref Point lpPoint);

        Point pi = new Point();

        public Form1()
        {
            InitializeComponent();
        }

        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);

            timer1.Start();

        }

        protected override void OnClosed(EventArgs e)
        {
            base.OnClosed(e);

            timer1.Stop();
        }


        private void timer1_Tick(object sender, EventArgs e)
        {
            
            if (GetCursorPos(ref pi))
            {
                lblX.Text = pi.X.ToString();
                lblY.Text = pi.Y.ToString();
            }
        }
    }
}

*예제 결과

 

결과 화면

 

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

 

반응형
반응형

* C# API 를 이용해 한/영 키 상태 값 구하기 예제...

 

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.Runtime.InteropServices;

namespace CSharp_HangulKeyState
{
    public partial class Form1 : Form
    {
        //API 선언
        [DllImport("imm32.dll")]
        private static   extern IntPtr ImmGetContext(IntPtr hwnd);
        [DllImport("imm32.dll")]
        private static extern bool ImmGetConversionStatus(IntPtr himc, ref int lpdw, ref int lpdw2);


        public Form1()
        {
            InitializeComponent();
            timer1.Start();
        }

        protected override void OnClosed(EventArgs e)
        {
            timer1.Stop();
            base.OnClosed(e);
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            try
            {
                IntPtr hIMC;
                int dwConversion = 0;
                int dwSentence = 0;
                bool bCheck;

                hIMC = ImmGetContext(textBox1 .Handle);
                //TextBox 한영키 상태값 얻기...
                bCheck = ImmGetConversionStatus(hIMC, ref dwConversion, ref dwSentence);

                if (dwConversion == 0)
                {
                    label1.Text = "한영키 상태 : 영문";
                }
                else
                {
                    label1.Text = "한영키 상태 : 한글";
                }

            }
            catch
            {}
        }
    }
}

*예제 결과

 

 

 

 

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

 

[VBNET] [API] 한/영 키 상태 값 구하기

* VBNET API 를 이용한 한/영 키 상태 값 얻어 오기 예제... 전체 소스 코드 Form1.vb Imports System.Runtime.InteropServices Public Class Form1 'API 선언... Private Declare Function ImmGetContext Lib "i..

kdsoft-zeros.tistory.com

 

반응형
반응형

* C# 윈도우 폼(Window Form) 화면 그대로 프린트(Print) 하기 예제...

 

Main

- 화면 구성 : Panel , Listview, Label, Line, GroupBox, printForm

 

위 그림처럼 화면 구성에 printform 을 사용 하기 위해서는 Visual Basic PowerPack dll 이 필요합니다.

 

 

 

전체 소스 코드

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;

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

        private void Form1_Load(object sender, EventArgs e)
        {
            ListView1.Items.Clear();

            for (int iCount = 1; iCount  <= 20; iCount++)
            {
                ListViewItem lvi = new ListViewItem();
                lvi.Text = iCount.ToString();
                lvi.SubItems.Add("TEST " + iCount.ToString());
                ListView1.Items.Add(lvi);
            }
        }
        private void Form1_KeyDown(object sender, KeyEventArgs e)
        {
            //Enter Key Input...
            if (e.KeyCode == Keys.Enter)
            {
                //Form Print 
                printForm1.PrinterSettings.DefaultPageSettings.Landscape = true;
                printForm1.PrinterSettings.DefaultPageSettings.Margins = new System.Drawing.Printing.Margins(50, 50, 50, 50);
                printForm1.Print();
            }
        }

    }
}

 

*예제 결과

 

위 그림 처럼 가상 프린트에 폼(Form) 화면이 그대로 인쇄된 모습을 볼 수 있습니다.

 

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

 

[VBNET] 윈도우 폼(Window Form) - 폼(Form) 화면 그대로 프린트(Print)

* VBNET 윈도우 폼(Window Form) 화면 그대로 프린트(Print) 하기 예제... - 화면 구성 : Panel , Listview, Label, Line, GroupBox, printForm 위 그림처럼 화면 구성에 printform 을 사용 하기 위해서는 Visual..

kdsoft-zeros.tistory.com

 

반응형
반응형

* C# WMI 를 이용한 네트워크 IP 및 Subnet, Gateway Set 예제...

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

 

Main

전체 소스 코드

From1.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.Management;

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

        private void button1_Click(object sender, EventArgs e)
        {
            ManagementClass objMC = new ManagementClass("Win32_NetworkAdapterConfiguration");
            ManagementObjectCollection objMOC = objMC.GetInstances();

            foreach (ManagementObject mo in objMOC)
            {
                if (!(bool)mo["IPEnabled"])
                {
                    continue;
                }
                try
                {
                    ManagementBaseObject objNewIP = null;
                    ManagementBaseObject objSetIP = null;
                    ManagementBaseObject objNewGate = null;
                    objNewIP = mo.GetMethodParameters("EnableStatic");
                    objNewGate = mo.GetMethodParameters("SetGateways");

                    //Set Gateway
                    objNewGate["DefaultIPGateway"] = new string[] { txtGateway.Text  };
                    objNewGate["GatewayCostMetric"] = new int[] { 1 };
                    //Set IP
                    objNewIP["IPAddress"] = new string[] { txtIP.Text  };
                    //Set Subnet
                    objNewIP["SubnetMask"] = new string[] { txtSubnet.Text  };
                    objSetIP = mo.InvokeMethod("EnableStatic", objNewIP, null);
                    objSetIP = mo.InvokeMethod("SetGateways", objNewGate, null);

                    MessageBox.Show("Updated IPAddress, SubnetMask and Default Gateway!");
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Unable to Set IP : " + ex.Message);
                }

            }

        }
    }
}

*예제 결과

 

윈도우 시작 -> 실행 -> cmd -> ipconfig 로 네트워크 IP 확인 가능

 

변경하기 전 IP 
변경 후 네트워크  IP 및 Subnet, Gateway 

 

 

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

 

[C#] [WMI] 네트워크 IP 및 Subnet , Gateway 얻어오기

* C# WMI 를 이용한 네트워크 IP 및 Subnet, Gateway 얻어 오기 예제... 전체 소스 코드 Form1.cs using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using Sys..

kdsoft-zeros.tistory.com

 

반응형
반응형

* C# WMI 를 이용한 네트워크 IP 및 Subnet, Gateway 얻어 오기 예제...

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

 

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.Management;

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

        private void button1_Click(object sender, EventArgs e)
        {
            ManagementClass MC = new ManagementClass("Win32_NetworkAdapterConfiguration");
            ManagementObjectCollection MOC = MC.GetInstances();

            foreach (ManagementObject MO in MOC)
            {
                if (MO["IPAddress"] != null)
                {
                    if (MO["IPAddress"] is Array)
                    {
                        //IP 및 Subnet, Gatway String 배열로 변환...
                        string[] addresses = (string[])MO["IPAddress"];
                        string[] subnets = (string[])MO["IPSubnet"];
                        string[] gateways = (string[])MO["DefaultIPGateway"];

                        //모두 null 이 아니면...
                        if (addresses != null && subnets != null && gateways != null)
                        {
                            lblIP.Text = addresses[0];
                            lblSubnet.Text = subnets[0];
                            lblGateway.Text = gateways[0];
                        }
                    }
                    else
                    {
                        
                    }
                }


            }


        }
    }
}

 

*예제 결과

 

결과화면

윈도우 시작 -> 실행 -> cmd -> ipconfig 를 입력 하시면 위 그림과 같이 네트워크 IP 를 확인 하실 수 있습니다.

 

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

 

[VBNET] [WMI] 네트워크 IP 및 Subnet, Gateway 얻어오기

*VBNET WMI 를 이용한 네트워크 IP 및 Subnet, Gateway 얻어 오기 예제... 전체 소스 코드 Form1.vb Imports System.Management Public Class Form1 Private Sub button1_Click(ByVal sender As System.Object, B..

kdsoft-zeros.tistory.com

 

반응형
반응형

* C# WMI 를 이용한 하드 디스크 온도 체크 예제 (HDD Temperature)

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

 

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.Management;

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

            //타이머 시간 1초
            timer1.Interval = 1000;
        }

        protected override void OnClosed(EventArgs e)
        {
            timer1.Stop();
            base.OnClosed(e);
        }

        private void Button1_Click(object sender, EventArgs e)
        {
            timer1.Start();
        }

        void HDDTemperatrue()
        {
            //WMI 테이블명
            string diskTemperature = "MSStorageDriver_ATAPISmartData";

            try
            {
                //WMI 쿼리 
                ManagementObjectSearcher mos = new ManagementObjectSearcher(@"root\WMI", "Select * From " + diskTemperature);

                foreach (System.Management.ManagementObject mo in mos.Get())
                {
                    byte[] data = (byte[])mo.GetPropertyValue("VendorSpecific");
                    diskTemperature = data[3].ToString();
                    Label1.Text = diskTemperature.ToString();
                }
            }
            catch
            {
                diskTemperature = "";
            }
        }


        private void timer1_Tick(object sender, EventArgs e)
        {
            HDDTemperatrue();
        }
    }
}

*예제 결과

 

결과화면

 

 

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

 

[VBNET] [WMI] HDD Temperature (하드디스크 온도 체크)

* VBNET WMI 를 이용한 하드 디스크 온도 체크 예제 (HDD Temperature) 전체 소스 코드 Form1.vb Imports System.Management Imports Microsoft.Win32 Imports System.Collections Public Class Form1 Dim tmr As..

kdsoft-zeros.tistory.com

 

반응형
반응형

* C# OLE DB 공급자 (Provider) 리스트 예제...

 

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.Data.OleDb;


namespace CSharp_Provider
{
    public partial class Form1 : Form
    {
        string str = "";

        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            listView1.Items.Clear();
			
            //OLEDB 공급자 얻기
            OleDbEnumerator oe = new OleDbEnumerator();
			
            //OLEDB 공급자 리스트들 얻기
            DataTable dt = oe.GetElements();

            for (int iCount = 0; iCount < dt.Rows.Count; iCount++)
            {
                ListViewItem lvi = new ListViewItem();

                lvi.Text = (iCount + 1).ToString();
                lvi.SubItems.Add(dt.Rows[iCount][0].ToString() );

			//나중에 Excel OLEDB 조회시 사용
                //if (dt.Rows[iCount][0].ToString().Contains("ACE"))
                //{
                //    str = dt.Rows[iCount][0].ToString();
                //}

                listView1.Items.Add(lvi);
            }

        }
    }
}

 

* 마이크로 소프트 문서

https://docs.microsoft.com/ko-kr/dotnet/api/system.data.oledb.oledbenumerator?view=netframework-4.8

OleDbEnumerator 클래스

정의

네임스페이스:System.Data.OleDb어셈블리:System.Data.dll, System.Data.OleDb.dll

로컬 네트워크에 있는 사용 가능한 모든 OLE DB 공급자를 열거하는 메커니즘을 제공합니다.

C#복사

 

public sealed class OleDbEnumerator상속

Object

OleDbEnumerator

생성자

OleDbEnumerator()

OleDbEnumerator 클래스의 인스턴스를 만듭니다.

메서드

Equals(Object)

지정한 개체가 현재 개체와 같은지를 확인합니다.

(다음에서 상속됨 Object)
GetElements()

표시되는 모든 OLE DB 공급자에 대한 정보를 포함하는 DataTable을 검색합니다.

GetEnumerator(Type)

특정 OLE DB 열거자를 사용하여 OleDbDataReader 클래스 인스턴스를 필요로 하지 않고 현재 설치된 OLE DB 공급자에 대한 정보를 포함하는 OleDbEnumerator를 반환합니다.

GetHashCode()

기본 해시 함수로 작동합니다.

(다음에서 상속됨 Object)
GetRootEnumerator()

OleDbDataReader 클래스 인스턴스를 필요로 하지 않고 현재 설치된 OLE DB 공급자에 대한 정보를 포함하는 OleDbEnumerator를 반환합니다.

GetType()

현재 인스턴스의 Type을 가져옵니다.

(다음에서 상속됨 Object)
MemberwiseClone()

현재 Object의 단순 복사본을 만듭니다.

(다음에서 상속됨 Object)
ToString()

현재 개체를 나타내는 string을 반환합니다.

(다음에서 상속됨 Object)

 

* 예제 결과

 

 

반응형

+ Recent posts