본문 바로가기

API

(7)
Windows API 를 이용해 Serial Port 찾기. Windows 에서 개발 하는 과정에서 COM port 를 찾는 방법은 여러가지가 있긴 합니다만, 명확히 USB 나 Bluetooth 와 같은 기기들이 연결 되었을 때 이것을 다 찾아 내는 방법은 애매한 경우가 더러 있습니다. 저의 경우는 기존에 SetupDiEnumDeviceInterfaces() 를 사용한 방법을 쓰다가, Windows 10 으로 올린 다음 부터 USB 장치로 인식한 COM port 가 검색이 되질 않아 좀 더 애를 먹었습니다만, 간단히 GUID 를 GUID_DEVINTERFACE_COMPORT 로 쓰던걸 GUID_DEVINTERFACE_SERENUM_BUS_ENUMERATOR 로 변경하기만 해도 문제가 해결 되었습니다. 각 GUI 는 다음과 같은 값을 가집니다. (mingw-w64 ..
[FLTK] Fl_RGB_Image 로 부터 회전된 이미지 얻기. FLTK 는 여러 플랫폼에서 간단하면서 깔끔한 UI 를 만들기에 매우 좋은 GUI library 입니다만, 기본 기능에만 기준을 두고 있다 보니 이미지 처리 ( 리사이즈나 회전 등 ) 는 없는 것이 아쉬운 부분 입니다. 이번의 경우는 이미지를 회전 시켜 표시 해야 하는 경우 (위 이미지 처럼 뭔가 열심히 일 하고 있으니 기다려 주십사~ 하는) 기본으로 그리는 수준으로는 깔끔한 이미지를 얻기 힘듭니다. 이를 개선 하기 위해 구글링 중 CodeGuru 에서 이미지 회전에 관한 글 을 찾았습니다. 그리고 이를 응용하여 다음과 같은 API 를 만들어 보았습니다. #include #ifndef M_PI #define M_PI 3.141592654 #endif ⁄⁄⁄⁄⁄⁄⁄⁄⁄⁄⁄⁄⁄⁄⁄⁄⁄⁄⁄⁄⁄⁄⁄⁄⁄⁄⁄⁄⁄⁄..
Porcess ID 로 해당 윈도우의 HWND 를 얻고 BMP 로 저장. 윈도우 프로그래밍을 하다보면 가끔 다른 윈도우의 화면을 갈무리 해야 하는 경우가 생깁니다. (Capture 처럼) 이럴때 아래의 코드 중 HWND GetHandleFromPID(DWORD pid); 함수를 사용하면 간단히 해당 프로그램의 HWND 를 얻을 수 있습니다. #include #include "winproc.h" typedef struct _ProcessCallbackData { DWORD m_pid; HWND m_hwnd; } ProcessCallbackData; BOOL CALLBACK EnumProc(HWND hwnd, LPARAM lParam) { DWORD pid = 0; ProcessCallbackData *pcbd = (ProcessCallbackData *)lParam; if ( ..
Windows API, 윈도우 에서 Drag Drop 으로 파일 목록 받기. 간단히 Windows 에서 파일을 Drag&Drop 으로 받는 방법들을 쓰는 프로그램들이 더러 있습니다. 이를 Windows API 로만 처리 하려면 다음과 같은 코드가 필요 합니다. 먼저, DragAcceptFiles() API 로 이벤트를 받을 Windows Handle 을 등록 합니다. DragAcceptFiles( hWindow, TRUE ); 이는 최초 WM_CREATE 부분에서 처리하는 방법을 써도 되나, 부분적으로 해당 이벤트를 받지 않고 싶을때 FALSE 대입으로 처리 할 수도 있습니다. 해당 이벤트는 WinMain() 에서 WM_DROPFILES 로 넘어 오게 됩니다. 이때 취해야 하는 인자는 wParam 으로 다음과 같이 처리 할 수 있습니다. BOOL CALLBACK DialogPro..
MinGW 환경 C++ 에서 Thread 간편히 쓰기 위한 CustomThread 클래스! MinGW 으로 C++ 컴파일 해서 쓸시 , thread 처리를 위해 extern"C" 남발을 했던 기억이 있습니다. 아련한 기억인데 .. C++ 로 class 객체화를 하는데 있어 , thread 의 stdcall 함수 제작은 귀찮음의 걸림돌이 되었다고 생각 됩니다. 그래서 만들었던 것이 바로 이 CustomThread !!! 클래스 원형을 보면 다음과 같습니다. 그리고 실제 사용하는 입장에선 위의 클래스를 상속 받아, Setup 과 Execute(void*) 를 구현해 주면 되는 것 입니다. 예) 예제 소스는 CodeBlocks 로 만들어 졌습니다. 첨부 파일의 소스를 사용할 수 있으니 필요하신 분은 사용해 보시기 바랍니다. 본 소스는 공개로 만든 것 이므로 ,이 코드로 인해 발생하는 문제점은 제가 ..
지름도우미.win32 , version 0.4.29 build 113 버젼 업데이트로 이전글을 변경하여 기록 합니다. 카르퍼스키 백신이 제가 만든 프로그램을 무슨 트로이목마로 인식 한다고 합니다 -_-; 제가 만든 프로그램엔 트로이목마 코드가 없습니다. 알약에서도 이전에 오진이 나서 알약측에서 오진이라고 답을 받았는데 카르퍼스키 자체는(알약이 카르퍼스키 엔진을 씀에도) 이를 오진하고 있습니다. 제가 카르퍼스키 백신을 사용하지 않으므로 보고 할 수 가 없네요. 현재 저는 Microsoft Security Essential 64bit, Avast! Home Edition (32/64bit) , V3 Lite (32bit) 를 사용하고 있습니다. 모두 정식 집에서 개인적인 사용시 정식 라이센스 이지요. 다음 사항이 변경 되었습니다. windowsXP 에서 종료시 응답없음. 윈도..
windows 7 용 API 를 가지고 어플리케이션을 만들어 보자 #01 우연히 시작된 foobar2000 의 window7 task bar control 을 보고 시작하게 된 의문점이 점점 살을 붙여 가면서 해결선을 찾아 가게 되는것 같습니다. J군의 링크를 따라가서 관련 코드 샘플을 받아 보니 , 제가 죽어라 싫어 하는 고급언어인 C# 이더군요 ... 이걸 데체 어따써 ... 라는 생각을 뒤로 하고 달린 댓글들을 보다 보니 - lucasplementel 이라는 ... ( 루카스 플리먼털 ? ㅋㅋㅋ ) 사용자의 댓글이 눈에 띄었습니다. Is this project related to the new "Windows API Code Pack" in http://code.msdn.microsoft.com/WindowsAPICodePack ? Are they both from Mi..