크로미움이란 누구나 크롬을 만들수 잇게 만든 오픈 소스 웹 브라우저 프로젝트 입니다.

C#을 이용하여 Chorme 웹 브라우저를 만들어 보겠습니다.

Visual studio 에서 Chrome 웹 브라우저를 만드려면 크로미움이란 오픈소스를 이용해 만들어야합니다.

 

 

먼저 Visual studio를 실행한뒤 Winform을 생성해 줍니다. 

 



솔루션 탐색기 > 참조(마우스 우클릭) > NuGet 패키지 관리를 클릭해 줍니다.

 

 


찾아보기를 클릭후 검색 창에 cef 혹은 cefsharp Winforms 를 검색하여 설치 버튼을 눌러 줍니다. 

 

 


CefSharp 다운로드가 완료가 되면 form 디자인으로가서 보기 > 도구상자 > 컨테이너 > Panel를 클릭하여
form 안에 Panel 을 추가해 준다 .

 


생성된 Panel을 클릭하여 속성창을 열어준후 Dock 설정을 fill로 변경해 줍니다.

 

 


전체적인 코드 입니다

 

코드 맨위 using에 추가해 줍니다. 

using CefSharp;
using CefSharp.WinForms;

 

코드는 간략하므로 자세한 설명은 생략합니다. 궁금하신점이 있으시면 댓글로 물어보시면 답변해드립니다.

 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using CefSharp;
using CefSharp.WinForms;

namespace WindowsFormsApp2
{
    public partial class Form1 : Form
    {
        public ChromiumWebBrowser Browser;
        public Form1()
        {
            InitializeComponent();
            InitBrowser();
        }
        public void InitBrowser()
        {
            CefSettings cefSettings = new CefSettings();
            Cef.Initialize(cefSettings);
            Browser = new ChromiumWebBrowser("www.google.com");            
            this.panel1.Controls.Add(Browser);
            Browser.Dock = DockStyle.Fill;
        }
    }
}

 

'개발 > c#' 카테고리의 다른 글

c# 윈폼 로또 생성기  (1) 2021.05.11
C# WebBrowser 자동 로그인  (4) 2021.04.15
Boxing UnBoxing  (0) 2021.04.14
c# WebBrowser 만들기  (0) 2021.04.12
c# 으로 메모장 만들기  (0) 2021.04.11

오늘은 간단히 프로그래밍에 입문하면 처음 만드어 볼수 있는 프로그램 주제로 넘어가

로또 생성기를 만들어 보겠습니다. 콘솔을 이용한 로또 프로그램보다는 ui 요소가 들어가 있는 부분이 더욱

공부가 됩니다.

윈폼 으로 간단한 로또 생성기를 만들어 보겠습니다. 

 

 

 


Lotto UI 디자인

비주얼 스튜디오로를 실행후 c# winform 프로젝트를 생성 하여 줍니다

윈폼을 생성한뒤 도구상자를 들어가 Label을 7개 생성해줍니다.

도구상자는 <보기>를 클릭 하시면 목록에 도구상자가 있습니다.

 

라벨중 하나를 제목으로 지정하여야 합니다 일단 라벨 하나를 선택하여 속성창을 들어갑니다.

그리고 라벨의 속성중

Name을 LottoTitleLabel ,

Text 을 로또 생성기 ,

font size를 18pt 로 변경하여줍니다.

 

 

 

 

나머지 라벨을 한꺼번에 선택하여 font size 14로 맞춘후 label 정렬하여 줍니다.

그런후 각각 속성 Name 에 LottoNumberLabel1,LottoNumberLabel2, ... 등으로 변경하여 준후 Text를 - 특수 문자로 변경 합니다.

 

 

 

 

 

이렇게 완성된후에 로또를 생성 시킬수 있는 Button을 생성합니다.

그후 Button 속성에 들어가 Name을 NumberCreateButton 으로 바꾸어주고

Text 의 값은 로또 번호 생성으로 바꾸어준후 font size를 적절히 바꾸어줍니다.

 

 

 

버튼을 생성후 

