본문 바로가기

C#

[WPF] WPF에서 Control 접근시 CrossThread 피하기 winform과 달리 invoke Require를 체크하는것이 따로 없다. 그리고 Dispatcher 로 스레드 문제를 피할수 있다. using System; using System.Windows; using System.Windows.Threading; using System.Threading; namespace UFWallControler { public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); //시스템타이머로 다른 스레드 생성 System.Timers.Timer timer1 = new System.Timers.Timer(1000); timer1.Elapsed += new System.Timers.. 더보기
[C#] 현재 윈도우의 Top 핸들 얻기와 익스플로러로 타입캐스팅 하기 이전글 [ http://www.scripter.co.kr/entry/C-활성윈도우-이름-과-핸들-알아내기-와-익스플로러-주소값-알아내기 ] 는 나름대로 의미가 있었지만 딱 필요한 익스플로러만의 정보를 알아내기 위해서 아래와 같이 심플한 코딩이 가능하다. private void getWin() { //[0] 현재의 윈두우 핸들 얻기 int handle = GetForegroundWindow(); //[1] SHDocVw 의 브라우저에서 현재부라우져들 검출 foreach (SHDocVw.WebBrowser wb in new SHDocVw.ShellWindowsClass()) { //[2] 각각의 브라우져 핸들과 현제Top의 핸들 검출 if (wb.HWND.Equals(handle)) { //[3] 검출된 브.. 더보기
[C#] 활성윈도우 이름 과 핸들 알아내기 와 익스플로러 주소값 알아내기 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; //[0] 필요한 DLL 추가 SHDocVw는 윈도우에서 찾기 using SHDoc.. 더보기
[Shell32.DLL] *.LNK , *.URL 분석하기 /**************************LNK파일 모양******************************/ L ? F? ?|邂栗S執네??|邂栗 t W P???i↖ +00? /E:\ l 1 ?? PROGRA~1 T 絶?뢒??* 퉠 P r o g r a m F i l e s ( x 8 6 ) X 1 ?? ARTHRO~1 @ 絶????* A r t h r o p o d d 2 t ?? ARTHRO~1.EXE H 絶????* U A r t h r o p o d . e x e d 4 c Kd끘 새 볼륨 E:\Program Files (x86)\Arthropod\Arthropod.exe ( ? 1SPS?XF퍵8C샜?쁬? ` 쟚 uf15-pc V솝??? $?^ V솝??? $?^ /***********.. 더보기
[c# ThreadApartment] ActiveX 컨트롤 , COM 객체를 새로운 쓰레드에서 접근할때 예를 들어 새로운 쓰레드의 새로운폼 에서 아래와 같이 AX 객체를 생성하면,, 이러한 에러를 내밷는다.. 왜,, 사람들이 영문판을 쓸까? 하는 이유를 조금 알것 같다 , "아파트" , 도대체 ., 한국말로 아파트는 주택을 의미하는데 ,, 쓰레드가 내집마련의 꿈에 실패했다는 에러도 아니고 ... 그래서 axWindowsMediaPlayer1 에서 Thread 에러로 구글링해봐도 질문만 있지 누구하나 답변이 없었다. 그리고 msdn 포럼에 질문을 했다. http://social.msdn.microsoft.com/Forums/ko-KR/visualcsharpko/thread/a541e7bd-d9c0-4729-a006-4269dfa1c054 요번에도 Boram Kang 님이 답을 해주셨다. 답은 : http:/.. 더보기
[new Thread in new Form] 새로운 쓰레드 안에 새로운 윈도우폼 무작정 쓰레드를 생성하여 폼을 생성한다면... Thread t2 = new Thread(sample); t2.Start(); ... private void sample() { Form n = new Form(); n.Show(); } 바로 폼이 깜빡 거리고 만다. 해당쓰레드가 바로 죽기 때문이다.새로운 폼은 새로운 어플리케이션으로 생성해야 한다. Thread t2 = new Thread(sample); t2.Start(); ... private void sample() { //Form n = new Form(); //n.Show(); Application.Run(new Form2()); } 주의할점은 Application.Run 앞에 모든 명령이 와야 한다.해당 쓰레드는 Application을 기점으로 .. 더보기
[AxShockwaveFlashObjects] AS3 in C# http://www.scripter.co.kr/entry/FlashExternal-c-안에-as3-AVM2-넣기 에서 같은주제를 아주 예전에 다루었지만 내용이 너무 부실하고, 철없었기 때문에 보강을 해야겠다. 사실 구글에 많이 올라와 있는 "AxShockwaveFlashObjects" 관련글들을 그대로 따라했다가는 이유도 모르는 FileNotFoundException 이 나올것이다. 그런 분들은 아래의 DLL 을 사용하기 바란다 . 코드를 살펴 보겠다. c# Created with colorer-take5 library. Type 'csharp' using System; using System.Collections.Generic; using System.ComponentModel; using System.. 더보기
[.Net Profiler] ANTS Memory Profiler 사용해보기 현재 6버전까지 나왔다. 지금은 5버전 을 테스트 해보겠다. 메뉴 항목에서 .net Executable 을 선택하고 대상을 찾고 스타트 버튼을 누르자 그러면 실행과 동시에 프로파일러가 실행되고 상단에 사진기 모양의 아이콘 , Take Memory SnapShot 을 클릭한다. 그러면 익숙한 프로파일링 장면이 나올것이다. 여기서 Grop By namespace 를 체크하면 좀더 편리하게 객체를 조사할수 있다. 그럼 한번 객체를 생성하여 보자 , 정말 프로파일링이 되는지 ... 객체를 생성하고 스냅샷을 찍었더니 정말 Texture2d 객체의 개수가 늘어났다. 그에 따른 메모리 바이트도 표시되고 이전 스냅샷과 비교하여 얼마나 늘었는지 줄었는지도 표로 금방 알수 있다. 화살표로 되어 뺀부분은 객체를 삭제 하였을.. 더보기
[LINQ _ XML] 간략한 LINQ to XML 사용법 샘플 XML http://www.samsung.com/us/boosted SAMSUNG MOV http://www.hyundai.com/kr/main.aspx HYUNDAI MOV http://www.lg.co.kr/ LG MOV C# [Linq _ XML] Created with colorer-take5 library. Type 'csharp' using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Xml.Linq; using System.Text; using System.Windows.For.. 더보기
[Zxing , QR Sample ] C# 에서 QR 라이브러리 사용하기 실버라이트 용 QR 라이브러리도 코드플렉스에 있지만.. 요걸 사용하고 싶었다 . 그런데 요놈은 c# 용 레퍼런스가 아무것도 없었다 . 자바와 ios 는 잘되어 있던데 ., 그래서 AS3 용 코드를 보고 어영부영 따라해 보았다. using System; using System.Drawing; using System.Windows.Forms; using AForge.Video.DirectShow; using AForge.Controls; using System.Collections; using com.google.zxing; using com.google.zxing.common; using com.google.zxing.qrcode; using trace; namespace Xing_TEST { public.. 더보기
[C# Simple Callback] C# 의 정말 간단한 콜백 호출방법 as3 를 예로 들자면 콜백작성이 매우 자유롭다 이유는 Function 형이 존재하기 때문이다. ex> var someMethod : Function someMethod() 처럼 변수처럼 선언하였다가 변수를 원할때는 '()' 를 빼줬다가 메소드를 원할때는 '()'를 붙이기만 하면 된다. c# 은 이러한 나이스한 방법이 다소 제한된다. 교과서 적인 콜백을 보자면, 정석적인 이벤트 선언이나, 기본 api에서 제공하는 콜백을 사용하는 경우를 무수히 볼수 있다. 하지만 더욱 간편하고 as3 의 표현과 같은 느낌으로 사용하는 법을 한번 보자 정말 심플한 콜백 사용법이다. public partial class Form1 : Form { public Form1() { InitializeComponent(); //콜백.. 더보기
[c#] 익명타입의 (열거)배열 생각에 시작은 이러하다 . 예를 들어 AS3에 Tweener 의 일반적인 사용법을 보면 Tweener.to( targetObject , 1 , { x : 100 , y : targetObject.y + 100 , rotation : 100 , scale : 1.2 }) ; Tweener.to( ColorMatrix , 2 , { r : 2.32 , g : 32.12 , b : –42.01 , a : 0.5 }); 대부분이 요러한 모양이다 . 첫째 줄을 해석하면 , “targetObject 를 1초 동안 x좌표를 100으로 , y 좌표를 100만큼더 , 회전을 100도 , 스케일을 20% 키워라.” 가 되겠고 , “둘째 줄은 컬러매트릭스를 2초동안 , 빨강을 2.32 , 초록을 32.12 , 파랑을 –42.. 더보기
[c#] 간단한 Generic List public class GenericList { private class Node { private Node next; private T data; public Node(T t) { next = null; data = t; } public Node Next { get { return next; } set { next = value; } } public T Data { get { return data; } set { data = value; } } } private Node head; public GenericList() { head = null; } public void Add(T t) { Node n = new Node(t); n.Next = head; head = n; } public IEnumera.. 더보기
[C# ,쉬운 이터레이터 만들기] Yield 키워드 간단히 개념잡기 public IEnumerable TestEnum1() { yield return "q1"; yield return "q2"; yield return "q3"; yield return "q4"; } public IEnumerable TestEnum2() { for (int i = 0; i 더보기
[AS3 , C# ,Serialize]AS3 와 C#의 직렬화 비교 [AS3 , C# ,Serialize]AS3 와 C#의 직렬화 비교 먼저 As3.0( AIR2.0 ) 이다 as.swfcsharp.swf Created with colorer-take5 library. Type 'csharp' //c#�� [Serializable] 와 비슷한 개념 [RemoteClass] public class Test { private var _str:String = "test"; public function Test() { } public function get str():String { return _str; } public function set str(value:String):void { _str = value; } } //\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\.. 더보기
[c# TCP socket] Clinet가 죽은것을 알아채기 TcpClient 클래스 속성중 Connected 라는 속성이 있다. 말그대로 클라이언트가 살았는지 죽었는지 판단하는 속성인데 서버에서 잘 작동하지 않는다. ( 나만 잘 모르는 것일수도 있다.) 그리고 통상적으로 while 루프 안에 스트림을 읽어 오는 코드를 작성한다음 클라이언트 프로그램이 종료 되는경우를 TcpClient 클래스 속성중 Connected 를 이용하면 무한 루프에 빠진다. 해결책은 클라이언트로 오는 바이트 수가 "0" 인것을 확인하여 처리를 해주면 된다. while(true) { /***중요***/ reciveByte = new byte[1024]; data = reader.ReadLine(); if(data == null) { Invoke(mrg , "클라이언트가 죽었습니다"); Ac.. 더보기
[C#]Dictionary foreach KeyValuePair 를 이용한다 Dictionary dic = new Dictionary(); dic.Add("String0", true); dic.Add("String1", 13); foreach (KeyValuePair p in dic) { Console.WriteLine(p); } 더보기
[Simple Text Writer V0.1] 간편한 파일 쓰기 어플 간편한 파일 쓰기 어플 client code (AS3) flush 규칙! 파일경로(filePath):::내용(content) + "\n" (':::' 요걸로 파일경로와 내용을 구분합니다.) ex >> "c:\\sampleFolder\\childFolder\\content.xml" +":::" +xml.toString() +"\n"; 그냥 자기 컴퓨터에서 돌아가는 로컬용 입니다.(웹은 당연 안돌아가겠죠) 대용량은 테스트 안해봤습니다. 하루 종일 돌려보진 않았습니다. 피드백은 덧글로.. 버전업은 할수 있을지. ,, 과연 = =; 옵션도 넣고 하려 했지만.. 일을 줄이기 위해 만드는건데, 이게 더 일이 될것 같아서 딱 필요한것만 구현했습니다. 더보기
[WinForm] Graphic을 PictureBox에 넣어보자! 픽처박스에 이미지를 바로 넣으면 좌표와 크기 조절등에서 제약이 생긴다. 그래서 그래픽을 사용하였다. 그리리고 문제는 그림이 윗창에 가리거나 최소화 되는경우 그림이 지워지는 경우가 발생하였다. ( 당연한 경우지만.. ) 그래서 알아본결과 http://www.techotopia.com/index.php/Drawing_Graphics_in_C_Sharp 처럼 Graphic을 사용할시 Paint 이벤트를 사용해 변경이 있을때 마다 매번 다시 그려 줘야 한다고 한다. 그러나 Paint 이벤트를 사용한다면 고속처리가 어렵다. 그래서 픽처박스의 고속 이미지 처리와 Graphic을 사용하여 위치와 크기 조절을 할수 있는방법을 알아보겠다 ( 왜... 구글링해도 안나올까? ) Created with colorer-take.. 더보기
[Sharp Developer , XNA3.1] SharpDeveloper 의 Empty 프로젝트에 XNA 사용하기 새 솔루션에서 Empty 프로젝트를 생성 참조 추가에 xna 를 찾아준다. 기본적인 Game1.cs 코딩을 해준다. 시작점을 잡아주고... 디버깅 성공... 오늘도 잡기술만 늘어가고........ 더보기
[c#][Aforge] 웹캠 영상출력 http://www.codeproject.com/KB/game/VidTextureClassWebcamApp.aspx?msg=2630927 는 속도도 그렇고., 품질이 조금 아닌듯 하여.. Aforge 로 캠영상을 받아서 픽셀을 실시간으로 Texture2D로 카피하는 계획을 세웠다. 우선 Aforge.net 으로 매우 간단한 캠 영상받기 Created with colorer-take5 library. Type 'csharp' using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; usi.. 더보기
[BackGroundWorkerTEST] Sync , Async , Thread 주요 Code MSDN http://msdn.microsoft.com/ko-kr/library/system.componentmodel.backgroundworker(v=VS.90).aspx?appId=Dev10IDEF1&l=KO-KR&k=k(EHINVALIDOPERATION.WINFORMS.ILLEGALCROSSTHREADCALL);k(TargetFrameworkMoniker-".NETFRAMEWORK&k=VERSION=V3.5");k(DevLang-CSHARP)&rd=true Created with colorer-take5 library. Type 'csharp' //sync private void testCodeSync() { using (System.Net.WebClient wc = new Syst.. 더보기
[WIN32API] win32API (with using System.Runtime.InteropServices;) user32.dll public static extern IntPtr FindWindow(string lpClassName, string lpWindowName); public static extern void SetForegroundWindow(IntPtr hWnd); public static extern void BringWindowToTop(IntPtr hWnd); public static extern void SetWindowText(IntPtr hWnd, string strName); //윈도우의 DC 핸들 얻기 ( 화면 그리기 사용 ) public static extern IntPtr GetWind.. 더보기
[user32.dll] 강제 마우스 컨트롤 ( user32.dll spec ) 스트레스 테스트에 활용할법한.. Created with colorer-take5 library. Type 'csharp' 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; using System.Diagnostics; namespace AutoMouseTest { public partial class AutoMouseCursor : Form { //user32.d.. 더보기
[Thread Invoke / BeginInvoke] invoke 와 begininvoke 의 차이 연구 Created with colorer-take5 library. Type 'csharp' /* * Created by SharpDevelop. * User: jjongun * Date: 2010-03-04 * Time: ��전 11:27 * * To change this template use Tools | Options | Coding | Edit Standard Headers. */ using System; using System.Collections.Generic; using System.Drawing; using System.Windows.Forms; using System.Threading; using System.Diagnostics; namespace TestEventThread { //Cr.. 더보기
[C# FileDialog] 간단한 Open / Save 파일 다이얼로그 Created with colorer-take5 library. Type 'csharp' //파일 ��픈 다이얼로그 OpenFileDialog openPanel = new OpenFileDialog(); openPanel.InitialDirectory = "d:\\"; openPanel.Filter = "CustomFile (*.cus)|*.cus|txt (*.txt)|*.txt | All files (*.*)|(*.*)"; if(openPanel.ShowDialog() == DialogResult.OK) { Trace.WriteLine("OK " +openPanel.FileName+ " " + openPanel.SafeFileName); } //파일 세이브 다이얼로그 SaveFileDialog save.. 더보기
[C# Thread]종료시 프로세스 죽이기 Thread 를 사용하고, 프로그램을 그냥 종료 하면 작업관리자에 프로세스가 완전히 죽지 않는 경우가 생긴다. 이때 C#의 ApplicationExit 이벤트로 처리해주어야 한다. Application.ApplicationExit += new EventHandler(Application_ApplicationExit); ///..../// void Application_ApplicationExit(object sender, EventArgs e) { try{ server.Stop(); if(clinet != null) clinet.Close(); writer.Close(); reader.Close(); serverThread.Abort(); }catch{} } 여기서 server는 TCPListener 이.. 더보기
[socket] c# server , as3 client pc1 ( server ): c# (windows 7) pc2 ( client ) : AS3 (windows xp) c# code (partial) Created with colorer-take5 library. Type 'csharp' /* * SharpDevelop으로 작성��었습니다. * 사용자: jjongun * 날짜: 2010-02-09 * 시간: ��전 9:05 * * */ using System; using System.Collections.Generic; using System.Drawing; using System.Windows.Forms; using System.Threading; using System.Net.Sockets; using System.Net; using System.IO.. 더보기
[BeginInvoke] Delegate 로 스레드에 매개변수 전달하기 보통 스레드를 Thread t = new Thread( new ThreadStrat(Method) ); 의 형태로 사용 하는데 Method 에 매개변수를 전달하지 못한다는 제약이 있다. 그래서 delegate 의 BeginInvoke 메소드를 통해 스레드를 작성해보자. Created with colorer-take5 library. Type 'csharp' /* * SharpDevelop으로 작성��었습니다. * 사용자: jjongun * 날짜: 2010-02-04 * 시간: ��후 4:48 * */ using System; using System.Collections.Generic; using System.Drawing; using System.Windows.Forms; using System.Thre.. 더보기
[Windows form Invoke] System.Timers.Timer 로 windows form 접근하기 http://blog.daum.net/starkcb/117 를 보면 System.Timers.Timer (이하 시스템타이머) 로 윈도우 폼에 접근이 안된다는것을 확인할수 있다. 하지만 Invoke메서드 를 이용한 본인의 삽질끝에 발견했다. SharpDeveloper 사용 Created with colorer-take5 library. Type 'csharp' /* * System.Timers.Timer 로 windows form 접근��기 * lang : c# */ using System; using System.Collections.Generic; using System.Drawing; using System.Windows.Forms; using System.Timers; using System.Dia.. 더보기