본문 바로가기

개발166

[Windows] DeviceIoControl을 이용하여 하드디스크 시리얼 구하기 윈도우 클라이언트를 개발하다 보면 특정 PC의 고유 값을 얻어야 할 때가 있다. 보통 하드디스크 시리얼, Mac 주소 등의 조합으로 하드웨어를 특정 짓는다.이번에 알아본 방법은 DeviceIoControl를 이용하여 하드디스크 시리얼을 구하는 방법이다.  BOOL GetDiskSerialNumber(CString &szSerialNumber){ TCHAR szWindowDir[MAX_PATH] = { 0, }; if (ExpandEnvironmentStrings(_T("%windir%"), szWindowDir, MAX_PATH) == 0) return FALSE; szSerialNumber.Empty(); // Format physical drive path (may be '\\.\PhysicalDr.. 2025. 2. 12.
카메라 필터앱 July 배포 2018년? 쯤 개발한 카메라 앱이 하나 있다. moment July라고..GPUImage를 사용해 Objective C로 개발되었다. 그때는 아이폰에 카메라가 2개가 최대였다. 하지만 이제 3개가 기본이된지 오래다. 나도 업데이트를 하고 싶었지만 GPUImage가 더이상 업데이트 되지 않는것 같았다.다시 만들어야지 만들어야지.. 하고 아주 오랜 기간이 흘렀다.22년초 GPUImage를 사용하지 않은 기반기술을 습득하게 되었고 프로토타입은 개발하였다.하지만 디자인도 없고.. 시간도없고.. 그렇게 방치되다가 24년 말 다시 개발에 들어갔다. 디자인은 디자이너이신 와이프가 해주었다.(이것이 가내수공업이다.)유료배포를 해도 될 것 같지만 사업자등록 문제가 걸려 보류.광고만 넣어 배포하였다. https://ap.. 2025. 1. 11.
[C++/WinRT] 윈도우C++프로젝트에서 json파싱하기 C++로 작성된 MFC, Win32프로젝트에서 json을 다룰 때 고민이 많다. 나 같은 경우 보통은 jsoncpp를 활용해서 json을 파싱한다. 하지만 precompiler를 설정하지 못해 빌드속도가 늦어지거나 jsoncpp를 사용하는 다른 라이브러리들과 심볼 충돌 등의 문제가 있을 수 있는 문제가 있다.요새 윈도우 프로젝트를 하면서 cpp winrt를 유심히 보고 있다 async와 같은 스레드 처리를 쉽게 할 수 있기도 하고 모던한 Windows앱을 만드는데 도움이 되기 때문이다. 이제 win32만으로는.. 꽤 편리하게 사용될 수 있는 winrt클래스 중 하나인 JsonObject를 이용해 서드파티 라이브러리 없이 cpp winrt로 json을 파싱할 수 있다.https://learn.microso.. 2024. 11. 23.
[WTL] Visual studio 2022에서 WTL Wizard 설치하기 Windows7은 이제 지원종료되어 Windows 10 이하 버전은 지원하지 않아도 되는 시대가 되었다. 그에 따라 Visual Studio 2019를 굳이 써야할 이유도 없다. Visual Studio 2022로 가자.그런데 하나 걸리는게 WTL이다. WTL은 프로젝트 템플릿없이 nuget package로 쓸 수 있지만 기왕이면 프로젝트 템플릿이 자동으로 생성되면 시작하기 편해 좋을 것이다.기존처럼 Visual studio 2022가 설치 된 상황에서 WTL 템플릿 마법사(WTL10_10320_Release 기준)를 설치하면 정상적으로 동작하지 않는다.좀 찾아보니 아직 release에 merge는 안되었지만 vs2022대응 스크립트가 커밋되어 있었다.https://sourceforge.net/p/wtl.. 2024. 8. 26.
[WinUI3/c++] 창 사이즈 변경하기 기존 Win32 애플리케이션 개발환경에서 WinUI3로 넘어갈 수 있을까 몇가지 기술들을 공부해보고 있다. 이번에는 가장 기본적인 창사이즈 조절이 가능하냐를 검증해본다. 기존 Win32개발 환경에서는 MoveWindow와 같은 함수로 창 사이즈 변경이 가능했다.Winui3에서 창 사이즈 변경은 어떻게 할 수 있을까?일단 기본 winui3 템플릿을 그대로 실행하면 창사이즈가 크게 실행된다.MSDN에서 찾아본 바로는 AppWindow객체의 Resize함수를 통해 크기 조절이 가능하다고한다.https://learn.microsoft.com/ko-kr/windows/windows-app-sdk/api/winrt/microsoft.ui.windowing.appwindow.resize?view=windows-app.. 2024. 8. 17.
Openssl Windows용 빌드 하기(Openssl 3.0) + jom 병렬 빌드하기 openssl을 Windows에서 사용하기 위해 Windows빌드 하는 방법을 정리해본다. 과거 Openssl 1.x버전을 빌드하여 사용하였었는데 1.x는 EOL되어 이제 LTS버전인 3.0.x버전을 사용하여 빌드 해본다.0. 준비Visual studio 2019Strawberry perl (https://strawberryperl.com/)jom (https://wiki.qt.io/Jom)우선 msvc컴파일러를 사용하여 빌드하므로 visual stdio가 설치되어있어야 한다. 나는 2022버전을 설치하였다. 또 openssl 빌드과정 중 perl스크립트를 사용하므로 perl을 설치해야한다. Windows에서는 무료 라이선스 Strawberry Perl을 추천한다.https://strawberryperl.. 2024. 7. 20.
[Winui3] Unpackaged 프로젝트로 설정하기 Winui3 프로젝트 템플릿은 기본적으로 Packaged 프로젝트이다. Packaged 프로젝트는 MSIX로 패키징되서 배포되는 앱을 말하며 주로 마이크로소프트 앱스토어를 통해 배포되는 앱이다. https://learn.microsoft.com/en-us/windows/apps/desktop/modernize/package-identity-overview An overview of Package Identity in Windows apps - Windows appsAn overview of Windows package identity and how it uniquely identifies a package.learn.microsoft.com하지만 나의 관심사는 기존 레거시 방식대로의 배포 방법이다. 따라.. 2024. 5. 26.
[WinUI3] WinUI3 써먹을 수 있을까? 여러 보안솔루션을 개발하다보면 하위호환성을 위해 최신 기술을 포기해야한다. 고객사는 구버전 OS를 지원하기를 원하며, 그것은 우리 솔루션의 장점이 될 수 있기 때문이다. 그렇게 언제나 익숙한 닳고 닳은 MFC기반 프로젝트들을 고수해왔다. 그렇게 WPF, Winform등 써먹기 좋은 기술들은 아에 처다도 안본 채.아무리 그래도 2024년 신규 프로젝트에 MFC를 들고 가는건 또 다른 레거시 지옥을 낳는게 아닐까 싶다. (MFC는 1992년에 공개되어 아직까지 문제없이 잘 써먹고 있다.)Microsoft는 UWP, Winui2 등 삽질 끝에 Winui3이라는 최신 UI Framework를 내놓았다. 과거 UWP와 다르게 Desktop앱에도 적용 가능하고, MFC, Win32로 짜여진 프로그램에도 이식할 수 .. 2024. 5. 26.
[shell script] if 파일 존재 여부 체크하기 쉘 스크립트로 파일이 존재하는지 다음과 같이 if -f 로 확인할 수 있다. #!/bin/bash FILE_PATH="test.txt" if [ -f $FILE_PATH ]; then echo "파일이 존재합니다." else echo "파일이 존재하지 않습니다." fi 2024. 3. 13.