반응형

*C# Json 을 이용한 간단한 로또 당첨번호 확인 예제...

 

Main

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

 

- 참조 소스 

[C#] Json Read 를 이용한 로또(Lotto) 당첨 번호 읽기 예제 :: 삽질하는 개발자... (tistory.com)

 

[C#] Json Read 를 이용한 로또(Lotto) 당첨 번호 읽기 예제

* C# Json Parsing 을 이용한 로또 (Lotto) 당첨 번호 읽어 오기 예제... 전체 소스 코드 Form1.cs using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using Sy..

kdsoft-zeros.tistory.com

전체 소스 코드

Form1.cs

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

//json 참조 추가
using System.Net.Json;
using System.Net;
using System.IO;

namespace Lotto_1
{
    public partial class Form1 : Form
    {
        int iCount = 0;
        List<int> ltResult = new List<int>();
        public Form1()
        {
            InitializeComponent();
        }

        #region 사용자 정의함수...
        private bool IsNullString(string str)
        {
            return string.IsNullOrEmpty(str);
        }

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

        private string GetHttpLottoString(string strUri)
        {
            string strResponseText = string.Empty;

            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(strUri);
            request.Method = "GET";

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

            //응답 받기
            using (HttpWebResponse hwr = (HttpWebResponse)request.GetResponse())
            {
                //응답이 정상적으로 이루어 졌으면... 
                if (hwr.StatusCode == HttpStatusCode.OK)
                {
                    Stream respStream = hwr.GetResponseStream();
                    using (StreamReader sr = new StreamReader(respStream))
                    {
                        strResponseText = sr.ReadToEnd();
                    }
                }
                else
                {
                    strResponseText = "";
                }
            }

            return strResponseText;
        }
        
        private bool isCheck()
        {
            //Lotto Number 당첨 번호 읽어 오기...
            if (IsNullString(textBox1.Text) && IsNullString(textBox2.Text) && IsNullString(textBox3.Text) && IsNullString(textBox4.Text)
                && IsNullString(textBox5.Text) && IsNullString(textBox6.Text) )
            {
                MessageBox.Show("빈 값일 순 없습니다.");
                return false ;
            }

            //숫자가 아니면...
            if (IsInt(textBox1.Text) == 0 && IsInt(textBox2.Text) == 0 && IsInt(textBox3.Text) == 0 && IsInt(textBox4.Text) == 0 &&
                IsInt(textBox5.Text) == 0 && IsInt(textBox6.Text) == 0 )
            {
                MessageBox.Show("숫자만 입력 해 주세요.");
                return false;
            }

            //회차 번호 체크
            if (IsInt(textBox8.Text) == 0 && IsNullString(textBox8.Text))
            {
                MessageBox.Show("숫자만 입력 또는 빈 값일 순 없습니다.");
                textBox8.Text = "";
                textBox8.Focus();
                return false;
            }

            return true;
        }

        private void Check_Result(int iNumber )
        {
            //-2 한 값은 마지막 보너스 넘버 는 체크 안함...
            for (int i = 0; i <= ltResult.Count - 2; i++)
            {
                if(iNumber == ltResult[i])
                {
                    iCount++;
                    return;
                }
            }
        }


        private void MessageResult(int iBonus)
        {
            switch(iCount )
            {
                case 6:
                {
                    lblResult.Text ="축하 드립니다. 1등에 당첨 되셨습니다.";
                    break;
                }
                case 5:
                {
                    if (iBonus == 1)
                    {
                         lblResult.Text = "축하 드립니다. 2등에 당첨 되셨습니다.";
                     }
                    else
                    {
                         lblResult.Text = "축하 드립니다. 3등에 당첨 되셨습니다.";
                    }
                    break;
                }
                case 4:
                {
                    lblResult.Text = "축하 드립니다. 4등에 당첨 되셨습니다.";
                    break;
                }
                case 3:
                {
                    lblResult.Text = "축하 드립니다. 5등에 당첨 되셨습니다.";
                    break;
                }
                default:
                {

                    lblResult.Text = "꽝 입니다. 다음 기회에...반드시 성공을...";
                    break;
                }
            }
        }

        #endregion 

        private void button1_Click(object sender, EventArgs e)
        {
            List<int> ltLottoNumber = new List<int>();
            int iBonus =0;

            ltResult.Clear();
            //Count 값 초기화...
            iCount = 0;

            //체크
            if(!isCheck ())
            {
                return;
            }
            ltLottoNumber.Add(Convert.ToInt32(textBox1.Text.Trim()));
            ltLottoNumber.Add(Convert.ToInt32(textBox2.Text.Trim()));
            ltLottoNumber.Add(Convert.ToInt32(textBox3.Text.Trim()));
            ltLottoNumber.Add(Convert.ToInt32(textBox4.Text.Trim()));
            ltLottoNumber.Add(Convert.ToInt32(textBox5.Text.Trim()));
            ltLottoNumber.Add(Convert.ToInt32(textBox6.Text.Trim()));

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

            if (strReturnValue == "")
            {
                MessageBox.Show("Lotto Number 불러오기 실패...");
                return;
            }

            //Json 으로 바꾸기...
            JsonTextParser jtr = new JsonTextParser();
            JsonObject jo = jtr.Parse(strReturnValue);
            JsonObjectCollection jac = (JsonObjectCollection)jo;

            //불러오기가 성공 하면...
            if (jac["returnValue"].GetValue().ToString() == "success")
            {
                //담기...
                ltResult.Add(Convert.ToInt32(jac["drwtNo1"].GetValue().ToString().Trim()));
                ltResult.Add(Convert.ToInt32(jac["drwtNo2"].GetValue().ToString().Trim()));
                ltResult.Add(Convert.ToInt32(jac["drwtNo3"].GetValue().ToString().Trim()));
                ltResult.Add(Convert.ToInt32(jac["drwtNo4"].GetValue().ToString().Trim()));
                ltResult.Add(Convert.ToInt32(jac["drwtNo5"].GetValue().ToString().Trim()));
                ltResult.Add(Convert.ToInt32(jac["drwtNo6"].GetValue().ToString().Trim()));
                ltResult.Add(Convert.ToInt32(jac["bnusNo"].GetValue().ToString().Trim()));
                textBox7.Text = jac["bnusNo"].GetValue().ToString().Trim();
            }
            //Check Result
            for (int i = 0; i <= ltLottoNumber.Count - 1; i++)
            {
                Check_Result(ltLottoNumber[i]);

                if(ltLottoNumber[i] == ltResult[ltResult.Count-1])
                {
                    iBonus = 1;
                }
            }
            //Result
            MessageResult(iBonus );

        }

        private void textBox8_KeyDown(object sender, KeyEventArgs e)
        {
            if(e.KeyCode == Keys.Enter )
            {
                button1_Click(null, null);
            }
        }
    }
}

* 예제 결과

 

결과 화면

 

반응형
반응형

* C# 랜덤(Random) 클래스를 이용한 간단한 로또(Lotto) 숫자 생성 예제...

 

 

- 사용한 컨트롤 : Button 1개, Label 1개, TextBox 1개

 

전체 소스 코드

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_LottoNumber
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            //텍스트 박스 초기화...
            textBox1.Text = "";
            textBox1.Text = Create_LottoNumber();
        }

        private string Create_LottoNumber()
        {
            string strTmp = "";
            string strNumber = "";
            string strBonusNumber = "";
            int[] imsiNum = new int[7];

            for (int i = 0; i < 7; i++)
            {
                Random rnd = new Random();
                //1 부터 45 숫자 중...
                imsiNum[i] = rnd.Next(1,45);
                for (int j = 0; j < i; j++)
                {
                    if (imsiNum[i] == imsiNum[j])
                    {
                        i = i - 1;
                    }
                }
            }
            strTmp = string.Join(", ", imsiNum);
            //Lotto Number ...
            strNumber = strTmp.Substring(0, strTmp.LastIndexOf(',')-1);
            //끝에 있는 BonusNumber ...
            strBonusNumber = strTmp.Substring(strTmp.LastIndexOf(',')+1,2).Trim();
            return "Lotto Number : " + strNumber + ", BonusNumber : " + strBonusNumber;
        }

    }
}

 

 

 

