[WinAPI] EnumWindows, 응용프로그램 목록 얻기

윈도우에서는 수많은 응용프로그램들이 실행 되어 있습니다. 사용자가 조작하는 프로그램 말고도, 백그라운드에서 작업하고 있는 프로세스들도 많이 있죠. 현재 실행 되어 있는 프로세스의 목록을, 작업 표시줄을 보면 알 수 있습니다. 위와 똑같이는 아니더라도 응용프로그램 목록을 얻어오려면 어떻게 해야할까요??EnumWindows 함수를 사용하시면 됩니다. EnumWindows 사용하기 전 Callback 함수를 선언합니다. TRUE를 반환하면 그 다음 HWND를 검색하고, FALSE을 반환하면 Callback 함수 … Read more

[WinAPI] EnumDisplayMonitors, 다중 모니터 정보 얻기.

원래 Callback 함수에 대해 글을 쓰려했는데, 공부 스타일이 예제를 먼저 보고 이해하는게 좋을 것 같아 Callback 예제 함수를 소개하고자 합니다.간단한 Callback 개념은 여기를 참고해주세요. Callback 함수를 아래와 같이 정의 합니다. 그리고 아래와 같이 EnumDisplayMonitors함수에 콜백함수를 인자로 전달하여 호출합니다. 제 PC의 모니터는 2대 이므로 EnumDisplayMonitors를 호출하면 MonitorEnumProc 함수가 2회 호출 됩니다.GetMonitorInfo를 사용하면 콜백된 모니터의 핸들에서 정보를 얻을 수 있습니다.MonitorEnumProc에 … Read more

[MFC] WM_COPYDATA

저번에 SendMessage와 PostMessage에 대해 글을 썼었습니다. 몇 번 사용해보시면 알겠지만 사용자 메시지를 정의하여 SendMessage와 PostMessage로는 많고 다양한 데이터를 보낼 수 없습니다. 그럴 때는 WM_COPYDATA를 사용하여 구조체를 전송하면 프로세스간 통신에서 데이터를 쉽게 보낼 수 있습니다. 대화 상자를 하나 생성해 주시고 아래와 같이 Static과 Edit Control을 만들어 줍니다. Static Control은 m_stMyHwnd로, Edit Control은 m_edTargetHwnd로 선언해줍니다. 그리고 OnInitDialog에 … Read more

[WinAPI] MFC를 이용한 Registry 코딩

안녕하세요 저번 글에서 프로그램에서 설정을 ini로 저장하는 방법을 해봤었는데, 이번엔 레지스트리를 만들어보는 것을 해보겠습니다. 윈도우 + R키를 눌러 Regedit를 입력하여 레지스트리 편집기를 실행시켜 봅니다. 아래 이미지처럼 실행 되면 됩니다. 이번 글에서는 제일 많이 사용하고 기본적인 HKEY_LOCAL_MACHINE에 TEST_REG를 만들어 보겠습니다. 프로젝트 하나 생성해 주셔서 프로젝트 속성을 아래와 같이 설정합니다. 리소스 뷰에서 아래와 같이 만들어 줍니다. 헤더파일에 아래 값을 선언합니다. … Read more

[WinAPI] GetPrivateProfileString, WritePrivateProfileString

윈도우 프로그램에서 설정값을 저장하기 위한 방법으로 많이 쓰였던 방법 중에 INI파일에 설정 값을 저장하는 방법이 있습니다. 요새는 자주 사용하지 않는다고 하는데, 오래된 회사거나 하나의 솔루션을 오래 사용하고 있는 회사에서는 아직도 많이 쓰이는 방법입니다. 우선 코딩을 하기전에 메모장을 실행하여 아래와 같이 입력합니다. 이렇게 만들어준 메모장을 Set.ini, 유니코드로 우선 바탕화면에 저장합니다. 그리고 프로젝트 하나 생성 해주시고 Edit Box … Read more

