Skip to content

Repository files navigation

ComportMonitor

한국어 · 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 로 표시를 켜고 끕니다

COM 번호 변경

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 처리 직후 비트를 되살리는 우회가 들어 있습니다.

라이선스

MIT

About

Windows COM port monitor desktop widget (.NET 8 WPF)

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages