Windows 프로그래밍
-
[C++] opencv를 이용한 영상캡처Windows 프로그래밍 2019. 5. 27. 18:15
영상 캡처를 해야할 일이 있어서 방법을 찾던 중 opencv의 VideoCapture 클래스를 이용하면 쉽게 캡처가 가능하다는 것을 알게 되었다. 이를 이용해 캡처하는 방법을 알아보자. 코드는 아래와 같다. /* #include #include "opencv2/imgproc/imgproc.hpp" #include "opencv2/highgui/highgui.hpp" using namespace cv; using namespace std; */ 위 헤더파일들을 include 해주고 using namespace를 추가해주면 코드가 짧아진다♥ VideoCapture cap(cpath); // cpath에는 캡처할 영상의 경로를 넣는다 if (!cap.isOpened()) { cout frame; strings..
-
소켓과 MFC를 이용한 채팅 프로그램 개발하기 - 클라이언트편Windows 프로그래밍 2019. 3. 6. 18:07
서버편 보고오기 지난 서버편에 이은 클라이언트 개발 편이다.클라이언트에서는 서버와 달리 소켓 통신을 위해선 하나의 클래스만 있으면 된다. 서버에서처럼 CConnectSocket이라는 클래스를 CSocket 클래스를 기본 클래스로 받아 생성한다.코드는 짧고 쉽다. #include "stdafx.h" #include "CConnectSocket.h" #include "SocketClientDlg.h" CConnectSocket::CConnectSocket() { } CConnectSocket::~CConnectSocket() { } void CConnectSocket::OnClose(int nErrorCode) // 서버와의 연결이 종료되었을 때 { ShutDown(); Close(); CSocket::On..
-
소켓과 MFC를 이용한 채팅 프로그램 개발하기 - 서버편Windows 프로그래밍 2019. 3. 6. 10:28
소켓은 내 컴퓨터가 상대방과 통신하기 위해 사용하는 통로(?) 라고 볼 수 있다.소켓은 있는데 왜 말켓, 소Dog은 없지 이런 소켓을 이용한 채팅 프로그램을 만들어 볼 것이다. 레알 16강탈락 경★축☆ 전체적인 흐름은 소켓 서버와 소켓 클라이언트가 존재하고, 서버는 클라이언트가 보내는 메시지를 다른클라이언트들에게 모두 전달하는 역할을 수행하게 할 것이다. 먼저 소켓 서버를 만들어보자.소켓 서버에는 클라이언트의 메시지를 기다리며 계속 대기하는 CListenSocket 클래스, 클라이언트의 추가 등클라이언트와 관련된 작업을 수행하는 CClientSocket 클래스 이렇게 2가지 클래스를 생성한다. 그리고 이 클래스들을 생성할 때는 아래와 같이 CSocket 클래스를 기본 클래스에 추가해주어야 한다. 먼저 C..
-
Windows 우클릭 메뉴 항목 추가Windows 프로그래밍 2019. 2. 18. 16:27
개발하다 보면 위와 같은 우클릭 시 나타나는 메뉴에 기능을 등록해야 할 때가 있다. 이를 잘 활용하면 더 퀄리티와 편의성이 높은 앱을 만들 수 있다.그럼 이제 여기에 어떻게 항목을 추가하고 어떻게 동작시키는지 알아보도록 하자. 일단 메뉴의 항목들은 모두 레지스트리의 컴퓨터\HKEY_CLASSES_ROOT\*\shell 경로에 저장되어 있다.레지스트리 편집기를 켜고 위 경로로 이동 후 shell 폴더에서 우클릭해 새로만들기->키 를 선택한다.원하는 키 이름을 입력하고 해당 키 기본값의 값 데이터를 우클릭 메뉴에 표시하고 싶은 이름으로 입력한다.아래와 같이 입력하면 첫 번째 사진처럼 Hello 라는 이름의 항목이 만들어진다. 항목을 추가하는데까진 성공했다. 이젠 이 항목을 선택했을 때 어떤 동작을 수행하게 ..
-
MFC 버튼 이미지로 바꾸기Windows 프로그래밍 2019. 2. 15. 17:26
Dialog 도구상자에서 버튼을 누르면 나오는 이런 못생긴 버튼..좀 예쁜 버튼을 가지고 싶다!!다행히도 MFC는 버튼 모양을 BMP 이미지로 바꿀 수 있는 기능을 제공하고 있다. 지금부터 알아보자. 버튼을 우클릭하고 속성을 누르면 아래와 같은 창이 생긴다. 그 중에서 표시한 부분을 보면 Owner Draw 라는 항목이 있다. 난 미리 바꿔나서 그런데 아마 False로 되어있을 것이다. 이것을 True로 바꿔준다. 그리고 다시 버튼을 우클릭해 변수 추가를 누른다. 변수 이름을 설정하고 변수 형식이 CButton으로 되어있을 것이다. 이걸 CBitmapButton으로 변경한다. 그 다음 원하는 bmp 이미지파일을 리소스 뷰에서 추가한다.그 다음 프로젝트이름Dlg.cpp로 가서 OnInitDialog()에 ..
-
Windows 서비스 프로그램 개발 - 3Windows 프로그래밍 2019. 1. 8. 15:01
1탄에서 아래와 같은 과정을 보았을 것이다. 서비스 실행 > 서비스.exe > 서비스.exe에서 원하는 프로그램 실행 > 내가 원하는 프로그램 지금까지 첫 번째 단계를 끝냈다. 이제 서비스 exe를 작성해 볼 것이다. 나도 헷갈려서 여러 번 얘기하고 있다 ㅎ 서비스 내부에서는 내가 원하는 또다른 프로그램을 실행하는 작업이 이루어질 것이다.그러기 위해서 당연히 CreateProcess 함수를 쓸건데 그냥 쓸 순 없다.그냥 쓸 수 있다면 좋았을 텐데 Windows는 보안 정책이 많~이 깐깐한 것 같다. (그런데도 옆동네보다 바이러스도 많고 말이야.. 어??) CreateProcess 함수를 이용해서 프로세스를 열면 User 권한이 아닌 System 권한으로 접근하기 때문에 User만 접근할 수 있는요론거 다..
-
Windows 서비스 프로그램 개발 - 2Windows 프로그래밍 2019. 1. 8. 13:29
예에~ 2탄이다!!1탄에서 Create와 Start하는 함수를 살펴봤으니 2탄에서는 Stop과 Delete하는 함수에 대해 알아보자. Stop 과정 BOOL CService::StopServiceProc(WCHAR *ServiceName) { CString ErrorString; SC_HANDLE SCMhandle = NULL; SC_HANDLE OpenSChandle = NULL; SCMhandle = ::OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS); if (SCMhandle == NULL) { int Err = GetLastError(); ErrorString.Format(L"Stop OpenSCManager : %d", Err); AfxMessageBox(..
-
Windows 서비스 프로그램 개발 - 1Windows 프로그래밍 2019. 1. 8. 13:22
서비스 프로그램을 개발하게 되었는데 너무 길 것 같아서 나눠서 적어야겠다.서비스는 admin 권한이 필요한 프로그램이지만 사용자에게 허용 알림을 띄우지 않고도 작업 수행이 가능하게 하고 싶을 때, Windows가 부팅되자마자 사용자가 로그인 하기도 전에 자동으로 실행시키고 싶을 때 사용한다. 일단 전체적인 큰 틀부터 잡아본다면 구조는 아래와 같다. 서비스 실행 > 서비스.exe > 서비스.exe에서 원하는 프로그램 실행 > 내가 원하는 프로그램 그럼 이제 서비스를 생성해보자. 생성을 해야 실행을 할테니 ㅎㅎㅎ Create 과정 BOOL CService::CreateServiceProc(WCHAR *ServiceName, WCHAR *DisplayName, WCHAR *ExePath) { CString E..