2011-10-12 3 views
1

일반적으로 프린터 자체의 마우스 오른쪽 버튼 메뉴에서 프린터의 바로 가기를 만들 수 있습니다.프로그래밍 방식으로 프린터에 대한 바로 가기를 만드는 방법은 무엇입니까?

다른 방법이 있습니까?

나는 그것은 바로 가기를 만들지 만

"Control Panel\Hardware and Sound\Devices and Printers\MyPrinter" 

있는 TargetPath로 다음과 같은 매개 변수를 사용하여 IWshShortcut 사용하여 시도

의 유효하지

어떤 아이디어

답변

2

IWshShortcut 프린터에 바로 가기를 만들 수 없습니다 그것 때문에 파일 시스템 대상 만 지원합니다. 프린터에 대한 바로 가기를 만들려면 매우 고급 주제 인 쉘 네임 스페이스를 파고 있어야합니다. FOLDERID_PrintersFolder의 경우 LPITEMIDLIST을 가져와 해당 폴더에 바인딩하여 IShellFolder을 가져오고 IShellFolder::EnumObjects을 사용하여 원하는 프린터를 결정한 다음 (아마도 이름을 IShellFolder::GetDisplayNameOf (으)로 검사하여) 결정한 다음 IShellLink::SetIDList을 사용하여 셸 링크를 대상으로 지정합니다 그 프린터에. 나는 당신에게 마법의 단어를 주었고 그래서 당신은 약간의 검색을하고 그들에 대해 더 많은 것을 배울 수있다. 그러나 나는 SO에서 쉘 네임 스페이스를 가르치려고하지 않을 것이다.

+0

내 프린터에서 rightclick 옵션을 통해 바로 가기를 수동으로 만들면 .lnk 확장명을 가진 일반 바로 가기 파일이 만들어지고 언급 한 경로도 표시된다는 것을 알고 싶습니다. 왜 그런가요? 쉘 확장으로 생성 된 것처럼 보입니다. – nomi

+1

프린터 폴더를 열면 프린터 폴더는'FOLDERID_PrintersFolder'에 대해'LPITEMIDLIST'를 얻고 폴더에 바인드하여'IShellFolder'를 얻고,'IShellFolder :: EnumObjects'를 사용하여 모든 프린터를 나열하고 IShellFolder :: GetDisplayNameOf'에 의해 리턴 된 이름). 그 중 하나를 마우스 오른쪽 버튼으로 클릭하고 "바로 가기 만들기"를 클릭하면 프린터 폴더는 IShellLink :: SetIDList를 사용하여 해당 프린터에 대한 쉘 링크를 지정합니다. –

관련 문제