* C# Encoding Class 를 이용한 유니코드(한글) 문자열 존재 여부 예제...
- 사용한 컨트롤 : 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 가 존재 하지 않습니다.";
}
}
}
}
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);
}
}
}
using (PerformanceCounter pc = new PerformanceCounter("System", "System Up Time")) { pc.NextValue(); label1.Text = TimeSpan.FromSeconds(pc.NextValue()).ToString(); }
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
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}"))