[Visual C++] DB 연동 하기 – 3 (CDatabase, CRecordset)

저번 글까지 MariaDB를 설치하고, ODBC를 설치했습니다.그리고 DATABASE test_db를 만들었고 TABLE test_table을 만들었구요. 아래 이미지를 보시면 테이블 구조를 보실 수 있습니다. 오늘은 DB 연동하기, 코딩쪽을 해보겠습니다.MFC 프로젝트 하나 생성해 주시고, 아래와 같이 버튼 4개를 생성하시고 더블 클릭을 눌러 이벤트 처리 함수까지 만들어주세요. 그리고 대화상자 헤더에 아래 헤더파일을 include 하고 . CDatabase와 CRecordset 멤버변수를 선언합니다. 그리고 OnInitDialog에 … Read more

[Visual C++] DB 연동 하기 – 2 (MariaDB, ODBC 설정)

저번 포스팅에 이어서 써보겠습니다. 우선 명령 프롬프트를 실행해서 “MariaDB 설치 된 위치\bin” 으로 이동합니다.그리고 ID, PASS를 입력하여 접속 합니다. 그리고 아래 구문을 입력하여 test_db이름을 가진 database를 만들어 줍니다. 그리고 아래 구문을 입력하여 test_db에 접속해봅니다. 이 상태에서 아래 구문을 입력하시면 테이블이 생성 됩니다. 아래 구문을 입력하시면 테이블의 정보를 볼 수 있습니다. 우선 간단히 MariaDB에서는 이정도 까지만 하겠습니다.DB 만들고 … Read more

[Visual C++] DB 연동 하기 – 1 (MariaDB, ODBC 설치)

안녕하세요. 이번 글에서는 DB 연동 하기 중 MariaDB 설치와 ODBC 설치를 해보겠습니다. 윈도우에서 DB를 연동하는 것은 코딩보다 설치하는 작업이 더 많습니다.그러니 잘 보시고 따라하세요. 우선 여기에서 MariaDB를 다운 받습니다. 2019.11.24 현재는 10.4.10이 최신이네요 10.4.10을 보시면 되게 많은 버전이 있는데 본인 PC에 맞는 파일을 다운 받으시면 됩니다. 제 PC는 Windows 64bit 이여서 mariadb-10.4.10-winx64.msi를 다운받았습니다. 그리고 MariaDB Connector를 … Read more

[WinAPI] WaitForSingleObject, 쓰레드 동기화

Windows 운영체제에 의해 생성되는 커널 오브젝트의 상태는 두가지로 결정이 됩니다.Non-Signal과 Signal 상태가 있는데 프로세스가 생성 되면 Non-Signal이였다가 프로세스가 종료 되면 Signal로 변하게 되는 것입니다. 윈도우에서는 여러가지 핸들이 존재하는데 이를 이용하여 핸들의 커널 오브젝트 상태를 보고, 프로세스가 실행 중인지, 종료 중인지 판단 할 수 있습니다. 커널 오브젝트 상태를 확인하는 함수는 WaitForSingleObject이며 사용법은 아래와 같습니다. 프로젝트 하나 생성해 … Read more

[MFC] 대화상자 배경, 버튼 이미지 바꾸기

오늘은 Bitmap을 읽어와서 대화상자와 버튼을 바꿔보도록 하겠습니다. 우선 아래 비트맵 리소스를 다운받아서 리소스뷰에 추가해주세요. 그리고 비트맵 리소스의 아이디를 아래와 같이 설정합니다. 대화상자의 색상을 바꾸기 위해 아래 비트맵 리소스를 다운받아주세요. 우선 헤더파일에 아래와 같이 두개의 변수를 선언합니다. OnInitDialog에서 아래와 같이 리소스를 읽어옵니다. OnPaint 함수를 아래와 같이 코딩합니다. Bitmap 이미지를 대화상자 크기에 맞춰 표시한 겁니다. 위 코드까지 … Read more