본문 바로가기

분류 전체보기106

프로세스간 메시지 전송[1] 이전 포스팅에서 Window Message를 이용해서 프로세스 간에 COPYDATASTRUCT 구조체를 메시지로 전송하는 방법을 살펴보았다. (이전 포스팅 보기) 이번 포스팅에서는 IPC를 이용한 메시지 송수신 방법을 살펴보고자 한다. 먼저 간단하게 IPC통신이 무엇인지부터 살펴보자. IPC는 Inter Process Communication의 약자로 커널 영역에서 제공하는 내부 프로세스간 통신을 이용해서 그 기능을 구현할 수 있다. IPC의 종류에는 PIPE, Named PIPE, Message Queue, Shared Memory, Memory Map, socket 등이 있지만 여기서는 Shared Memory를 이용하여 기능을 살펴보고자 한다. 먼저 솔루션을 만들어 주고 하나의 DLL 라이브러리 프.. 2020. 5. 5.
화면녹화 프로그램 만들기[1] 지난 포스팅에서 심플한 화면녹화 프로그램을 만들어 보았다.(이전 포스팅 보기) 녹화시작, 녹화종료, 인코딩 세 가지 기능을 가지고 있는 말 그대로 화면 녹화 프로그램이다. 그러나 확장자가 wmv 파일로 한정되어 웹에서 지원이 제한되는 한계가 있어서 FFMpegConverter를 이용하여 웹에서 사용할 수 있는 .mp4 확장자 포맷 파일로 인코딩하는 방법을 살펴보고자 한다. 지난 번 Encode( ) 함수는 아래와 같다. 우리는 마지막 부분에 FFMpegConverter를 이용하여 별도의 버튼 처리 없이 바로 wmv 파일을 mp4로 바꿔볼 것이다. 이를 위해서는 먼저 NuGet 패키지 관리에서 NReco.VideoConverter 라이브러리를 참조해야 한다. NReco.VideoConverter 라이브러리.. 2020. 5. 4.
화면녹화 프로그램 만들기[0] 화면 녹화 기능은 Windows 10에 탑재가 되어 사용되고 있지만 여기서는 Microsoft의 Expression Encoder 4 SP2 서비스 팩의 dll을 활용하여 심플한 녹화기능을 제공하는 나만의 녹화프로그램을 만들어 보고자 한다. 먼저 Visual Studio를 열고 아래와 같이 솔루션을 만들어 주자. 프로그램 이름은 MyCam 이다. 먼저 화면 UI를 아래와 같이 구성한다. 간단하게 녹화 시작 버튼과 종료 버튼, 인코딩 버튼과 인코딩 진도를 출력하는 프로그래스바로 화면UI를 구성한다. UI구성 화면에서 각 버튼에 버튼 처리기를 등록해준다. 다음으로는 Expression 함수를 사용하기 위해서 dll 참조를 추가해 준다. 참조파일은 Program Files(x86)>Microsoft Expre.. 2020. 5. 3.
BackgroundWorker 사용 하기 BackgroundWorker 클래스는 주스레드에서 작업자 스레드에게 어떤 일을 맡기면서 프로그래스바를 이용하여 사용자에게 진행 상태를 알려주도록 하는 일이 필요한 경우에 보통 많이 사용된다. 보통 워커 스레드라도고 하며 이 클래스의 메커니즘은 아래와 같다. // BackgroundWorker 객체 생성 BackgroundWorker worker = new BackgroundWorker(); // 백그라운드에서 처리할 작업 스레드 핸들러 등록 worker.DoWoker += new DoWorkEventHandler(worker_DoWork); // ReportProgress( )호출시 진행 상태를 업데이트하는 핸들러 worker.ProgressChanged += new ProgressChangedEven.. 2020. 5. 2.