2013-04-29 2 views
1

Windows 작업 표시 줄에 일부 정보를 표시하기 위해 DeskBand를 만들고 싶지만 C++에서 필요한 기능을 구현하는 데 어려움을 겪고 있습니다. 내가 C++을 만난 지 약 10-15 년이 지났습니다. 저는 지난 7 년 동안 .NET에서 전적으로 일해 왔습니다.DeskBand를 만들고 싶습니다. C++을 사용해야합니까?

당신이 말하기 전에 - 저는 DeskBands가 더 이상 사용되지 않는다는 것을 알고 있습니다. 그러나 제안 된 대체 UI 요소 인 썸네일 도구 모음은 내 필요를 충족시키지 못합니다. 어떤 애플리케이션으로 전환하든 관계없이 사용자가 계속 볼 수있는 UI 요소가 필요하며 텍스트 줄을 표시 할 충분한 공간을 제공하는 UI 요소가 필요합니다. 30 자 정도의 공간을 확보 할 수있었습니다.

내가 컴파일하고 실행하기 위해 Windows SDK 샘플에서 DeskBand을 얻을 수있었습니다 만, 지금은 몇 가지 중요한 기능을 구현해야 - 특히 ...

  • 의 AppData 찾기

    \ 로컬 폴더를 (SHGetKnownFolderPath(FOLDERID_LocalAppData...)
  • 수정을위한 XML 파일보기. 파일이 바뀔 때마다 구문 분석하고 다시 칠할 필요가 있습니다.
  • 는 XML 파일을 구문 분석
  • 분에 한 번

당 DeskBand을 다시 칠하는 타이머를 설정 내 DeskBand

  • 의 XML 파일에서 일부 데이터를 표시 (나는 pugixml 없음) ... 그리고 나는 얼마나 C++에 대해 알고 있는지, 그리고 .NET의 기본 클래스 라이브러리에 얼마나 의존했는지를 깨닫게되었습니다. 이 작업은 C#으로 작성한 경우 나에게 매우 쉽습니다. 그러나 나는 다른 곳에서 그것을 배웠다 you shouldn't write shell extensions in .NET.

    내 옵션에는 어떤 것이 있습니까? 파이썬에서 이것을 달성하기위한 쉬운 언어가 있습니까? 아니면 그냥 총알을 물어야하고 C++에서이 작업을 수행해야합니까? 그렇다면 C++에서 WinAPI 셸 확장을 구현하려고하는 .NET 개발자를위한 조언은 무엇입니까?

    미리 감사드립니다.

  • +0

    일부 연구가 시대에 뒤진 것 같습니다. 이제 .NET 4.0이 이러한 상황을 어떻게 바꿔 놓았는지 읽어보십시오. –

    +1

    .NET 4에서 다음과 같이 시도해보십시오. [이제 .NET Framework 버전 4는 인 - 프로세스 (in-process) side-by-side 런타임을 지원합니다. 관리 코드에 셸 확장을 쓸 수 있습니까?] (http://blogs.msdn.com/b/oldnewthing/archive/2013/02/22/10396079.aspx). "대답은 여전히 ​​아니오입니다." –

    +0

    성능 문제가 유일한 경우 .NET 4.0 경로를 계속 추구 할 수 있습니다. DeskBand를 로딩 할 때 컨텍스트 메뉴를 표시하는 것보다 5 초 지연이 덜 중요한 문제라고 생각합니다. –

    답변

    2

    셸 확장은 COM 개체이므로 C++은 주로 C++ 용으로 설계 되었기 때문에 C++은 일반적으로 COM 개체를 개발할 때 사용할 수있는 최상의 언어이지만 가능한 언어는 아닙니다. COM에는 표준화 된 아키텍처가 있으므로 COM 개체 개발 (Delphi, VB 등)을 지원하는 .NET 외부의 언어를 사용하여 셸 확장을 개발할 수 있습니다 (Win32 API는 주로 C 용으로 설계되었지만 C 호환 언어로 액세스 할 수 있습니다.)

    관련 문제