Windows API Code Packのサンプルコードの所在
Windows API Code Packのサンプルコードは、sourceフォルダ内にあります。しかし、DirextXを使ったサンプルコードと他の一部のコードは、Windows10 64bit、Visual Studio 2017では、動作しませんでした。
動作しかなかった機能は、他のツールキットを探したほうが良いと思います。
Readmeに、「代わりに、SharpDXを使用することを強くお勧めします。」と記載されていましたので、DirextXについては、SharpDXや他のツールキットの利用を考えて下さい。
AeroGlassDemo
実行すると、Explorerが表示される。外観がVistaで導入されたAeroが利用できることデモと思われるが、これを実行しているのが、Windows10なので、特に何も感じない。
AppRestartRecoveryDemo
デモは、Formアプリケーションで作成されていました。
60秒後、App Restart Recovery→Crashをクリックして、強制的にアプリケーションをクラッシュさせると、アプリケーションがリスタートし、クラッシュ前の状態が復元されます。
動作を確認するには、Visual Studioでは、「ディバッグなしで実行」する必要があります。
CollectiveSample
CollectiveSample、CollectiveSample10ともに、Windows10 64bit、Visual Studio 2017では、実行できない。
DirectX
フォルダ内に複数のサンプルが存在しますが、Windows10 64bit、Visual Studio 2017では、DirectXのバージョンが異なるため動作しません。
ExplorerBrowser
ファイルブラウザが表示されます。
ExtendedLinguisticServices
ELSDemo
Transliterator
HandlerSamples
単独では、実行できません。
シェル拡張機能サンプル
Shell Extension Samples
サムネイル・プロバイダとプレビューのハンドラは、Windowsシェルの中心的な機能を拡張します。
あなたのコードが、シェルを呼び出すのではなく、シェルが、あなたのコードを呼び出すため、それらは、Code Packのほとんどと異なります。
シェルが、自分のコードを探して、見つける必要があることを知るためには、あなたは、コンパイルしたアセンブリを登録する必要があります。
あなたのハンドラを登録するために。
- IPreviewHandler、または、IThumbnailProviderと1つ以上の初期化インターフェイスから、クラスを派生させます。
- あなたのハンドラ・クラスに、適切な属性を追加します。
PreviewハンドラとThumbnailプロバイダの両方に、これらの属性が必要です。
[ComVisible(true)] // Shell/COMを、あなたのクラスに見せましょう。 [ClassInterface(ClassInterfaceType.None)] // 必要です [ProgId("HandlerSamples.XYZPreviewerWPF")] // これは、ハンドラごとに一意である必要がある、代わりのホストを関連付けるために必要です。 [Guid("B9E6A036-9778-4B48-BA45-33F15B9B07AF")] //これは、アセンブリが登録されているGUIDです。;
それは、一意である必要があります。
Previewハンドラは、この追加の属性を必要とします。:
[PreviewHandler("PreviewHandlerWPFDemo", ".xyz", "{EC3E84CC-BDC5-4E9F-A67F-CC960F366497}")] // 拡張機能とハンドラの子孫(一意でなければなりません)の半コロンで区切られたリストの名前。
サムネイル・ハンドラは、この追加の属性を必要とします。
[ThumbnailProvider("XYZThumbnailer", ".xyz", DisableProcessIsolation = false)] //セミコロンで区切られたファイル拡張子のリストの名前。
IThumbnailFromStreamが、実装されていない場合、DisableProcessIsolationのみが必要です。
- コンパイルします。お使いのシステムのOSバージョン用に、特別にコンパイルしてください。
- 64ビットOSでは、x64用にビルドします。
- 32ビットOSでは、x86用にビルドします。
- Visual Studioのコマンド・プロンプトの出力ディレクトリに移動します。
ご使用のOSの種類のために、正しいプロンプト(32/64ビット)を必ず使用してください。
- 次のコマンドを使用して、あなたのアセンブリを登録します。検証してエラーがないことを、確認してください。
エラーが、発生した場合、あなたは、アセンブリを再コンパイルして、もう一度登録する必要があります。
regasm /codebase "<assemblyname>"
メモ
- 一旦、あなたのアセンブリが、うまく登録されれば、それが、Shellによって使用されている場合、ファイルが、ロックされているため、あなたは、アセンブリを再構築することはできません。
あなたは、再構築する前に、ハンドラのための代わりのホスト・プロセスを終了することができます。あるいは、再構築する前に、エクスプローラ・プロセスを再起動してください。
- サムネイル・プロバイダによって、作成されるサムネイルは、キャッシュに格納されます。それらは、大幅に異なる寸法のために再作成されます。
それ以上の寸法のサムネイルがない場合、あるいは、ファイルが、変更された場合、キャッシュされたサムネイルが、追加/更新されます。
キャッシュをクリアするために、Disk Cleanup Utilityを使用し、"Thumbnails"オプションをチェックします。
- アセンブリを非登録するために、GUIDが、最初に登録されたものと同じであることを確認してください。続いて、"regasm /unregister <assembly>"を使用してください。
テキストファイルの説明が入っています。
NetworkDemo
PowerMgmtDemo
実行しても、ウィンドウは、表示されませんでした。
Sensors
Formアプリケーションで作成されています。
CommonFileDialogsDemo
CustomCommonFileDialogsDemo
DragAndDrop
ShellObjectDragAndDrop
ファイルをドラッグアンドドロップできます。画像や動画であれば、サムネイルが表示されます。
KnownFoldersBrowser
PicturePropertiesEditor
例外が投げられ、実行できません。
PropertyEdit
SearchApp
ThumbnailBrowserDemo
StarBackupUsingLibraries
ライブラリなので、単体では、実行できません。
StockIconsDemo
システムアイコンが表示されます。
TabbedThumbnailDemoWinforms
Formアプリケーションで作成されています。
お気に入りリストとブラウザ。html5、css3ページを正常に表示しています。
TaskbarDemo
タスクバーを操作するアプリケーション。
Progress Barの項目のスライダーで、ダスクバーのアプリケーションアイコンのプログレスバーの状態を操作できる。その他の機能は、確認していない。
「プログラムから開く」で、表示されるアプリケーションリストに表示されるので、注意
ThumbnailToolbarDemoWPF
左側の枠にフォルダ内の画像のサムネイル、右側に画像ファイルを表示する
ShellObjectWatcherSampleWPF
例外が発生した。
TaskDialogDemo
例外が発生した。