*예제 결과

 

반응형
반응형

* C# 프로그램 버전 확인(Program Version Check) 예제...

 

 

 

 

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

 

전체 소스 코드

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_ProgramVersionCheck
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            //프로그램 버전 확인
            label1.Text  = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString();

        }
    }
}

 

비주얼 스튜디오로 버전 확인 방법

 

 

어셈블리 버전 으로 확인 가능 

 

*예제 결과

 

반응형
반응형

* C# 노트북 배터리 정보 예제...

 

Main

 

- 사용한 컨트롤 : Button 2개, TextBox 2개, Label 3개, 프로그래스바 1개, Timer 1개

 

전체 소스 코드

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_노트북전원상태
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

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

            timer1.Interval = 1000; //1초 마다...

        }

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

            timer1.Stop();
        }

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

        private void button2_Click(object sender, EventArgs e)
        {
            timer1.Stop();
        }


        private void timer1_Tick(object sender, EventArgs e)
        {
            PowerStatus  psStatus = SystemInformation.PowerStatus;

            //충전 상태
            txtChargeStatus.Text = psStatus.BatteryChargeStatus.ToString();

            //전원 상태
            txtPoerStatus.Text = psStatus.PowerLineStatus.ToString();

            //충전 비율
            if (psStatus.BatteryLifePercent != 255)
            {
                pbCharge.Value = (int)(psStatus.BatteryLifePercent * 100);
            }
            else
            {
                pbCharge.Value = 0;
            }

            //잔여 사용 시간
            if (psStatus.BatteryLifeRemaining != -1)
            {
                textBox1.Text = TimeSpan.FromSeconds(psStatus.BatteryLifeRemaining).ToString();
            }
            else
            {
                textBox1.Text = "-------";
            }
            //완충시 사용 시간
            if (psStatus.BatteryFullLifetime != -1)
            {
                textBox2.Text = psStatus.BatteryFullLifetime.ToString();
            }
            else
            {
                textBox2.Text = "-------";
            }


        }
    }
}

 

 

*예제 결과

 

반응형
반응형

* C# WMI 를 이용한 그래픽 카드 정보 예제...

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

 

Main

 

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

 

전체 소스 코드

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_WMI_그래픽카드정보
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            //조회...
            using (ManagementObjectSearcher mos = new ManagementObjectSearcher("Select * From Win32_DisplayConfiguration"))
            {
                //그래픽 카드 정보 얻기...
                foreach (ManagementObject moj in mos.Get())
                {
                    label1.Text = moj["Description"].ToString();
                }
            }
        }
    }
}

 

* 예제 결과

 

 

버튼 클릭 시 위와 같이 그래픽카드 정보를 얻어 올 수 있습니다.

아래 마이크로소프트 문서를 참조 하시면 Win32_DisplayConfiguration 테이블에 필드들이 무엇이 있는지 알 수 있습니다.

docs.microsoft.com/en-us/previous-versions/aa394137(v=vs.85)

 

Win32_DisplayConfiguration class (Windows)

Win32_DisplayConfiguration class 09/17/2015 3 minutes to read In this article --> [The Win32_DisplayConfiguration WMI class is no longer available for use as of Windows Server 2008. Instead, use the properties in the Win32_VideoController, Win32_DesktopMo

docs.microsoft.com

 

반응형
반응형

* C# richTextBox 내용 - 문자열 검색

 

메인화면

 

- 사용한 컨트롤: Panel 3개, Label 1개, TextBox 1개, Button 1개, richTextBox 1개

 

전체 소스 코드

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_TextBoxSearch
{
    public partial class Form1 : Form
    {
        int iFindStartIndex = 0;

        public Form1()
        {
            InitializeComponent();
        }

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


            richTextBox1.Text = @"private void button1_Click(object sender, EventArgs e)
                                    {
                                        //찾는 문자열 길이
                                        int iFindStartIndex = 0;
                                        int iFindLength = textBox1.Text.Length;
                                        iFindStartIndex = FindMyText(textBox1.Text, iFindStartIndex, richTextBox1.Text.Length);
                                        if (iFindStartIndex == -1)
                                        {
                                            iFindStartIndex = 0;
                                            return;
                                        }
                                        
                                        richTextBox1.SelectionColor = Color.Red;
                                        richTextBox1.Select(iFindStartIndex, iFindLength);
                                        iFindStartIndex += iFindLength;
                                    }

                                    private int FindMyText(string searchText, int searchStart, int searchEnd)
                                    {
                                        // Initialize the return value to false by default.
                                        int returnValue = -1;

                                        // Ensure that a search string and a valid starting point are specified.
                                        if (searchText.Length > 0 && searchStart >= 0)
                                        {
                                            // Ensure that a valid ending value is provided.
                                            if (searchEnd > searchStart || searchEnd == -1)
                                            {
                                                // Obtain the location of the search string in richTextBox1.
                                                int indexToText = richTextBox1.Find(searchText, searchStart, searchEnd, RichTextBoxFinds.MatchCase);
                                                // Determine whether the text was found in richTextBox1.
                                                if (indexToText >= 0)
                                                {
                                                    // Return the index to the specified search text.
                                                    returnValue = indexToText;
                                                }
                                            }
                                        }

                                        return returnValue;
                                    }";
        }

        private void button1_Click(object sender, EventArgs e)
        {
            //찾는 문자열 길이
            int iFindLength = textBox1.Text.Length;
            iFindStartIndex = FindMyText(textBox1.Text, iFindStartIndex, richTextBox1.Text.Length);
            if (iFindStartIndex == -1)
            {
                iFindStartIndex = 0;
                return;
            }
            
            //찾은 문자열 선택해서 붉은색으로 바꾸기
            richTextBox1.SelectionColor = Color.Red;
            richTextBox1.Select(iFindStartIndex, iFindLength);

            //다음 찾기를 위해 찾은 문자열 위치 저장
            iFindStartIndex += iFindLength;
        }

        private int FindMyText(string searchText, int searchStart, int searchEnd)
        {
            // Initialize the return value to false by default.
            int returnValue = -1;

            // Ensure that a search string and a valid starting point are specified.
            if (searchText.Length > 0 && searchStart >= 0)
            {
                // Ensure that a valid ending value is provided.
                if (searchEnd > searchStart || searchEnd == -1)
                {
                    // Obtain the location of the search string in richTextBox1.
                    int indexToText = richTextBox1.Find(searchText, searchStart, searchEnd, RichTextBoxFinds.MatchCase);
                    // Determine whether the text was found in richTextBox1.
                    if (indexToText >= 0)
                    {
                        // Return the index to the specified search text.
                        returnValue = indexToText;
                    }
                }
            }

            return returnValue;
        }
    }
}

 

 

마이크로 소프트 msdn 참조로 richTextBox 내용에 원하는 문자열 검색 구현

 

* 예제 결과

 

 

richTextBox1.SelectionColor = Color.Red; 

richTextBox1.Select(iFindStartIndex, iFindLength);

예제 결과 보듯이 찾은 문자열을 붉은색으로 바꿔 표시 됩니다.

 

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

 

[VBNET] [Control] richTextBox - 문자열 검색

* VBNET richTextBox 내용 - 문자열 검색 메인화면 - 사용한 컨트롤: Panel 3개, Label 1개, TextBox 1개, Button 1개, richTextBox 1개 전체 소스 코드 Form1.vb Public Class Form1 Dim iFindStartIndex As Int..

kdsoft-zeros.tistory.com

 

반응형
반응형

* C# Listview 조회 데이터 CSV 파일로 저장 하기 예제...

 

Main

 

-사용한 컨트롤: Button 1개, Listview 1개

 

전체 소스 코드

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_Listview_CSV
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();


            for (int iCount = 0; iCount < 10; iCount++)
            {
                ListViewItem lvi = new ListViewItem();
                lvi.Text = (iCount + 1).ToString();
                lvi.SubItems.Add("Col1");
                lvi.SubItems.Add("Col2");
                lvi.SubItems.Add("Col3");
                lvi.SubItems.Add("Col4");

                listView1.Items.Add(lvi);

            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            //CSV File Save

            SaveFileDialog sfd = new SaveFileDialog();

            sfd.Filter = "CSV File(*.csv) | *.csv";

            if (sfd.ShowDialog() == DialogResult.OK)
            {
                System.IO.StreamWriter sw = new System.IO.StreamWriter(sfd.FileName, false, Encoding.GetEncoding(949));

                //데이터    
                for (int i = 0; i < listView1.Items .Count; i++)
                {
                    string strTmp = "";
                    strTmp += listView1.Items[i].SubItems[0].Text + "," +
                              listView1.Items[i].SubItems[1].Text + "," +
                              listView1.Items[i].SubItems[2].Text + "," +
                              listView1.Items[i].SubItems[3].Text + "," +
                              listView1.Items[i].SubItems[4].Text;

                    sw.Write(strTmp + "\r\n");
                    
                }

                sw.Flush();
                sw.Close();

				MessageBox.Show("CSV 파일로 저장이 완료 되었습니다.");
            }

            
        }
    }
}

 

 

*예제 결과

 

 

 

반응형
반응형

* C# API 를 이용한 화면 캡쳐 방지 (Screen Capture Prevention) 예제...

 

Main

 

-사용한 컨트롤 : Button 1개

 

전체 소스 코드

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_화면캡쳐방지
{
    public partial class Form1 : Form
    {
        [DllImport("user32.dll")]
        private static extern uint SetWindowDisplayAffinity(IntPtr windowHandle, uint affinity);
        private const uint ui_NONE = 0;
        private const uint ui_SET = 1;

        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (this.button1.Text == "캡처 방지 설정하기")
            {

                SetWindowDisplayAffinity(this.Handle, ui_SET);
                this.button1.Text = "캡처 방지 해제하기";

            }
            else
            {

                SetWindowDisplayAffinity(this.Handle, ui_NONE);
                button1.Text = "캡처 방지 설정하기";

            }
        }
    }
}

 

 

*예제 결과

 

- 해지 했을 경우

- 설정 했을 경우

 

 

반응형

+ Recent posts