반응형

IT 50

[C#] 크로스쓰레드

[질문] "한 스레드에 만든 컨트롤은 다른 스레드에 있는 컨트롤의 부모가 될 수 없습니다." 라는 오류가 발생합니다. - Form class - ClassA (내부에서 Thread 생성) - ClassB (내부에 DataTable 개체 소유) Form은 ClassA를 멤버로 가지며, ClassA는 ClassB를 멤버로 가집니다. A에서 생성된 Thread에서 ClassB에 Form의 DataGrid 참조를 넘기면 ClassB는 참조를 받아 이 그리드의 DataSource를 설정하는 부분에서 위와 같은 오류가 발생합니다. 조언 부탁드립니다... ^^ 좋은 하루 되세요~ -----------------------------------------------------------------------------..

IT/C# 2011.01.11

[C#] c#을 이용한 usb 연결, 연결해제 처리

ㅊprotected override void WndProc(ref Message m) { UInt32 WM_DEVICECHANGE = 0x0219; UInt32 DBT_DEVTUP_VOLUME = 0x02; UInt32 DBT_DEVICEARRIVAL = 0x8000; if ((m.Msg == WM_DEVICECHANGE) && (m.WParam.ToInt32() == DBT_DEVICEARRIVAL)) { MessageBox.Show("디바이스가 연결되었습니다."); int m_Count = 0; int devType = Marshal.ReadInt32(m.LParam, 4); if (devType == DBT_DEVTUP_VOLUME) { MessageBox.Show("USB 장치가 연결 됨"); }..

IT/C# 2011.01.11

[C#] PC 종료 코드

안녕하세요? 홍석입니다. 컴퓨터를 종료/재부팅/로그오프를 하는방법은 다음과 같습니다. 기본적으로 Using System.Diagnostics을 사용하며,예제코드는 다음과 같습니다.종료Process.Start("shutdown.exe", "-s"); // 기본적으로 30초 후 종료됩니다.Process.Start("shutdown.exe", "-s -t xx") // xx 초 후 종료됩니다. 재부팅Process.Start("shutdown.exe","-r"); // 종료과 유사하며 커멘드만 "-r"을 사용합니다.Process.Start("shutdown.exe","-r -t xx"); 로그오프Process.Start("shutdown.exe","-l"); // 위 코드와 유사하며 커멘드만 "-l"(숫자 1이..

IT/C# 2011.01.11

[C#] 메모리 Leak?

[ 질문] 안녕하십니까. 궁금한 점이 있어 질문 드립니다. 응용프로그램이 있습니다. C#으로, .NET 2.0 환경입니다. 응용프로그램을 실행시키면 원래 사용 메모리가 죽죽 올라갔다가 GC로 다시 일정 수준까지 내려오고, 이것을 반복하면서 메모리가 어느선까지 유지가 되어야 하는데요... 메모리가 아주 죄금씩 증가됩니다. 처음에는 문제가 되지 않지만, 오~랜 시간동안 프로그램을 실행시켜놓으면, 서서히 서서히 맛탱이가 떠나가고맙니다..;; 이럴경우, 소스를 확인해봐도 도저히 어디서 메모리 누수(?)가 발생하는지 확인하지 못하면, [답변] C# 에서는 기본적으로 Leak 이란게 없습니다 단 프로그램 실수상으로 나올 수 있는데. 1. ActiveX 등의 UnManaged 메모리를 제대로 처리하지 않은경우(이건 ..

IT/C# 2011.01.11

[C#] 윈폼 로그인 해킹에 안전하게?

[질문] 리버스 엔지리어링으로 부터 접속 아이디와 패스워드 보호하기----------------------------------------------------------------------------------- 원폼 --------> 미들티어(XML 웹서비스, WCF 서비스) ----(서버접속 아이디와 패스워드)----> 서버 로그인 필요 없는 경우에는 미들티어를 사용하여 서버 접속 아이디와 암호를 보호 할 수 있겠지만. 원폼 ----(아이디, 패스워드)----> 미들티어(XML 웹서비스, WCF 서비스) ----(서버접속 아이디와 패스워드)----> 서버 미들티어에 로그인 필요한 경우에 아이디와 패스워드를 보호 할 수 있는 방법이 무엇이 있을까요? [답변] 1. SSL 등의 암호화 방법들 2. M..

IT/C# 2011.01.11

[C#] 프로그램 중복 실행 방지

program.cs의 Main()에 코딩해 주면 될듯 하네요 int thisID = System.Diagnostics.Process.GetCurrentProcess().Id; // 현재 기동한 프로그램 id //실행중인 프로그램중 현재 기동한 프로그램과 같은 프로그램들 수집 System.Diagnostics.Process[] p = System.Diagnostics.Process.GetProcessesByName("프로그램명"); if (p.Length > 1) { for (int i = 0; i < p.Length; i++) { if (p[i].Id != thisID) continue; // 프로그램명은 같은데 똑같은 친구가 있다면... p[i].Kill(); // 프로그램명도 같고 프로그램 id가 같..

IT/C# 2011.01.11

[C#] 자석 효과 사용법 설명

일반적으로는 폼이 이동중일때마다 근처에 위치한 윈도우나 바탕화면의 경계면 좌표를 계산해서 일정 거리내로 접근하면 해당 좌표로 이동중인 폼의 좌표를 강제로 설정 해 주는 방식을 사용합니다. 생각보다는 어렵지 않구요. 접근 거리만 적당히 지정하면 기존의 자석 효과와 별반 다르지 않은 수준까지 쉽게 개발이 가능합니다. 자신이 작성한 어플리케이션내에서 자석 효과를 구현 할 때에는 각 폼의 좌표만 계산하는 것이 별로 문제 될 것 없지만 바탕화면에서 실행중인 모든 윈도우를 대상으로 자석 효과를 구현한 다면 전체 윈도우의 목록을 얻고 각 윈도우의 특성에 맞게 자석 효과를 구현 해 줘야 합니다. GetWindowRect 나 GetClientRect API를 사용하시면 해당 윈도우의 RECT를 알 수 있습니다. 보통은 ..

IT/C# 2011.01.11

[C#] Combobox사용법

BOOL CTestDlg::OnInitDialog() { CDialog::OnInitDialog(); // TODO: Add extra initialization here this->m_ctrCombo1.ResetContent(); //콤보박스내의 모든 문자열 삭제 this->m_ctrCombo1.AddString(_T("ABCD")); //문자열을 추가 this->m_ctrCombo1.AddString(_T("1234")); //문자열을 추가 this->m_ctrCombo1.AddString(_T("5678")); //문자열을 추가 this->m_ctrCombo1.DeleteString(0); //첫번째 문자열(ABCD)을 삭제 this->m_ctrCombo1.SetCurSel(0); //첫번째 문자열..

IT/C# 2011.01.11
반응형