(프로그램) 사용자 프린터 목록 조회

페이지 정보

작성자 INJU 댓글 0건 조회 80회 작성일 26-06-05 20:04

본문

import os
import wmi
import tkinter as tk
from tkinter import messagebox, scrolledtext

def get_printer_data():
    try:
        # 1. 윈도우 WMI 시스템 연결
        c = wmi.WMI()
       
        # 2. IP 기반 TCP/IP 프린터 포트 정보 가져오기
        tcp_ports = {}
        for port in c.Win32_TCPIPPrinterPort():
            if port.Name:
                tcp_ports[port.Name] = port.HostAddress if port.HostAddress else "TCP/IP Port"
       
        # 3. 전체 프린터 중에서 IP 포트 매칭 및 문자열 생성
        output_lines = []
        for printer in c.Win32_Printer():
            if printer.PortName in tcp_ports:
                line = f"{printer.PortName} - {tcp_ports[printer.PortName]} - {printer.Name}"
                output_lines.append(line)
       
        return output_lines
    except Exception as e:
        return f"[오류 발생] 시스템 정보를 가져올 수 없습니다:\n{e}"

def show_window():
    # 데이터 가져오기
    printer_list = get_printer_data()
   
    # 4. GUI 창 생성
    root = tk.Tk()
    user_name = os.environ.get("USERNAME", "User")
    root.title(f"프린터 IP 포트 목록 조회 ({user_name})")
    root.geometry("650x400") # 창 크기 조절
   
    # 상단 안내 레이블
    label = tk.Label(root, text="[ 추출된 프린터 정보 (포트 - 포트 구성 - 프린터명) ]", font=("맑은 고딕", 11, "bold"), pady=10)
    label.pack()
   
    # 5. 텍스트 표시 영역 (스크롤 가능)
    text_area = scrolledtext.ScrolledText(root, width=75, height=18, font=("Consolas", 10))
    text_area.pack(padx=10, pady=5, fill=tk.BOTH, expand=True)
   
    # 데이터 출력 처리
    if isinstance(printer_list, list):
        if printer_list:
            text_area.insert(tk.END, "\n".join(printer_list))
        else:
            text_area.insert(tk.END, "시스템에서 검색된 IP 기반 프린터 정보가 없습니다.")
    else:
        text_area.insert(tk.END, printer_list) # 에러 메시지 출력
       
    # 읽기 전용으로 설정 (사용자가 실수로 수정하지 못하게 함)
    text_area.configure(state='disabled')
   
    # 하단 닫기 버튼
    close_btn = tk.Button(root, text="닫기", command=root.destroy, width=10, bg="#dcdcdc")
    close_btn.pack(pady=10)
   
    # 창 유지
    root.mainloop()

if __name__ == "__main__":
    show_window()

첨부파일

  • pri.exe (12.0M) 0회 다운로드 | DATE : 2026-06-05 20:04:59

댓글목록

등록된 댓글이 없습니다.

Copyright 2019-2021 © 에티테마