반응형

* C# Encoding Class 를 이용한 유니코드(한글) 문자열 존재 여부 예제...

 

Main

 

- 사용한 컨트롤 : Button 1개, TextBox 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_IsUnicode
{
    public partial class Form1 : Form
    {
       
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (textBox1.Text == "") return;

            int iAscii = Encoding.ASCII.GetByteCount(textBox1.Text );
            int iUnicode = Encoding.UTF8.GetByteCount(textBox1.Text );

            //같지 않으면...
            if (iAscii != iUnicode)
            {
                label1.Text = "Unicode 가 존재 합니다.";
            }
            else
            {
                label1.Text = "Unicode 가 존재 하지 않습니다.";
            }

        }
    }
}

 

 

*예제 결과

 

 

 

 

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

 

[VBNET] Encoding Class - 유니코드 문자열 존재 여부

* VBNET Encoding Class 를 이용한 유니코드(한글) 문자열 존재 여부 예제... - 사용한 컨트롤 : Button 1개, TextBox 1개, Label 1개 전체 소스 코드 Form1.vb Public Class Form1 Private Sub button1_Click(By..

kdsoft-zeros.tistory.com

 

반응형
반응형

* C# API 를 이용한 Form 애니메이션 효과 예제...

 

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_Animate
{
    public partial class Form1 : Form
    {
        [DllImport("user32.dll")]
        public static extern int AnimateWindow(IntPtr windowHandle, int animationTime, int animateWindowType);

 
        public Form1()
        {
            InitializeComponent();
        }

        private void Button1_Click(object sender, EventArgs e)
        {
            //CENTER
            Form2 frm = new Form2();
            int AW_CENTER = 0x10;
            AnimateWindow(frm.Handle, 1000, AW_CENTER);

        }

        private void Button2_Click(object sender, EventArgs e)
        {
            //HOR_POSITIVE
            Form2 frm = new Form2();
            int AW_HOR_POSITIVE = 0x01;
            AnimateWindow(frm.Handle, 1000, AW_HOR_POSITIVE);
        }

        private void Button3_Click(object sender, EventArgs e)
        {
            //VER_POSITIVE
            Form2 frm = new Form2();
            int AW_VER_POSITIVE = 0x04;
            AnimateWindow(frm.Handle, 1000, AW_VER_POSITIVE);
        }
    }
}

 

반응형
반응형

*C# PC 사용 시간 얻어 오기 예제...

 

Main

 

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

 

전체 소스 코드 

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

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

        private void button1_Click(object sender, EventArgs e)
        {
            try
            {

                using (PerformanceCounter pc = new PerformanceCounter("System", "System Up Time"))
                {
                    pc.NextValue();
                    label1.Text = TimeSpan.FromSeconds(pc.NextValue()).ToString();
                }

            }

            catch
            {
                label1.Text = "00:00:00";
            }

        }
    }
}

 

 

 

*예제 결과

 

 

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

 

[VBNET] PC 사용 시간 얻어 오기 (PC Use Time)

*C# PC 사용 시간 얻어 오기 예제... - 사용한 컨트롤 : Button 1개, Label 1개 전체 소스 코드 From1.cs Public Class Form1 Private Sub button1_Click(ByVal sender As System.Object, ByVal e As System.Even..

kdsoft-zeros.tistory.com

 

반응형
반응형

*C# API 를 이용한 Wav 파일 재생 예제...

 

 

- 사용한 컨트롤 : Button 3개, 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.Runtime.InteropServices;

namespace CSharp_MediaPlayer
{

    public partial class Form1 : Form
    {
         [DllImport("winmm.dll")]
        private static extern long mciSendString(string strCommand, StringBuilder strReturn, int iReturnLength, IntPtr hwndCallback);
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            //File Open
            OpenFileDialog ofd = new OpenFileDialog();

            ofd.Filter = "WAV File(*.wav) | *.wav";

            if (ofd.ShowDialog() == DialogResult.OK)
            {
                label1.Text = ofd.FileName;
            }

        }

        private void button2_Click(object sender, EventArgs e)
        {
            //Play
            if (!System.IO.File.Exists(label1.Text)) 
            {
                return;
            }
            mciSendString("open \"" + label1.Text + "\" type mpegvideo alias MediaFile", null, 0, IntPtr.Zero);
            mciSendString("play MediaFile", null, 0, IntPtr.Zero);
           

        }