버튼을 더블클릭하여 버튼이 클릭하였을 때 나타나는 함수를 만들어 줍니다.

 

 

 

 

 


 

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

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

        private void NumberCreateButton_Click(object sender, EventArgs e)
        {
            Label[] LottoArray = new Label[] { LottoNumberLabel1, LottoNumberLabel2, LottoNumberLabel3,
                LottoNumberLabel4, LottoNumberLabel5, LottoNumberLabel6 };

            Random rand = new Random();

            for (int lottoindex = 0; lottoindex < LottoArray.Length; lottoindex++)
            {
                int lottoCheckIndex = lottoindex;
                int lottonumber = rand.Next(1, 46);
                for (; lottoCheckIndex >= 0; lottoCheckIndex--)
                {
                    if (LottoArray[lottoCheckIndex].Text == lottonumber.ToString())
                    {
                        lottoCheckIndex = lottoindex;
                        lottonumber = rand.Next(1, 46);
                    }
                }
                LottoArray[lottoindex].Text = lottonumber.ToString();

            }
        }
    }
}


코드를 작성하여 줍니다. 

'개발 > c#' 카테고리의 다른 글

C# Chromium 크롬 웹 브라우저 만들기  (0) 2021.09.30
C# WebBrowser 자동 로그인  (4) 2021.04.15
Boxing UnBoxing  (0) 2021.04.14
c# WebBrowser 만들기  (0) 2021.04.12
c# 으로 메모장 만들기  (0) 2021.04.11

웹브라우저  자동 로그인그전편 WebBrowser 만들기를 해보신후 진행 하시는게 이해가 쉽습니다.

 

C# 으로 만든 WebBrower로 웹사이트 자동 로그인 을 해보겠습니다.

이부분에서는 HTML의 기초CSS의 기초가 필요로 합니다.  

 

일단 로그인할수있는 사이트를 Navigate함수에 먼저 등록을해놓습니다. 

저는 다음사이트를 들어가 서 로그인을해보도록하겠습니다.

폼로드를 할때 기본으로 다음홈페이지를 기본으로 세팅해놓겠습니다.

그러면 다음사이트로 시작하자마자 이동할수 있습니다

이제 크롬이나 일반 웹브라우저를 키고 다음 사이트를 가서 F12키를 눌러줍니다.

저는 카카오계정으로 로그인을 할텐데요

그럴려면 저 로그인 버튼을 눌르고 아이디 와 비밀번호 입력창이있는 주소를 복사하겠습니다.

그리고 다시 Navigate에 로그인창 주소를 입력하여줍니다.

 

webBrowser1.Navigate("https://www.daum.net/");

 

 

사실 처음 폼로드를 세팅할때 로그인창으로 바로가게 세팅을 해주어도 되지만 이해를 돕기위해 과정을 올려두었습니다.

 

그러면 이렇게 로그인 창이 뜨실텐데요 우리는 여기서 f12를눌러 개발자도구를 열어겠습니다.

 

 

저상단에있는 버튼을 눌러주고 카카오계정 아이디 입력하는 텍스트박스 눌러줍니다.

그러면 이런 오른쪽 창이 이파란색 배경으로 칠해져있는 구역이 바로 저 아이디를 나타내는 태그입니다.

 

저희는 저기안에 있는 태그나 클래스이름이나 몇가지 특징으로 저기에 접근할수있게 할텐데요.

라벨태그 아래에 있는 input 태그를 확인해줍니다 텍스트는 input 태그안에 넣어야 아이디가 입력이 됩니다.

input 태그안 id 값을 찾아서 텍스트를 넣겠습니다.

	webBrowser1.Document.GetElementById("id_email_2").SetAttribute("value", "사용자아이디");
    webBrowser1.Document.GetElementById("id_password_3").SetAttribute("value", "비밀번호");

webBrowser 에 도큐먼트안에이 Id 값을 찾아서 속성을 집어 넣어주는건데 요 비밀번호를 찾는건 아이디 찾는것과

같아 생략해겠습니다.

여기 까지 진행하시고 컴파일 해보시면

이렇게 입력되신걸 보실수있습니다 

사이트가 열리기 까지 기달려야하기때문에 딜레이를 조금 주었습니다.

그리고 클릭버튼도 똑같이 f12를 눌러 그전과 똑같이 해보겠습니다.

이번에 로그인버튼은 Button 태그를 눌러 주어야합니다.

웹브라우저에 있는 모든 버튼 태그를 찾아서 html 요소 를 배열로 넣어줄수 있는 HtmlElemenCollection 에 넣어줍니다

그리고 HtmlElement 객체에 하나하나 넣어서 로그인 버튼안에 있는 innerText 중 로그인 텍스트가 있는 

버튼을 찾아 클릭을 하여줍니다.

  HtmlElementCollection loginButton = WebBrowser.Document.GetElementsByTagName("button");
            foreach (HtmlElement seachLogin in loginButton)
            {
                if (seachLogin.InnerText == "로그인")
                {
                    seachLogin.InvokeMember("click");
                }
            }

이렇게 끝내고 컴파일을 하면 로그인 된 화면을 볼수있습니다.

 

C#으로 만든 WebBrowser는 IE 기반이므로 스크립트 오류가 날수 있습니다. 

스크립트 오류가 발생할 경우 

 

시작 > internet Explorer 검색을 한뒤 > 인터넷 옵션 > 고급 > 스크립트 디버깅사용안함 두항목을 해체 해주시면 됩니다.

 

 

제깃 허브에 소스코드를 올려놓았습니다.

github.com/jeongilhwa/IEWebBrowser/tree/master/IEWebBrowser

'개발 > c#' 카테고리의 다른 글

C# Chromium 크롬 웹 브라우저 만들기  (0) 2021.09.30
c# 윈폼 로또 생성기  (1) 2021.05.11
Boxing UnBoxing  (0) 2021.04.14
c# WebBrowser 만들기  (0) 2021.04.12
c# 으로 메모장 만들기  (0) 2021.04.11

Boxing 과 UnBoxing

Boxing 과 unBoxing은 형변환 타입입니다.

int => double , double => int 로 변환 하는것이아닌
object => int , int=> object 로 변환하는것입니다.
메모리 영역을 생각을 하고 바라 보아야합니다. 저희가 아는 데이터타입 스택영역입니다.
그래서 int-> double 은 스택영역에서의 형변환입니다.

하지만 object => int 는 힙영역에서 스택영역 즉 값 형식을 참조 형식으로 변환하는 것을 말하며 스택에 있는 데이터가 힙으로 복사
int => object 스택영역에서 힙영역으로 형변환 참조 형식을 값 형식으로 변환하는 것을 말하며 힙에 있는 데이터가 스택으로 복사가 이루어집니다.

 

이제 여기서 Boxing 은  스택영역에서 힙영역으로 형변환이 이루어지는 것입니다.

여기선 암시적 형변환 이 가능합니다.

물론 명시적 형변환 도 가능합니다.

using System;

namespace BoxingUnBoxing
{
    class Program
    {
        static void Main(string[] args)
        {
            int a = 123;
            object o = a;

            Console.WriteLine(o);
            Console.Read();

        }
    }
}

 

UnBoxing은 힙영역에서 스택영역으로 형변환이 이루어지는 것입니다.

using System;

namespace BoxingUnBoxing
{
    class Program
    {
        static void Main(string[] args)
        {
            object o = 123;

            int a = (int)o;
            
            Console.WriteLine(o);
            Console.Read();

        }
    }
}

 

 

 

 

MSDN 에 의하면 값 형식을 박싱할 때에는 완전히 새로운

개체가 만들어져야 하며, 이러한 작업에는 할당 작업보다

최대 20배의 시간이 걸린다고 한다. 언박싱 또한 캐스팅

과정이 할당 작업보다 4배의 시간이 걸릴 수 있다고 나와있다.
출처: https://grayt.tistory.com/87 [IT's me]

 

이점을 생각하고 사용하면 사용하면 더 조은 성능을 낼수있는 프로그램을 만들수있습니다.

'개발 > c#' 카테고리의 다른 글

c# 윈폼 로또 생성기  (1) 2021.05.11
C# WebBrowser 자동 로그인  (4) 2021.04.15
c# WebBrowser 만들기  (0) 2021.04.12
c# 으로 메모장 만들기  (0) 2021.04.11
Buble Sort (버블소트) 정렬알고리즘  (0) 2021.04.01

c# 으로 웹브라우저를 만드는 방법은 간단합니다.

윈도우 폼을 생성한뒤

tablelayoutpannel을 추가 하고 속성값의 Dock 을 fill로 설정해 줍니다.

tableLayoutpannel의 열을 하나 제거해주고 상단의 패널을 28로 고정 시켜줍니다.

 

tableLayoutPannel 첫번째 행에 패널을 다시 추가해주고 Dock 을 fill로 설정합니다.

