potisanのプログラミングメモ

趣味のプログラマーがプログラミング関係で気になったことや調べたことをいつでも忘れられるようにメモするブログです。

WIL

C++20&Win API&WIL コンポーネントカテゴリマネージャーを使う

CLSID_StdComponentCategoriesMgrとICatInformationインターフェイスを使ってコンポーネントカテゴリの情報を取得するコードです。カテゴリの概要や所属するクラスを列挙できます。 カテゴリの概要を列挙する #include <string> #define STRICT #define NOMINMAX #in</string>…

C++20&Win32 API&WIL レジストリに登録されたCLSIDの情報をCSVへ書き出す

レジストリに登録されたCLSIDの情報(キー名、概要、InProcServer32のパス)をCSVへ書き出すコードです。コンセプト、std::wstring、バージョン情報の取得などを含んでいます。 main.cpp stl_util.hpp win32_reg_util.hpp win32_util.hpp FileVersionInfo.hp…

C++20&WIL&Win API MMDevice APIでスピーカー(既定のマルチメディア出力)の音量情報を取得する

Windows Vistaからはマスター音量(システム全体の音量)の変更にCOMベースのMMDevice API (Windows Multimedia Device API)を用います。ここではスピーカー(既定のマルチメディア出力)の音量情報を取得するコードを記載します。 #include <format> #define STRICT</format>…

C++20&WIL&Win API MMDevice APIでスピーカー(既定のマルチメディア出力)の表示名を取得する

Windows Vistaからはマスター音量(システム全体の音量)の変更にCOMベースのMMDevice API (Windows Multimedia Device API)が用いらます。ここではスピーカー(既定のマルチメディア出力)の表示名を取得するコードを記載します。 #define STRICT #define N…

C++20&WIL&Win API MMDevice APIでミュートを切り替える

Windows Vistaからはマスター音量(システム全体の音量)の変更にCOMベースのMMDevice API (Windows Multimedia Device API)が用いらます。ここではミュートを切り替えるコードを記載します。 #define STRICT #define NOMINMAX #include <Windows.h> #include <mmdeviceapi.h> #include <endpointvolume.h></endpointvolume.h></mmdeviceapi.h></windows.h>…

C++20&Win API&WIL 特権のプライマリドメイン情報(名前・SID)を取得する

#include <string> #include <iostream> #define STRICT #define NOMINMAX #include <Windows.h> #include <subauth.h> #include <ntlsa.h> #include <sddl.h> #include <wil/resource.h> #define THROW_IF_LSA_NTSTATUS_FAILED(status) THROW_IF_NTSTATUS_FAILED(::LsaNtStatusToWinError((status))) // LSA_UNICODE_STRIN…</wil/resource.h></sddl.h></ntlsa.h></subauth.h></windows.h></iostream></string>

C++&Win32 API プロパティシステムに登録されたプロパティの正規名と取り得る値を列挙する

Windowsのプロパティシステムに登録されたプロパティの正規名(Canonical Name)と取り得る値(Possible Value)を列挙するサンプルです。PSGetPropertySystemでIPropertySystemを取得した後、IPropertyDescriptionList→IPropertyDescription→IPropertyEnumT…

C++&Win32 API MMDevice API (Core Audio APIs)によるデバイス情報の取得

トップ/C++言語関係 Windows Vistaから導入されたMMDevice API(Core Audio APIs)を使用してデバイス情報を取得するサンプルです。WIL(NuGetのMicrosoft.Windows.ImplementationLibraryパッケージ)を使用した場合はコードにバージョンを記載しています。…

C++17&Win32 API STRRET型出力引数をstd::wstring型で受け取るクラス

Win32 APIで使われるSTRRET型の出力引数をstd::wstring型で受け取るクラスのコードです。 // out_STRRET_into_wstring.hpp #include <string> // 同じwstringを受け取るインスタンスを同時に使用しないでください。 // 次のようなコードは不適切です。 // // std::ws</string>…

WIL GitHub Wiki 型検証ヘルパーの和訳・改変

