2017-11-06 1 views
0

Windows 탐색기에서 마우스 오른쪽 버튼을 클릭하면 일부 파일 유형에 대해 '인쇄'기능이 나타납니다. 나는 VertTo PrintTo를 사용하여 파일을 인쇄하고 있다는 것을 알고있다.Windows에서 PrintTo 명령을 사용할 수있는 파일 형식을 확인하는 방법은 무엇입니까?

특정 파일 형식이이 PrintTo 동사 협회를 어떻게 식별 할 수 있는지 알고 싶습니다. C#에서 사용 가능한 라이브러리?

+0

는 – BugFinder

+0

https://msdn.microsoft.com/en-us/library/system.diagnostics.processstartinfo.verbs(v=vs.110).aspx –

답변

2

Windows 탐색기의 상황에 맞는 메뉴는 레지스트리 정보 (> HKEY_CLASSES_ROOT)로 빌드됩니다. 등록 된 모든 확장을 찾을 수 있습니다. 예 : .txt .txt 아래에 (기본값) =>txtfile이 있습니다.

내 Windows는 독일어이므로 기본 설정은 여기 (표준)입니다.

Registry file type

그리고 당신은 레지스트리에서 txtfile 항목을 볼 때 txtfile => 쉘 => 인쇄/printto있을 것입니다. 그리고 shell => print/printto 항목을 찾지 못하면 컨텍스트 메뉴에 인쇄 옵션도 표시되지 않습니다. 심지어 windwos가 파일을 인쇄하는 데 사용할 인쇄 명령이 있습니다. 모든 파일 형식에 대해이 작업을 수행 할 수 있습니다.

enter image description here

그리고

는 다음과 같이 웹에서 많은 예를 들어있을 것입니다 레지스트리에서 읽어 : https://www.codeproject.com/Articles/3389/Read-write-and-delete-from-registry-with-C

+0

잘 것을 보여줍니다 인쇄 및 인쇄 동사가 동일하지 않습니다. 잘못된 것을 강조 표시했습니다. –

+0

이제 올바른 힌트를 주셔서 감사합니다. – Momo

+0

thx. 작동하고있어. –

1

이 내가 모모의 답변에 따라 C#으로 그것을 구현하는 방법입니다.

public static bool HasPrintToVerb(string filename) 
{ 
    try 
    { 
     var ext = Path.GetExtension(filename); 

     var value = Registry.GetValue("HKEY_CLASSES_ROOT\\" + ext, string.Empty, null); 
     var printToValue = Registry.GetValue(string.Format(@"HKEY_CLASSES_ROOT\{0}\shell\Printto\command", value), string.Empty, null); 
     return printToValue != null; 
    } 
    catch(Exception ex) 
    { 
     return false; 
    } 
} 
는 당신은 레지스트리를 통해 볼 수 있었다
+0

https://referencesource.microsoft.com/#System/services/monitoring/system/diagnosticts/ProcessStartInfo.cs,75bd50346bca44e3 –

관련 문제