        private void button3_Click(object sender, EventArgs e)
        {
            //Stop
            mciSendString("Close MediaFile", null, 0, IntPtr.Zero );
        }
    }
}

 

 

*예제 결과

 

 

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

 

[VBNET] [API] mciSendString - WAV 파일 재생

*VBNET API 를 이용한 Wav 파일 재생 예제... - 사용한 컨트롤 : Button 3개, Label 1개 전체 소스 코드 Form1.vb Imports System.Runtime.InteropServices Imports System.Text Public Class Form1 <dllimport("..< p=""> </dllimport("..<>

kdsoft-zeros.tistory.com

 

반응형
반응형

* C# Sendkeys 를 이용한 화면 캡쳐 (Screen Capture) 예제...

 

Main

 

- 사용한 컨트롤 : Button 2개, PictureBox 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_SendKey_ScreenCapture
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            //Alt+PrntScr 키 누른 효과
            SendKeys.SendWait ("%{PRTSC}");
            //PrntScr 키 누른 효과
            //SendKeys.SendWait("{PRTSC}");

            //클립보드에서 PrntScr 키로 화면 캡쳐한 이미지 얻어내기
            Image ig = Clipboard.GetImage();
            if (ig == null) return;

            //PictureBox 에 Image 표시
            pictureBox1.Image = ig;
            //PictureBox 화면 갱신
            pictureBox1.Refresh();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            //Picture Box 이미지 가져 오기
            Bitmap bt = new Bitmap(pictureBox1.Image);
            SaveFileDialog sfd = new SaveFileDialog();

            sfd.Filter = "JPG File(*.jpg) | *.jpg";

            if (sfd.ShowDialog() == DialogResult.OK)
            {
                bt.Save(sfd.FileName);
            }
        }
    }
}

 

 

 

다음은 마이크로소프트 사에서 제공하는 문서 내용 가져온 Sendkeys 명령 KeyCode

(https://docs.microsoft.com/ko-kr/dotnet/api/system.windows.forms.sendkeys.send?view=netframework-4.8)

 

키코드

Backspace {백스페이스}, {B} 또는 {BKSP}
BREAK {중단}
CAPS LOCK {CAPSLOCK}
DEL 또는 삭제 {삭제} 또는 {삭제}
아래쪽 화살표 {를}
END {END}
Enter 키 {0} 입력} 또는 ~
Esc {ESC}
HELP {도움말}
Home {0} 홈}
기능 또는 삽입 {삽입} 또는 {기능}
왼쪽 화살표 {LEFT}
NUM LOCK {NUMLOCK}
Page Down {PGDN}
Page Up {PGUP}
PRINT SCREEN {PRTSC} (사용 하도록 예약)
오른쪽 화살표 {RIGHT}
스크롤 잠금 {SCROLLLOCK}
Tab {TAB}
위쪽 화살표 {UP}
F1 {F1}
F2 {F2}
F3 {F3}
F4 {F4}
F5 {F5}
F6 {F6}
F7 {F7}
F8 {F8}
F9 {F9}
F10 {F10}
F11 {F11}
F12 {F12}
F13 {F13}
F14 {F14}
F15 {F15}
F16 {F16}
키패드 추가 {0} 추가}
키패드 빼기 {빼기}
키패드 곱하기 {곱하기}
키패드 나누기 {나누기}

SHIFT, CTRL 및 ALT 키 조합을 사용 하 여 결합 된 키를 지정 하려면 하나 이상의 다음 코드를 사용 하 여 키 코드 앞에 야 합니다.

테이블 2키코드
SHIFT +
CTRL ^
Alt %

 

SendKeys 클래스는 Windows Vista에서 실행되는 애플리케이션에서 사용할 수 있도록 .NET Framework 3.0에서 업데이트되었습니다. Windows Vista의 향상된 보안(사용자 계정 컨트롤 또는 UAC라고 함) 때문에 이전 구현이 예상대로 작동하지 않습니다.

 

