한국어 · English
Windows 바탕화면에 항상 떠 있는 COM 포트 모니터 위젯입니다. 장치 관리자를 열지 않고도 어떤 시리얼 포트가 연결되어 있는지, 어떤 포트를 다른 프로그램이 쓰고 있는지 실시간으로 보여줍니다. ESP32 등 임베디드 보드를 자주 꽂았다 뽑는 개발 환경을 위해 만들었습니다.
다른 프로그램이 포트를 점유하면 점이 초록으로 바뀌고, 놓으면 회색으로 돌아옵니다.
| 기본 (아크릴 블러) | 틴트 최대 (거의 불투명) |
|---|---|
![]() |
![]() |
- 실시간 목록 갱신 — USB 장치를 꽂고 뽑는 순간 즉시 반영 (
WM_DEVICECHANGE이벤트 방식, 폴링 없음) - 연결/해제 하이라이트 — 새 포트는 🟠 주황, 사라진 포트는 🔴 빨간 취소선으로 4초간 표시
- 포트 점유 표시 — 다른 프로그램(터미널, 플래셔 등)이 사용 중인 포트는 🟢 초록 점으로 표시 (hover 시
In use툴팁, 3초 주기, 우클릭 메뉴에서 끄기 가능) - 포트 별칭 — 포트마다
master,slave1같은 이름을 붙여 구분 (아래 참고) - COM 번호 변경 — 포트를 클릭해 바로 Windows 장치 속성 창을 열어 번호 변경 (관리자 권한 불필요)
- 장치 이름 표시 — 장치 관리자와 동일한 친화명 (예:
Silicon Labs CP210x USB to UART Bridge), 툴팁으로 VID/PID 확인 - 투명도 조절 — 진한 패널 ↔ 아크릴 블러 ↔ 유령 모드(글자까지 페이드)를 한 축으로 조절
- 가장자리 자석 스냅 — 드래그 중 모니터 가장자리에 자석처럼 정렬
- 자동 숨김 — 5분간 포트 변동이 없으면 숨겼다가, 변동이 생기면 다시 표시 (옵션). 숨은 동안에는 점유 메모리도 운영체제에 돌려줍니다
- 트레이 아이콘 — 좌클릭으로 표시/숨김, 우클릭 메뉴로 종료
- 위젯 UX — 항상 위, 작업표시줄/Alt+Tab 숨김, 드래그 이동, 위치·설정 자동 저장
목록에서 포트를 클릭하면 그 포트에 대한 메뉴가 열립니다.
COM4 (master) ← 어떤 포트인지 표시
─────────────────
Set alias... ← 이 포트의 별칭 지정
Remove alias ← (별칭이 있을 때만)
Change COM number... ← 이 포트의 번호 변경
행 위에 마우스를 올리면 밝아져서 클릭할 수 있다는 걸 알 수 있고, 그대로 끌면 창 이동입니다(기존과 동일).
COM 번호만으로는 어떤 보드인지 헷갈릴 때, 포트마다 원하는 이름을 붙일 수 있습니다.
- 별칭은 COM 번호에 매칭되어 저장됩니다 — 보드를 뽑았다 다시 꽂거나 PC를 재부팅해도 유지됩니다
- 지금 연결되지 않은 포트(
(not connected))의 별칭도 미리 지정하거나 지울 수 있습니다 - 입력란을 비우고 저장하면 해당 별칭이 삭제됩니다
- 우클릭 → Set aliases... 로 전체 목록을 한 번에 편집할 수도 있고, Show aliases 로 표시를 켜고 끕니다
Change COM number... 를 고르면 해당 장치의 Windows 속성 창이 바로 열립니다. 거기서 포트 설정 → 고급 → COM 포트 번호로 변경하면 됩니다 — 장치 관리자를 열어 목록을 뒤질 필요가 없습니다.
- 레지스트리를 직접 건드리지 않고 Windows에 맡기므로 관리자 권한이 필요 없습니다
- 번호를 바꾸면 그 포트의 별칭도 새 번호로 자동으로 따라갑니다
| 동작 | 방법 |
|---|---|
| 포트별 설정 (별칭 · COM 번호) | 목록에서 포트를 클릭 |
| 이동 | 위젯을 마우스로 드래그 (가장자리 근처에서 자동 스냅) |
| 투명도 조절 | 위젯 위에서 Ctrl + 마우스 휠 (위 = 진하게, 아래 = 투명하게) |
| 전체 별칭 편집 / 표시 전환 | 우클릭 → Set aliases... / Show aliases |
| 새로 고침 / 옵션 / 종료 | 우클릭 컨텍스트 메뉴 |
설정은 %APPDATA%\ComportMonitor\settings.json에 저장됩니다.
Releases에서 받을 수 있습니다:
| 파일 | 크기 | 조건 |
|---|---|---|
ComportMonitor-standalone.exe |
~60MB | 없음 — 아무 PC에서나 바로 실행 |
ComportMonitor.exe |
~1MB | .NET 8 Desktop Runtime 필요 (없으면 실행 시 설치 안내가 뜸) |
- Windows 11 (아크릴 배경·둥근 모서리는 DWM 기능 사용. Windows 10에서는 외형만 다르게 표시될 수 있음)
dotnet build -c Release
Visual Studio 2022에서 ComportMonitor.csproj를 바로 열어도 됩니다.
실행 파일: bin\Release\net8.0-windows\ComportMonitor.exe
- 포트 열거: WMI
Win32_PnPEntity에서 Ports 클래스 GUID({4d36e978-e325-11ce-bfc1-08002be10318})로 필터링합니다.Win32_SerialPort는 USB CDC 장치(ESP32-S3 USB-JTAG 등)를 누락하므로 쓰지 않습니다. - 점유 감지: 액세스 권한 0의
CreateFile프로브. 시리얼 드라이버는 단일 오픈만 허용하므로 권한 0으로도 점유가 정확히 판별되고, 포트를 초기화하지 않아 DTR/RTS 글리치(보드 리셋) 위험이 최소화됩니다. - 반투명 창: WPF
AllowsTransparency는 모니터 DPI ≠ 시스템 DPI 환경에서 창 크기가 96DPI 기준으로 잘리는 버그가 있어 사용하지 않습니다. 대신 DWM 아크릴 백드롭(DWMWA_SYSTEMBACKDROP_TYPE)을 쓰고, 유령 모드는 수동WS_EX_LAYERED+SetLayeredWindowAttributes로 구현했습니다 — WPF가 이 스타일을 강제로 벗겨내므로SetWindowSubclass로 WPF 처리 직후 비트를 되살리는 우회가 들어 있습니다.




