시스템함수 Beep(int frequency, int duration)을 이용하면 된다 Kernel32.dll을 임포트해서 사용할 수 있다. 예제소스 : /// /// 비프음을 내는 시스템 함수 /// /// 주파수 /// 비프음 길이(시간, 단위 : 1000 = 1초) [DllImport("KERNEL32.DLL")] extern public static void Beep(int freq, int dur); public static void Main() { // 출처 : 네이버 // 도 = 256Hz // 레 = 도 * 9/8 = 288Hz // 미 = 레 * 10/9 = 320Hz // 파 = 미 * 16/15 = 341.3Hz // 솔 = 파 * 9/8 = 384Hz // 라 = 솔 * 10/9 =..
[DllImport("user32.dll")] public static extern short GetKeyState(int keyCode); [DllImport("User32.dll")] public static extern void keybd_event(byte bVk, byte bScan, int dwFlags, int dwExtraInfo); if ((Win32API.GetKeyState((int)Keys.CapsLock) & 0xffff) != 0) { Win32API.keybd_event((byte)Keys.CapsLock, (byte)0, 0, 0); Win32API.keybd_event((byte)Keys.CapsLock, (byte)0, 2, 0); } 설명 : Win32 API 함수 중에..
C#에서 다중배열은 크게 일반적인다중배열, 톱니배열로 나눌수 있습니다. 일반적인 다중배열은 각 차원을 한번에 설정해주어야 하고 각 차원마다의 크기가 같게됩니다. 톱니배열은 각차원의 크기를 다르게 설정해줄 수 있고, 차원의 크기를 실행중에 할당할 수 있습니다. 간단히 예제를 보시면 이해되실 수 있을거라 생각됩니다. int lv1 = 2; int lv2 = 3; int lv3 = 4; // 일반적인 다중배열 사용방법 double[,,] PanBuf; PanBuf = new double[lv1,lv2,lv3]; PanBuf[0, 0, 0] = 5.0; // 톱니배열사용(각 차원의 크기를 다르게 지정할 수 있음) // 톱니배열 사용 예 #1 - 각 차원마다 같은 크기 지정 // 1차원 - lv1, 2차원 lv2..
[질문 – C++에서의 CList를 C#에서 어떻게 구현하는가] 이번에 C#을 다루게 되었는데, MFC로 구현된 것을 C#으로 바꾸고 있습니다. 중간에 지금 막혀서 그런데 많은 답변 부탁드립니다;;; ㅠㅠ;; MFC의 CList 를 C#에서 List 으로 하는 표현방식이 맞는지 모르겟네요 오류는 나지않지만..... 그리고 MFC의 CList 클래스 GetHeadPosition(), GetNext() 를 C#으로 매칭시키는 함수가 궁금합니다;;; 아니면,,,, 구현하는 방법이라도 답변부탁드립니다;;;; ㅎㅎ [답변] List를 접근하는 방법은 열거자를 이용하는방법, 인덱스로 접근하는 방법, foreach문을 통해 접근하는 방법등이 있다. 간단한 예제를 작성해 보았다. 다음 3가지의 경우는 모두 같은 출력물..
유일무이한 인스턴스를 만들어 사용하기 프로그래밍을 하다 보면 여러 개의 클래스에서 한 개의 객체에 접근하고 싶을 때가 많습니다. 다음과 같은 클래스가 있다고 가정해봅니다. Code – Singleton.cs class Singleton { private int a; public Singleton() { a = 0; } internal void SetA(int val) { this.a = val; } internal int GetA() { return a; } } 간단한 클래스이니 주석이나 설명은 생략하겠습니다. 이 클래스의 객체를 생성하여 a값을 접근하는 두 개의 각각의 클래스가 있다고 생각해봅시다. Code – ClassA.cs class ClassA { Singleton singleton; publi..
앞서 포스팅한 자료와 마찬가지로 다음과같은 구조체를 만들어보면 public struct MyArray { public char[] charArray; public string str; } 크기는 8이 된다. fixed키워드를 사용하면 배열의 크기를 고정할 수 있지만, 안전하지 않은 코드(unsafe)영역으로 지정해야한다는 문제가 있다. MarshalAs키워드를 사용해 고정크기 배열 (혹은 고정크기 문자열)을 사용할 수 있다. [StructLayout(LayoutKind.Sequential)] public struct MyArray { [MarshalAs(UnmanagedType.ByValArray, SizeConst = 100)] public char[] charArray; [MarshalAs(Unman..
다른 언어로 작성된 코드와 같은 기존코드, DLL, COM 프로젝트를 사용하다보면 고정크기의 배열을 사용해야 할 때가 있다. C# 1.1까지의 경우 고정크기를 사용하지 못하였다. 예를들어 다음과 같이 구조체를 선언하였을 경우 public struct MyArray { public char[] pathName; private int reserved; } 구조체의 크기는 8바이트가 된다. pathName배열의 경우 힙에 할당된 배열에 대한 참조가 된다.(포인터의 역할) 4바이트라는 것이다. 이러한 문제점을 해결하기 위해 C# 2.0부터는 fixed 문을 사용하여 고정크기의 배열을 만들 수 있게 하였다. public struct MyArray { public fixed char pathName[128]; } ..
이번 과제로 사용했던 메소드 잘 안긁어와진다면... StreamReader부분의 생성자에서 Encoding을 바꿔보세욤 private string GetHtmlString(string url) { HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.Default); string strHtml = reader.ReadToEnd(); reader.Close(); response.Close(..