일반적으로 프로그램을 배포시 exe파일과 Application이 호출하는 dll파일은 동일한 폴더(또는 dll 파일이 System폴더에 위치)에 있어야 한다. Microsoft 공식 배포처에서는 exe와 호출하는 라이브러리를 병합하는 프로그램을 배포중이지만, 컴파일러단에서 자체 해결할 수 있는 방법도 존재한다. 1. 사용하고자 하는 dll을 프로젝트에 참조 2. 해당 dll을 프로젝트 리소스에 추가 3. 리소스에 추가된 dll의 속성 -> 빌드작업 속성 값을 포함 리소스로 지정 4. 프로그램 진입점(Program.cs)에 코드를 아래와 같이 변경 /// /// 해당 응용 프로그램의 주 진입점입니다. /// [STAThread] static void Main() { // 리소스 dll 취득 AppDomai..
초보 개발자가 C#과 웹을 연동하여 작업을 할때 인코딩 문제로 당황하는 경우가 많다. .NET 에서는 사용자의 버전에 따라 HTML 또는 Uri의 인코딩을 지원해 준다. 1) .NET Framwork 4 이상 (Client Profile은 지원하지 않는다.) private string UrlEncode(string text) { return System.Web.HttpUtility.UrlEncode(text); } private string UrlDecode(string text) { return System.Web.HttpUtility.UrlDecode(text); } 2) 그 외 버전 private string UrlEncode(string text) { return System.Uri.EscapeD..
Java로 코딩 당시는 System.currentTimeMillis() 함수를 상당히 유용하게 썼었다. C#을 하면서 같은 결과를 낼 수 있는 방법이 있다. 물론, StopWatch나 TimeSpan등을 이용하면 같은 효과를 낼 수도 있다. 이 글에서는 Java와 동일한 방식을 구현한 코드를 작성했다. private readonly DateTime Jan1st1970 = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); private long CurrentTimeMillis() { return (long) (DateTime.UtcNow - Jan1st1970).TotalMilliseconds; } private void Test() { long oldTime ..
Winhttp를 이용하여 웹서버에 게시글을 작성하는 작업을 할 때, 인코딩 문제로 실제 게시글이 깨져 보이는 현상이 생긴다. 해당 웹서버의 인코딩 설정에 따라 다르지겠지만 가장 자주 쓰이는 UTF-8과 ecu-kr 인코딩 방법을 정리 해둔다. // euc-kr private string EncodingByEuckr(string s) { byte[] euckrBytes = System.Text.Encoding.GetEncoding(51949).GetBytes(s); string urlEncodingText = ""; foreach (byte b in euckrBytes) { string addText = Convert.ToString(b, 16); urlEncodingText = urlEncodingTex..
C# 으로 코딩을 하다보면 가끔 JavaScrip를 써야할 경우가 있다. (거의 없음) js파일을 분석하여 C# 코드로 재코딩 할수도 있지만, ScripControl을 이용하면 원본 js파일을 그대로 이용이 가능하다. 1. 실행 코드 - 코드 작성에 앞서 C:\Windows\System32\msscript.ocx 파일을 참조 추가 한다. // Script 함수 실행 private string RunScript(string scriptCode, string functionName, object[] param) { var sc = new MSScriptControl.ScriptControl(); sc.Language = "JavaScript"; sc.Reset(); sc.AddCode(scriptCode);..
자주 사용하는 함수임에도 불구하고 항상 쓸때마다 찾아 본다.. // 16진수로 변환 public string ToHex(int i) { // 대문자 X일 경우 결과 hex값이 대문자로 나온다. string hex = i.ToString("x"); if (hex.Length % 2 != 0) { hex = "0" + hex; } return hex; } // 10진수로 변환 : Long public long ToLong(string hex) { return Convert.ToInt64(hex, 16); } // 10진수로 변환 : Int public int ToDec(string hex) { return Convert.ToInt32(hex, 16); } // 10진수 -> 16진수 Console.Write..
MainThread(UI Thread)가 아닌 Thread가 컨트롤로 접근시 컴파일 에러가 발생한다. 이러한 에러를 Cross Thread Error 라고 한다. 어떻게 보면 불편 하기도 하지만, 보다 안전한 코딩을 컴파일러에서 지원해준다는 점에서 좋은 것 같다. 간단한 툴의 경우는 보통 단일 Thread로 사용이 가능 하나, 약간의 기능을 더 넣고자 한다면 필수적으로 추가 Thread가 필요할 것 이다. (자주 쓰이는 예로, 개별 Thread에서 일련의 작업과정을 textBox에 로그로 기록하는 상황이 있다.) 1. delegate를 선언하여 사용하는 방법 private delegate void delegate_WritetLog(Control ctr, String log); private void Wr..
WinHttp를 사용하기 위해서는 winhttp.dll을 참조 후 프로젝트에서 using 해줘야 한다. 1. C:\Windows\System32\winhttp.dll 을 참조 추가 2. 프로젝트내에서 using WinHttp; 입력 private List GetCookie() { var winHttp = new WinHttpRequest(); winHttp.Open("POST", "임의의 POST URL"); winHttp.SetRequestHeader("Referer", "임의의 Referer URL"); winHttp.SetRequestHeader("Content-Type", "application/x-www-form-urlencoded"); winHttp.Send("임의의 전달 값"); winHtt..
C# 에서 Thread는 크게 2가지로 나뉜다. 1. 매개인자가 없는 일반적인 쓰레드 2. 매개인자가 있는 쓰레드 약간의 차이가 있으나 두가지 방법 모두 어렵지 않다. 1. 매개인자가 없는 일반적인 쓰레드 private void ThreadStart() { System.Threading.Thread th = new Thread(new ThreadStart(Test)); th.Start(); } private void Test() { Console.WriteLine("Good"); } 2. 매개인자가 있는 쓰레드 private void ThreadStart() { string[] param = { "Param", "Good" }; System.Threading.Thread th = new Thread(ne..
- Total
- Today
- Yesterday