본문 바로가기
C & C++/C & C++

[Tip] 네트워크 프린터 검색

by izen8 2011. 5. 24.
반응형



이전의 프린터기를 찾아 정보를 얻는 것은 로컬프린터에 한정되어 있던 내용이었다.

자세한 정보를 얻기를 바란다면 다음의 내용을 읽어보시고 참고하세요 ^^

자신의 컴퓨터에 연결되어 있는 프린터의 정보를 수집해 보자

이전 글의 내용을 보면 다음과 같은 내용이 있다

EnumPrinters(PRINTER_ENUM_LOCAL, NULL, 2, NULL, 0, &cbNeed, &cbReturn);
pi=(PRINTER_INFO_2 *)malloc(cbNeed);
EnumPrinters(PRINTER_ENUM_LOCAL, NULL, 2, (PBYTE)pi, cbNeed, &cbNeed, &cbReturn);

위 API는 자신의 컴퓨터에 연결되어 있는 프린터의 정보를 얻어와 cbNeed에 저장하는 API가 되겠다.

여기서 중요한 부분은 EnumPrinters의 파라메터이다.

나는 여기서 MSDN을 잘 읽어보지 않고 그냥 사용해서 완전 삽질했다.. ㅠㅠ

첫번째 파라메터에 PRINTER_ENUM_LOCAL을 사용하게 되면 자신의 컴퓨터에 직접 연결된 로컬프린터와 네트워크 프린터만을 사용할 수 있게 된다.

여기서 문제가 되는 부분은 공유프린터를 기본프린터로 잡고 있다면 PRINTER_ENUM_LOCAL을 사용하면 프린터 정보를 얻어올 수 없게 되므로 프린터가 없다고 나오거나 Array Err가 뜨게 된다.

뭐 당연히 없는 프린터 정보는 얻어 올 수가 없는데 기본 프린터로 잡고 있으니 엉뚱한 주소로 값을 보내거나 얻으려고 할꺼고.. 쓰레기 값들을 잔뜩 가지고 오거나 보낼것이다..
그러니 메모리가 터질수 밖에.. ㅋㅋㅋㅋ

간단하게 파라메터 추가로 수정을 할 수 있다.

PRINTER_ENUM_CONNECTIONS을 추가해 주면 공유프린터역시 정보를 얻을수 있다..

반응형

'C & C++ > C & C++' 카테고리의 다른 글

[API] 수행시간 계산  (0) 2011.05.25
[Tip] ExitWindowsEx 컴퓨터 종료  (0) 2011.05.24
[TIP] MFC Tip 4  (0) 2011.05.24
[TIP] 프로젝트 병합법  (0) 2011.05.24
(Tip) 포인터 값으로 추적하는 디버그 팁  (0) 2011.05.21

댓글