2009-12-01 2 views
1

.NET 응용 프로그램에서 새로운 Windows 7 작업 표시 줄 기능을 활용하고자하며 .NET에서 Windows 7 기능을 확인하는 가장 좋은 방법은 사람들이 생각하는 바를 알고 싶습니다. 내 목표는 내가에 overally 치열하지 않다 Windows XP 및 Windows 7.NET 용 Windows 7

에 대해서는 다른 코드를 가지고있다 :

  • 그냥 시도 캐치에 윈도우 7 코드를 포장
  • 경우 OS = "Windows 7"Then ...

당연히 이것이 대부분의 작업이 아니라면. 나는 정말로 좋은 접근을 위해 도처에 사냥했지만 성공하지는 못했다.

if (Environment.OSVersion.Platform == windows7Id) 
{ 
    // win7 stuff 
} 

는 Windows7의 ID가 비록 무엇 값 몰라 : 마이크로 소프트 관리되지 않는 코드 랩퍼 라이브러리 그냥 내가 당신이 기대

답변

4

나는 아무 문제가 if OS = "Windows 7에 없다 생각합니다 "(후계자가 윈도우 7.1에 침입하지 않거나 어떤이 될 수 있도록) if OS >= "Windows 7". 물론,

  • 이되어야하며,
  • 그것은해야 Environment.OSVersion (플랫폼 및> = 버전)를 선택하여 수행 할 수.

당신이 if (isWindows7) {...}와 코드를 복잡하게하지 않으려면, 당신은 별도의 클래스로 플랫폼 별 코드를 삽입 할 수 있습니다. FO R 예, 당신은 인터페이스를 만들 수

interface IOSSpecific { 
    void AddToJumpList(...); 
    ... 
} 

이 클래스의 두 가지 구현을위한 하나> = 윈도우 7 및 다른 사람을위한 하나의 (전혀 다른 것 또는 아무것도 않습니다). 응용 프로그램이 시작되면 두 구현 중 하나를 사용하여 IOSSpecific 유형의 일부 전역 변수를 인스턴스화합니다.

2

... 윈도우 7에서 실행중인 가정 것으로 보인다.

저는 일반적으로이 플랫폼을 지원하기 위해 공장에서 어떤 객체를 만들지 결정할 때이 질문을합니다. 코드베이스 전체에 이들을 뿌리거나 예외를 잡는 것보다 멋지다.

1

코드 팩 (http://code.msdn.microsoft.com/WindowsAPICodePack)과 같은 래퍼 라이브러리를 사용하는 경우 버전 검사가 수행됩니다. 계속해서 라이브러리 메소드를 호출하면 runnning 할 때 OS에없는 것을 시도하면 PlatformNotSupportedException이 발생합니다.

일부 Windows DLL을 P/호출하는 경우 EntryPointNotFoundException을 catch 할 수도 있습니다. 자신의 interop을 수행 할 때 최상의 방법입니다. 기능이 하위 레벨 OS에 추가 될 때까지 (업데이트 및 서비스 팩에 따라) 수 년이 걸릴 수 있습니다.

두 가지 모두를 사용하면 작업 표시 줄이 없거나 라이브러리가 없거나 기능이 없기 때문에 예외를 던지고 catch하는 데 걸리는 시간을 절약 할 수 있습니다. .

자신의 버전을 확인하고 현재 사용중인 OS가 무엇인지 확인하고 싶다면 으로 지우고> =의 마법을 기억하십시오.버전 번호가 인 정확히 XP SP2인지 확인하고 "XP SP2 이상 필요"라는 메시지 상자를 표시하는 코드가 얼마나 있는지 알고 계십니까? A . 사실 Win7의 주 버전은 6이기 때문에 "6과 동등"을 검사하는 모든 코드가 여전히 작동합니다. 그 녀석이되지 마.

if (Environment.OSVersion.Version.Major >= 6) 
{ 
    if (Environment.OSVersion.Version.Minor >= 1) 
    // Do Win7 thing 
    else 
    // Do Vista thing 
} 
else if (Environment.OSVersion.Version.Major >= 5) 
// Do XP thing 

당신은 http://msdn.microsoft.com/en-us/library/ms724832%28VS.85%29.aspx

케이트 사실

+0

에서 모든 주요/부 번호를 찾을 수 있습니다, 7.0, 8.0 및 다른 신화 이후 버전 비스타의 일을 할 것입니다이 코드. 쥐, 버전 검사는 어렵습니다! 주요 버전을 정확히 알고있을 때만 부 버전을 확인하십시오. –