(프로그램) 사용자 프린터 목록 조회
페이지 정보
작성자 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()
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
댓글목록
등록된 댓글이 없습니다.