SendKeys 클래스는 타이밍 문제에 취약하며, 이를 해결하기 위해 일부 개발자가 노력해야 했습니다. 업데이트된 구현도 타이밍 문제에 취약하지만 약간 더 빠르며 해결 방법에 대한 변경이 필요할 수도 있습니다. SendKeys 클래스는 먼저 이전 구현을 사용하려고 시도하며, 실패할 경우 새 구현을 사용합니다. 따라서 SendKeys 클래스는 운영 체제마다 다르게 동작할 수 있습니다. 또한 SendKeys 클래스가 새 구현을 사용하는 경우 SendWait 메서드는 다른 프로세스로 전송된 메시지가 처리될 때까지 기다리지 않습니다.

 

애플리케이션이 운영 체제와 관계없이 일관된 동작에 의존하는 경우 app.config 파일에 다음 애플리케이션 설정을 추가하여 SendKeys 클래스에서 새 구현을 사용하도록 강제할 수 있습니다.

 

*예제 결과

 

소스코드에서 보듯이 Alt+PrntScr 키 조합을 해서 얻어 낸 결과로 폼(Form) 화면만 스크린 캡쳐 된 모습과

이미지 파일로 저장 하는 모습 입니다. (SendKeys.SendWait ("%{PRTSC}"))

 

 

다음으로 PrntScr 키 조합을 해서 얻어 낸 결과로 폼(Form) 화면만 스크린 캡쳐 된 모습과

이미지 파일로 저장 하는 모습 입니다. (SendKeys.SendWait ("{PRTSC}"))

 

 

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

 

[VBNET] SendKeys - 화면 캡쳐 (Screen Capture)

* VBNET Sendkeys 를 이용한 화면 캡쳐 (Screen Capture) 예제... - 사용한 컨트롤 : Button 2개, PictureBox 1개 전체 소스 코드 Form1.vb Public Class Form1 Private Sub button1_Click(ByVal sender As Syste..

kdsoft-zeros.tistory.com

 

반응형
반응형

* C# 사용자가 선택한 프로세스 죽이기 예제...

- WMI 를 사용하기 위해 참조 -> System.Management dll 을 추가 -> 소스 코드 using System.Management
  (WMI 는 현재 실행중인 프로세스 조회를 하기 위해)

 

Main

 

- 사용된 컨트롤: Button 2개, 리스트뷰 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_KillProccesor
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
        	//현재 실행 중인 프로세스 조회...
            string strWMIQry4 = "Select Name, ProcessID, ExecutablePath, WorkingSetSize From Win32_Process";
            int iCount = 1;
            listView1.Items.Clear();

            ManagementObjectSearcher oWMI = new ManagementObjectSearcher(new SelectQuery(strWMIQry4));
            foreach (ManagementObject oItem in oWMI.Get())
            {
                try
                {
                    ListViewItem lvi = new ListViewItem();
                    lvi.Text = iCount.ToString();
                    lvi.SubItems.Add(oItem.GetPropertyValue("Name").ToString());

                    listView1.Items.Add(lvi);
                    iCount++;
                }
                catch (Exception)
                {
                }

            }

        }

        private void button2_Click(object sender, EventArgs e)
        {
            ListViewItem lvi = listView1.FocusedItem;
            //해당 프로세스 이름 가져 오기 (***.exe -> *** 로)
            string[] strTmp = lvi.SubItems[1].Text.Split('.');


            System.Diagnostics.Process[] pcProcess = System.Diagnostics.Process.GetProcessesByName(strTmp[0]);

            if (pcProcess.Length > 0)
            {
                pcProcess[0].Kill();
                MessageBox.Show("선택된 해당 프로세스를 종료 하였습니다.", "확 인", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);

                //New Search...
                button1_Click(null, null);
            }
            else
            {
                MessageBox.Show("선택된 해당 프로세스는 실행 되지 않았습니다.", "확 인", MessageBoxButtons.OK, MessageBoxIcon.Error );
            }

        }
    }
}

 

 

*예제 결과

 

 

 

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

 