그리고 margin값을 0으로 하여 여백을 제거합니다.

그리고 tableLayoutPannel 두번째 행에는 도구상자에 webbrowser를 추가 하고 Dock 을 fill로 채워줍니다.

버튼 3개와 텍스박스를 추가 하여줍니다 

그리고 각각 더블클릭하여 함수를 만들어 놓습니다.

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

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

        private void BackButton_Click(object sender, EventArgs e)
        {
            webBrowser1.GoBack();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            webBrowser1.GoForward();
        }

        private void WebAddressTextBox_TextChanged(object sender, EventArgs e)
        {

        }

        private void AddressMoveButton_Click(object sender, EventArgs e)
        {
            webBrowser1.Navigate(WebAddressTextBox.Text);
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            
            webBrowser1.Navigate("www.google.com");
        }
    }
}

 

'개발 > c#' 카테고리의 다른 글

C# WebBrowser 자동 로그인  (4) 2021.04.15
Boxing UnBoxing  (0) 2021.04.14
c# 으로 메모장 만들기  (0) 2021.04.11
Buble Sort (버블소트) 정렬알고리즘  (0) 2021.04.01
10 까지의 합구하기  (0) 2021.03.31

c#으로 윈도우 메모장에 있는 기능 대부분을 구현해보았습니다. 소스 코드는 나중에 github 저장소에 저장해놓았습니다.

github.com/jeongilhwa/NotePad_0.2

 

jeongilhwa/NotePad_0.2

Contribute to jeongilhwa/NotePad_0.2 development by creating an account on GitHub.

github.com

 

 

 

'개발 > c#' 카테고리의 다른 글

C# WebBrowser 자동 로그인  (4) 2021.04.15
Boxing UnBoxing  (0) 2021.04.14
c# WebBrowser 만들기  (0) 2021.04.12
Buble Sort (버블소트) 정렬알고리즘  (0) 2021.04.01
10 까지의 합구하기  (0) 2021.03.31

컴퓨터 과학 수학에서 정렬 알고리즘(sorting algorithm)이란 원소들을 번호순이나 사전 순서와 같이 일정한 순서대로 열거하는 알고리즘입니다.

-위키백과, 우리 모두의 백과사전.-

버블 소트란  두 인접한 원소를 검사하여 정렬하는 방법입니다.

 

시간 복잡도 소트 알고리즘 중에서 상당히 느린편에 속합니다.

시간복잡도는 나중에 다른 게시글에서 다뤄 보겠습니다.

using System;
namespace ConsolApp
{
    class Program
    {
        static void Main(string[] argv)
        {
            int[] array = new int[10] { 9, 7, 0, 8, 6, 2, 5, 3, 4, 1 };

            for (int i = 0; i < 9; i++)
            {
                for (int j = 0; j < 9; j++)
                {
                    if (array[j] > array[j + 1])
                    {
                        int temp = array[j];
                        array[j] = array[j + 1];
                        array[j + 1] = temp;
                    }
                }
            }
            for (int i = 0; i < 10; i++)
            {
                Console.WriteLine(array[i]);
            }
            Console.Read();

        }
    }
}

 

'개발 > c#' 카테고리의 다른 글

C# WebBrowser 자동 로그인  (4) 2021.04.15
Boxing UnBoxing  (0) 2021.04.14
c# WebBrowser 만들기  (0) 2021.04.12
c# 으로 메모장 만들기  (0) 2021.04.11
10 까지의 합구하기  (0) 2021.03.31

1부터 10까지의 합을 구하는 방법을 for문으로 알아 보겠습니다.

이문제를 보고 while 문으로도 풀어보는것을 추천드립니다.

using System;
namespace Consolapp
{
	class Program
    {
    	static void main(string[] argv)
        {
          int num = 0;
            for (int index = 1; index <= 10; index++)
            {
                num += index;
            }
            Console.WriteLine(num);
            Console.Read();
        }
    }
}

 

'개발 > c#' 카테고리의 다른 글

C# WebBrowser 자동 로그인  (4) 2021.04.15
Boxing UnBoxing  (0) 2021.04.14
c# WebBrowser 만들기  (0) 2021.04.12
c# 으로 메모장 만들기  (0) 2021.04.11
Buble Sort (버블소트) 정렬알고리즘  (0) 2021.04.01

+ Recent posts