본문 바로가기

SoftWare/Visual C#33

C# 투명 PictureBox 만들기 GIF 같은 형식의 투명색이 존재하는 그림을 사용해야한다.. pictureBox2.BackColor = Color.Transparent; BackColor 칼라를 투명으로 해주면~~ 투명으로~~ 2009. 11. 5.
C# 키보드 후킹 첨부파일 다운로드하고.. 솔루션에 추가시켜야함... using System.Runtime.InteropServices; using Utilities; //첨부cs파일 네임스페이스 namespace key_preview { public partial class Form1 : Form { globalKeyboardHook gkh = new globalKeyboardHook(); public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { gkh.HookedKeys.Add(Keys.Decimal);//후킹할 키 등록 gkh.KeyDown += new KeyEventHandler(gkh_KeyDown).. 2009. 5. 28.
C# Txt Log 만들기 public void TXTLog(String strMsg) { try { string m_strLogPrefix = AppDomain.CurrentDomain.BaseDirectory + @"LOG\"; string m_strLogExt = @".LOG"; DateTime dtNow = DateTime.Now; string strDate = dtNow.ToString("yyyy-MM-dd"); string strPath = String.Format("{0}{1}{2}", m_strLogPrefix, strDate, m_strLogExt); string strDir = Path.GetDirectoryName(strPath); DirectoryInfo diDir = new DirectoryInfo(strD.. 2009. 4. 28.
C# Ping Test using System.Net.NetworkInformation; private Ping ping = new Ping(); private PingOptions pingOption = new PingOptions(); private bool PingTest(string strIP) { byte[] byteSendData = Encoding.ASCII.GetBytes(strSendData); PingReply pingReply = ping.Send(strIP, 120, byteSendData, pingOption); if (pingReply.Status == IPStatus.Success) { Debug.WriteLine("핑성공!"); return true; } else { Debug.WriteLine(".. 2009. 4. 28.
C# Target 빌드 이벤트 로봇쪽 어플리케이션은 PC에서 프로그래밍 하고.. Bin 파일을 Robot에 저장해야되는데.. 빌트 Output을 로봇쪽으로 해놓으면... 난감한 상황이 발생한다... 로봇과 연결이 않되있을때에는 프로젝트를 불러오기 힘들다는거... 그래서.. 빌드 이벤트를 사용~~~ 로컬컴퓨터에 빌드후 Bin파일만 로봇쪽으로 Copy.. copy "$(TargetDir)\$(TargetFileName)" "\\192.168.1.171\로컬 디스크 (d)\0. UCity BIN\$(TargetFileName)" copy "$(TargetDir)\$(TargetFileName)" "※위치※\$(TargetFileName)" 2009. 3. 28.
C# 안정화 과정 오류가 많지 않기로 소문난 C# 가비지 컬렉터라고하죠? C++의 메모리 관리를 프로그래머가 직접 해줘야하는 힘든과정을.. 자동으로 해주는것이 C#의 가비지 컬렉터... 정말 좋지만.. 세부메모리를 건드릴려면 힘들다는 단점. C# 안정화 과장. Form기반. 1. Form클래스에 사용하고자하는 기능을 올림... -> 작동이 잘되는지 확인.. 2. 그 기능을 독작하게하는 클래스를 생성후 Form을 부모클래스로 연결해 사용.. -> 안정화 완료.. 3. DLL화.. 음 내 경험상 바로 DLL을 만들어서 하니까 잘 않되는게 많음.. Form기반에 올려 성능검증을 마친후 클래스화시켜 마지막 DLL DLL로 만드는 이유는 나중에 다른 솔루션에서 가따 쓰기가 참 편리하다~ 2009. 3. 23.
C# CPU사용율 알아내기 private ManagementPath cpuPath = null; private ManagementObject cpuObject = null; private ManagementScope scope = null; private ulong oldCpuValue, oldNanoValue; public void SetWMIObject() { this.cpuPath = new ManagementPath(); this.cpuPath.RelativePath = "Win32_PerfRawData_PerfOS_Processor.Name='_Total'"; this.cpuObject = new ManagementObject(this.scope, cpuPath, null); } public decimal ObtainCp.. 2009. 3. 19.
C# Thread 편리하게 사용하기. C#의 Thread는 3종류가 있다.. 일반적으로 Thread, ThreadPOOL, TimerThread Thread는 일반적인 Thread이고 ThreadPOOL은.. Thread가도는데 또 콜이들어오면 기다리고있다가 Thread가 종료되면 시작되는 Thread TimerThread는 타이머와같이 정해진시간에 한번씩 뜨는 Thread이다... 일반 Timer와 TimerThread의 차이점은 Timer에서 Sleep 현상이 일어나면 프로세서가 멈추지만.. TimerThread는 Sleep이 걸려도 프로세서가 멈추지 않는다는점이다.. Thread의 경우 한번이라도 돌았을경우 프로세서가 죽을때 if (!(Algoritms == null)) Algoritms.Abort(); 라는 문구를 넣어줘야 프로세서가.. 2009. 3. 19.
Emgu CV C#용 영상처리 라이브러리 http://www.emgu.com/wiki/index.php/Main_Page OpenCV를 쓰려면 무조건 선택의 여지없이 MFC로 개발해야된다.. C#용 영상처리 라이브러리... Emgu CV는 C#도 가능! 2009. 3. 16.
C# Class Library 만들기(이벤트 포함) C#의 클래스 라이브러리는 이벤트핸들러를 Main Form에게 보낼수 있는 장점이 있다.. 즉... 콜백?의 비슷한 의미라고? 봐야하나??? 하여튼.. 사용방법을 설명.. 1. ClassLibrary 를 만든다... 2. 작업 3. 컴파일.. 끝 -_-;; DLL(Class Library) 소스 더 써야됨..ㅠㅠ 2009. 3. 8.
C++ DLL Callback 을 C# 루틴으로 가져오기 typedef BOOL __stdcall Callback(int a, int b); //Hslee 콜백 등록! Callback *_cb; //C#의 콜백루틴 받아오는 포인터변수 void CallBackCall() //콜백 루틴시키는 함수...(Callback함수와 연결됨) { if(_cb != NULL) (_cb)(10,20); } void RegCallback(Callback *pcb) //C#의 콜백루틴 받아와 연결하는 함수 { _cb = pcb; } using System.Runtime.InteropServices; namespace CallbackTest { class Program { [DllImport("CallbackTestDll.dll")] static extern void RegCallb.. 2009. 3. 6.
C# Process Class //윈도우를 종료 System.Diagnostics.Process.Start("cmd.exe","ShutDown.exe -s -f -t 00"); //윈도우를 재부팅 System.Diagnostics.Process.Start("cmd.exe","ShutDown.exe -r -f -t 00"); //특정 폴더 열기 System.Diagnostics.Process.Start("explorer.exe", "C:\Temp"); //특정 사이트 열기 System.Diagnostics.Process.Start("explorer.exe", "http://www.naver.com"); //도스명령어 실행 System.Diagnostics.Process.Start("cmd.exe","/c dir"); private vo.. 2009. 3. 6.
C# 윈도우메세지 WM_USER MESSAGE 받기 Recive : protected override void WndProc(ref Message m) { base.WndProc(ref m); if (m.Msg == 1024 + 1) { Debug.WriteLine("메세지가 들어왔음!"); } } Trancive : public class Win32API { [DllImport("User32.dll", CharSet = CharSet.Auto)] public static extern int FindWindow(string className, string windowName); [DllImport("User32.dll", CharSet = CharSet.Auto)] public extern static bool PostMessage(IntPtr hwnd,.. 2009. 3. 6.
C# 대리자 Invoke 프로그래밍을 하다보면.. 이벤트루틴에서 Timer나 다른이벤트를 강제로 띄우고싶을때가 종종 발생하게된다.... 이벤트루틴은 delegate 즉 static의 성질을 같는 함수 이므로 Timer라든지 다른 이벤트를 직접 다룰수가 없다... 그러므로 사용하는게 대리자 (Invoke)이다.. 1. Thread or Event 함수에서 Timer실행시키기 1 2 MethodInvoker tmr = new MethodInvoker(TimerFaceTalk.Start); this.Invoke(tmr); MethodInvoker 로 타이머를 돌린다.. MethodInvoker는 Method에 대한 대리자클래스 이다.. 2. Thread or Event 함수에서 다른 Event함수 실행시키기 이럴경우에는 직접 함수자체.. 2009. 3. 6.
C# 의 Handle hWND WIN32 API DLL 을 사용하다 보면.. 함수 인자가 HWND 라는게 가끔있다.int LoadTTS(HANDLE hwnd, uint umsg, int enSpeechType); 위와같은???? C# 에서 DLL 포팅해줄때에는 1 2 [DllImport("HCITTS.dll", CharSet = CharSet.Auto)] public static extern int LoadTTS(IntPtr hwnd, uint umsg, int enSpeechType); 이렇게 해주면된다.. intPtr = 핸들값을 가지는 int형 변수 이다.. 그러고 나서 실제 사용할때에는 LoadTTS(this.handle,0,0); 이런식으로 사용하면 된다. 2009. 3. 6.