[C#] [WMI] 현재 실행 중인 프로세스 조회 (Process Search)

* C# WMI 를 이용한 현재 실행 중인 프로세스 조회 (Process Search) - WMI 를 사용하기 위해 참조 -> System.Management dll 을 추가 -> 소스 코드 using System.Management 전체 소스 코드 Form1.cs using Syst..

kdsoft-zeros.tistory.com

 

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

 

[VBNET] 선택된 프로세스 죽이기 (Kill Process)

* VBNET 사용자가 선택한 프로세스 죽이기 예제... - WMI 를 사용하기 위해 참조 -> System.Management dll 을 추가 -> 소스 코드 Imports System.Management (WMI 는 현재 실행중인 프로세스 조회를 하기 위해)..

kdsoft-zeros.tistory.com

 

반응형
반응형

* C# 화면 캡쳐 (Screen Capture) 예제...

 

Main

 

-사용한 컨트롤: Button 2개, PictureBox 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_ScreenCapture
{
    public partial class Form1 : Form
    {
        Bitmap btMain;

        public Form1()
        {
            InitializeComponent();
        }

        private void btTSC_Click(object sender, EventArgs e)
        {
            ////Total Screen Capture
            btMain = new Bitmap(Screen.PrimaryScreen.Bounds.Width,
                                Screen.PrimaryScreen.Bounds.Height);
            using (Graphics g = Graphics.FromImage(btMain))
            {
                g.CopyFromScreen(Screen.PrimaryScreen.Bounds.X,
                                    Screen.PrimaryScreen.Bounds.Y,
                                    0, 0,
                                    btMain.Size,
                                    CopyPixelOperation.SourceCopy);

                //Picture Box Display
                pbMain.Image = btMain;
                
            }
        }

        private void btFilesave_Click(object sender, EventArgs e)
        {
            //File Save
            if (btMain != null)
            {
                SaveFileDialog sfd = new SaveFileDialog();

                sfd.Filter = "JPG File(*.jpg) | *.jpg";

                if (sfd.ShowDialog() == DialogResult.OK)
                {
                    btMain.Save(sfd.FileName);
                }

            }

        }
    }
}

 

 

*예제 결과

 

- 전체 화면 캡쳐한 모습

 

 

-파일로 저장하는 모습

 

 

 

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

 

[VBNET] 화면 캡쳐 (Screen Capture)

* VBNET 화면 캡쳐 (Screen Capture) 예제... -사용한 컨트롤: Button 2개, PictureBox 1개 전체 소스 코드 Form1.vb Public Class Form1 Dim btMain As Bitmap Private Sub btTSC_Click(ByVal sender As System...

kdsoft-zeros.tistory.com

 

반응형
반응형

* C# WebBrowser 컨트롤을 이용한 외부 IP 알아내기 예제...

 

Main

 

-사용한 컨트롤 : WebBrowser 1개, Label 1개, 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;

namespace CSharp_외부IP
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            string strURL = "http://www.findip.kr/";
            
            //스크립트 오류 무시 하기...
            webBrowser1.ScriptErrorsSuppressed = true;
            webBrowser1.Navigate(strURL);
        }

        private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
        {
            if (webBrowser1.Document != null)
            {
                HtmlDocument hdDoc = webBrowser1.Document;
                HtmlElementCollection hecArray = hdDoc.GetElementsByTagName("h1");

                label1.Text = hecArray[0].OuterHtml;

            }
        }
    }
}

 

위 소스 코드에 보듯이 외부 사이트에 접속 해서 외부 IP 를 얻어 오는 방법으로 webBrower 컨트롤 로 외부 사이트 접속

-> 사이트 html 을 다운 하여 태그에서 얻어 오는 걸 볼 수 있습니다.

HtmlElementCollection 변수에 바로 배열 인덱스 0 을 쓴 이유는 h1 태그가 하나 밖에 없어서 이며, 혹 h1 태그가 여러개가 되면 for 문 또는 for each 문을 사용하여 사용자가 확인 후 걸러낼 수 있습니다. 

 

아래의 그림처럼 구글 크롬으로 외부 사이트 접속 하여 상단 메뉴에 개발자 도구를 선택. 붉은 테투리 의 h1 태그 이름을

가져 옵니다. 

 

 

*예제 결과

 

결과 화면

 

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

 

[VBNET] [Control] WebBrowser 컨트롤 - 외부 IP 알아내기

* VBNET WebBrowser 컨트롤을 이용한 외부 IP 얻어 오기 예제... Main -사용한 컨트롤 : WebBrowser 1개, Label 1개, Button 1개 전체 소스 코드 Form1.vb Public Class Form1 Private Sub button1_Click(ByVal s..

kdsoft-zeros.tistory.com

 

반응형

+ Recent posts