MicrosoftがGitHubでMITライセンス公開しているWILのGitHub Wikiから記事を和訳・改変したものです。素人による翻訳なので、誤訳や著作権上の問題などありましたらご連絡いただけますと幸いです。 型検証ヘルパー(原題:Type validation helpers) Raymond …

WIL GitHub Wiki string_makerの和訳・改変

MicrosoftがGitHubでMITライセンス公開しているWILのGitHub Wikiの記事を和訳・改変したものです。素人による翻訳なので、誤訳や著作権上の問題などありましたらご連絡いただけますと幸いです。 string_maker Raymond Chen、2020/1/24、リビジョン1個 wil::d…

WIL GitHub Wiki テンプレートメタプログラミングヘルパーの和訳・改変

MicrosoftがGitHubでMITライセンス公開しているWILのGitHub Wikiの記事を和訳・改変したものです。素人による翻訳なので、誤訳や著作権上の問題などありましたらご連絡いただけますと幸いです。 テンプレートメタプログラミングヘルパー(原題:Template met…

WIL GitHub Wiki 引数処理ヘルパーの和訳・改変

MicrosoftがGitHubでMITライセンス公開しているWILのGitHub Wikiから記事を和訳・改変したものです。素人による翻訳なので、誤訳や著作権上の問題などありましたらご連絡いただけますと幸いです。 引数処理ヘルパー(原題:Parameter handling helpers) Ray…

WIL GitHub Wiki 最終エラー(Last error)の保存の和訳・改変

MicrosoftがGitHubでMITライセンス公開しているWILのGitHub Wikiの記事を和訳・改変したものです。素人による翻訳なので、誤訳や著作権上の問題などありましたらご連絡いただけますと幸いです。 最終エラー(Last error)の保存(原題:Last error preservat…

WIL GitHub Wiki Win32ヘルパーの和訳・改変

MicrosoftがGitHubでMITライセンス公開しているWILのGitHub Wikiの記事を和訳・改変したものです。素人による翻訳なので、誤訳や著作権上の問題などありましたらご連絡いただけますと幸いです。 Win32ヘルパー(原題:Win32 helpers) Brian Gianforcaro、20…

WIL GitHub Wiki イベントハンドラの和訳・改変

MicrosoftがGitHubでMITライセンス公開しているWILのGitHub Wikiの記事を和訳・改変したものです。素人による翻訳なので、誤訳や著作権上の問題などありましたらご連絡いただけますと幸いです。 イベントハンドラ(原題:Event handles) Raymond Chen、2020…

C++&WIL ファイルシステムオブジェクトのプロパティ情報を列挙する

C++20とWIL(バージョン)でプロパティシステムを使ってファイルシステムオブジェクトのプロパティ情報を列挙するサンプルコードです。 サンプルコード 出力例 サンプルコード // 動作確認環境: // C++20 // WIL 1.0.201120.3 #include <algorithm> #include <iostream> #include <ranges></ranges></iostream></algorithm>…

C++&WIL Windowsプロパティシステムのプロパティ情報を列挙する

C++20とWILでWindowsプロパティシステムのプロパティ情報を列挙するサンプルコードです。コードの変更でプロパティの他の情報も列挙できます。 コード 出力例 コード #include <iostream> #include <string> #pragma comment(lib, "propsys.lib") #define STRICT #include <Windows.h> #in</windows.h></string></iostream>…

C++ Function-try-block(関数tryブロック)

関数tryブロック WILでの利用 MSVCのコンストラクタにおける不思議な挙動 参考 関数tryブロック WILのGitHub Wikiを読んでいたら関数名の後ろ、constやnoexceptのある部分にtry、関数の直後にcatchのあるコードを見かけました。main関数で示せば次のような感…

WIL GitHub Wiki ビット操作ヘルパーの和訳・改変

MicrosoftがGitHubでMITライセンス公開しているWILのGitHub Wikiからビット操作ヘルパーの記事を和訳・改変したものです。素人による翻訳なので、誤訳や著作権上の問題などありましたらご連絡いただけますと幸いです。 ビット演算ヘルパー Duncan Horn、2020…

WIL GitHub Wiki アドホック範囲ヘルパーの和訳・改変

MicrosoftがGitHubでMITライセンス公開しているWILのGitHub Wikiからアドホック範囲ヘルパーの記事を和訳・改変したものです。素人による翻訳なので、誤訳や著作権上の問題などありましたらご連絡いただけますと幸いです。 アドホック範囲ヘルパー Raymond C…

WIL GitHub Wiki マクロによるメタプログラミングの和訳・改変

MicrosoftがGitHubでMITライセンス公開しているWILのGitHub Wikiからマクロによるメタプログラミングの記事を和訳・改変したものです。素人による翻訳なので、誤訳や著作権上の問題などありましたらご連絡いただけますと幸いです。 マクロによるメタプログラ…

WIL (Windows Implementation Libraries)関係の記事

MicrosoftがGitHubでMITライセンス公開しているWIL (Windows Implementation Libraries)関連の記事です。現在はGitHub Wikiの和訳・改変と使用例が主です。 GitHub Wikiの和訳・改変 WILの使用例 リンク GitHub Wikiの和訳・改変 RAIIリソースラッパー 文字…

C++ WILとWindows Update Agent APIでWindows Updateの更新履歴(タイトル、説明)を取得する

WILとWindows Update Agent APIでUpdateSearcherを作成・管理してWindows Updateの更新履歴からタイトルと説明を取得するサンプルコードです。タイトルと説明以外には日付等の難しい型が含まれるため、いったん無視しています。 // C++20 #include <iostream> #include <vector></vector></iostream>…

C++ WILとWindows Update Agent APIでWindows Update関連のシステム情報を取得する

WILとWindows Update Agent APIでSystemInformationを作成・管理してWUA API関連のシステム情報(OEMハードウェアサポートリンク、リブート要求)を取得するサンプルコードです。 #include <iostream> #define STRICT #define NOMINMAX #include <Windows.h> #include <wuapi.h> #include <wil/com.h> </wil/com.h></wuapi.h></windows.h></iostream>…

C++ WILとWindows Update Agent APIでWUA APIのバージョンを取得する

WILとWindows Update Agent API(WUA API)でWindowsUpdateAgentInfoを作成・管理してWUA APIのバージョンを取得するサンプルコードです。 // C++20 #include <iostream> #pragma comment(lib, "propsys.lib") #define STRICT #define NOMINMAX #include <Windows.h> #include <propvarutil.h> #i</propvarutil.h></windows.h></iostream>…

WIL GitHub Wiki WinRT&COMラッパーの和訳・改変

MicrosoftがGitHubでMITライセンス公開しているWILのGitHub WikiからWinRT and COM wrappersの記事を和訳・改変したものです。素人による翻訳なので、誤訳や著作権上の問題などありましたらご連絡いただけますと幸いです。 一部のリンク切れは意図的なもので…

WIL GitHub Wiki safe_castの和訳・改変

MicrosoftがGitHubでMITライセンス公開しているWILのGitHub Wikiからsafe_castの記事を和訳・改変したものです。素人による翻訳なので、誤訳や著作権上の問題などありましたらご連絡いただけますと幸いです。 一部のリンク切れは意図的なものです。原文をご…

WIL GitHub Wiki 文字列ヘルパーの和訳・改変

MicrosoftがGitHubでMITライセンス公開しているWILのGitHub Wikiから文字列ヘルパーの記事を和訳・改変したものです。素人による翻訳なので、誤訳や著作権上の問題などありましたらご連絡いただけますと幸いです。 一部のリンク切れは意図的なものです。原文…

WIL GitHub Wiki RAIIリソースラッパーの和訳・改変

MicrosoftがGitHubでMITライセンス公開しているWILのGitHub WikiからRAIIリソースラッパーの記事を和訳・改変したものです。素人による翻訳なので、誤訳や著作権上の問題などありましたらご連絡いただけますと幸いです。 一部のリンク切れは意図的なものです…