문제

.NET 애플리케이션에서 새로운 Windows 7 작업 표시 줄 기능을 활용하고 싶습니다. 저의 목표는 Windows XP 및 Windows 7에 대한 뚜렷한 코드를 갖는 것입니다.

나는 지나치게 열중하지 않습니다.

  • 시도 캐치에서 Windows 7 코드를 래핑합니다.
  • os = "Windows 7"인 경우 ...

물론 이것은 대부분의 일이 아니라면. 나는 좋은 접근 방식을 위해 모든 곳에서 사냥을했지만 성공하지 못했습니다. Microsoft가 관리하지 않는 코드 래퍼 라이브러리는 Windows 7에서 실행 중이라고 가정하는 것 같습니다.

도움이 되었습니까?

해결책

나는 아무 문제가 없다고 생각합니다 if OS = "Windows 7". 물론,

  • 그것은해야한다 if OS >= "Windows 7" (따라서 Windows 7.1에서 깨지지 않도록 또는 후임자가 될 것입니다).
  • 확인하여 수행해야합니다 Environment.OSVERSION (플랫폼 및> = 버전).

코드를 혼란스럽게 만들고 싶지 않다면 if (isWindows7) {...}, 플랫폼 별 코드를 별도의 클래스에 넣을 수 있습니다. 예를 들어 인터페이스를 만들 수 있습니다

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

그리고이 클래스의 두 가지 구현, 하나는> = Win 7, 다른 하나는 다른 하나를위한 것입니다 (다른 일을하거나 전혀 아무것도하지 않음). 응용 프로그램이 시작되면 전역 유형의 일부 변수를 인스턴스화합니다. IOSSpecific 두 구현 중 하나가 있습니다.

다른 팁

나는 당신이 할 것이라고 기대할 것입니다 :

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

Windows7 ID가 어떤 가치가 있는지 모릅니다.

나는 일반적으로 다른 플랫폼을 지원하기 위해 공장에서 어떤 객체를 만든지를 결정하기 위해이 질문을합니다. 코드 기반 전체에 이것들을 뿌리거나 예외를 포착하는 것보다 더 좋습니다.

코드 팩과 같은 래퍼 라이브러리를 사용하는 경우 (http://code.msdn.microsoft.com/windowsapicodepack ) 버전을 확인합니다. 당신은 계속해서 라이브러리 방법을 호출하면 달리기를 할 때 OS에없는 것을 시도하면 플랫폼을 지원합니다.

P/일부 Windows DLL로 호출되는 경우 EntryPointNotFoundException을 잡을 수도 있습니다. 기능이 몇 년부터 다운 레벨 OS로 추가 될 수 있기 때문에 자체 인터 로프를 수행 할 때 가장 좋은 방법입니다.

이 두 가지를 사용하면 작업 표시 줄이 없거나 라이브러리가 없거나 어떤 기능이 없는지를 상기시켜주는 일종의 플래그를 캐시 할 수 있습니다.

자신의 버전 확인을하고 귀하가 어떤 OS에 있는지 확인하는 경우 제발 > =의 마법을 기억하십시오. 버전을 테스트하는 코드가 얼마나 많은지 알고 있습니다. 바로 그거죠 XP SP2와 "XP SP2 이상이 필요하다"라는 메시지 상자를 올려 놓습니까? ㅏ . 실제로 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

케이트

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top