본문 바로가기

프로그래밍37

화면녹화 프로그램 만들기[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.
프로세스간 메시지 전송[0] 독립된 프로그램 간에 메시지를 전송해야 할 때가 있다. Agent 프로그램으로 어떤 프로그램 실행 제어를 한다거나 종료 방지를 하기 위해서 Alive 메시지를 확인하고 싶을 때가 있다. 여기서 알아보는 것은 Window Message를 이용해서 프로세스 간에 COPYDATASTRUCT 구조체를 전달하는 기능을 살펴보고자 한다. 간단하게 한 프로세스에서 시스템 시간을 담아서 다른 프로세스로 전송하는 것을 구현한다면 핵심 코드는 아래와 같다. 전송받는 프로세스와 전송하는 프로세스 공통 먼저 using문을 이용하여 필요한 네임스페이스를 추가한다. using System.Diagnostics; using System.Threading; using System.Runtime.InteropServices; // W.. 2020. 4. 30.