C++の感覚でC#のファイナライザもプログラム終了時に呼び出されると思い込んでいたのですが、ファイナライザは基本的に呼び出されません。呼び出されるのはGCの実行時に対象となった場合のみです。Windowsのプロセス終了時に関連リソースを解放する設計によ…
はてなブログタグは無料版で強制適用でしたが、2023年7月31日辺りから無効化可能になっていたようです。既定では有効なのでブログごとにアプリ外の詳細設定から無効化する必要があります。また有効化時に投稿された記事は適用されたままなので、個別に更新し…
ネット投稿を読んで知ったのですが、最近のC#ではプラットフォーム呼び出し (P/Invoke)をローカル関数として書けます。ローカル関数のドキュメントには確かにexternの記載があります。通常のローカル関数を書ける部分なら書けるので、メソッド、プロパティ、…
過去の投稿では関数を小分けにしていましたが、一つの機能としてまとめる関数を作成しても良いと思います。ついでに投稿後に追加されたトップレベルステートメントも使用しています。 using System.Runtime.InteropServices; Console.WriteLine(ShellIDListU…
以下の手順でWinFormsプロジェクトの依存フレームワークにMicrosoft.Windows.SDK.NET.Refが追加されて、ビルド後のファイルにWinRT.Runtime.dll (391 KB)とMicrosoft.Windows.SDK.NET.dll (200,076 KB)が追加されました。DLLは両方削除してもおそらく対応す…
C#における同期処理の知識がBackgroundWorkerやTaskで止まっていたのですが、ParallelとConcurrentBagを使ったら非同期処理を簡単に同期処理に変更できました。マルチスレッドになるのでリソースの同時アクセスには注意が必要ですが、各スレッドでそれぞれフ…
C++と標準ライブラリで以前投稿したコードのC++23 PreviewとWILを使った書き直しです。ifのネストが消えたのはWILのおかげなので、C++20でもWIL、可能ならstd::functionalを使えば同程度に簡単にできると思います。 #include <format> #include <string> #include <iostream> #include <experimental/generator></experimental/generator></iostream></string></format>…
WIC(Windowsイメージングコンポーネント)を使って画像ファイルからDIBセクションを作成する方法です。WICはGDIでは扱いにくいアイコンやGIF、PNGを統一された方法でビットマップに変換できます。 以下のコードはC++20で動作するウィンドウアプリケーション…
Rのパッケージreadr 2.1.5のリファレンス和訳です。readrはHadley Wickham氏の作成したtidyverseの一部で、CSV等の長方形データセットを読み込む機能を提供します。 原文はMITライセンスですが、原文の権利はHadley Wickham氏と貢献者方にあります。翻訳文の…
公開された非公開関数NtQuerySystemInformationと非公開の定数SystemExtendedHandleInformation (0x40)を使うとカーネルオブジェクトハンドルの一覧を取得できます。固定長構造体のみなので前回投稿と比べれば遥かに扱いが楽です。なお、NtQuerySystemInform…
NtQueryObject関数とObjectTypesInformation (3)で詰まったのでその概要と動作するコードを記録します。 詰まった点と解決策 NtQueryObject関数とObjectTypesInformation (3)を使うとPUBLIC_OBJECT_TYPE_INFORMATIONの個数とその配列を取得できます(以下、P…
MicrosoftがGitHubでMITライセンス公開しているWILのGitHub Wikiの記事を和訳・改変したものです。素人による翻訳なので、誤訳や著作権上の問題などありましたらご連絡いただけますと幸いです。 シャットダウン認識オブジェクト(原題:Shutdown aware objec…
MicrosoftがGitHubでMITライセンス公開しているWILのGitHub Wikiからミューテックスハンドルの記事を和訳・改変したものです。素人による翻訳なので、誤訳や著作権上の問題などありましたらご連絡いただけますと幸いです。 ミューテックスハンドル(原題:Mu…
Posit SoftwareのHadley Wickham氏が提供する素晴らしいRパッケージ群tidyverseや関連パッケージの和訳記事へのリンク記事です。徐々に数を増やしていけたらうれしいです。 purrr 1.0.2 リファレンス(途中) purrr 1.0.2 記事「purrr <-> base R」 readr 2.…
Rのパッケージpurrr 1.0.2のリファレンス和訳です。purrrはHadley Wickham氏の作成した関数型プログラミングの素晴らしいパッケージで、base Rよりも一貫した方法、手軽な方法でデータを操作できます。 現状ではas_mapperまで翻訳できています。 添付文書の…
MicrosoftがGitHubでMITライセンス公開しているWILのGitHub Wikiの記事を和訳・改変したものです。素人による翻訳なので、誤訳や著作権上の問題などありましたらご連絡いただけますと幸いです。 ファイルシステムヘルパー(原題:File System Helpers (files…
MicrosoftがGitHubでMITライセンス公開しているWILのGitHub Wikiの記事を和訳・改変したものです。素人による翻訳なので、誤訳や著作権上の問題などありましたらご連絡いただけますと幸いです。 ロックガードオブジェクト(原題:Lock guard object) Raymon…
MicrosoftがGitHubでMITライセンス公開しているWILのGitHub Wikiの記事を和訳・改変したものです。素人による翻訳なので、誤訳や著作権上の問題などありましたらご連絡いただけますと幸いです。 カーネルオブジェクトの待機(原題:Waiting on kernel object…
浮動小数点計算やPEファイルの解析クラスを高速化しようとしてReSharperを導入してみました。 Trial版を30分ほど使った感想は以下の通りです。使用期間は30日ですが、既にアンインストールしたので項目は増えません。 WinFormsやWindows依存クラスライブラリ…
Rのパッケージpurrr 1.0.2の添付文書和訳です。purrrはHadley Wickham氏の作成した関数型プログラミングの素晴らしいパッケージで、base Rよりも一貫した方法、手軽な方法でデータを操作できます。 この文書はpurrr 1.0.2のbase.Rmdの和訳及び改変です。 添…
ディレクトリ中のファイルを列挙するプログラムで列挙後のコードが実行されずに悩んでいたのですが、原因は検索ディレクトリ以下に含まれる循環したディレクトリのシンボリックリンクとtry構文による例外の握りつぶしでした。 ディレクトリに循環したシンボ…
C++では容量削減のためにビットフィールドが多用されました。これをC#でどのように表すべきか、答えのない問題に悩んでいます。 背景:C++のビットフィールド C++のビットフィールドは以下の形式で表されます。組み込み整数のビット演算の糖衣構文です。 // …
Rのパッケージconflicted 1.2.0の添付文書和訳です。conflictedはHadley Wickham氏の作成した衝突回避の素晴らしいパッケージで、衝突の検出だけでなく優先順位指定も可能です。 添付文書のライセンスはMITライセンスですが、原文の権利はHadley Wickham氏と…
ImmutableCollectionsMarshal.AsImmutableArray<T>静的メソッドを使えば配列をラップするImmutableArray<T>を直接作成できます。配列のToImmutableArrayによる要素コピーを回避できます。C++のムーブに該当します。 なお、ImmutableCollectionsMarshalにはAsImmuta</t></t>…
QiitaでTextDecoderを使ってShift-JISコードを取得する記事(McbeEringi氏)を見かけました。記事中のコードは理解できていないのですが、発想を参考にShift-JISコード配列を取得するクラスを作成しました。 // UnicodeコードポイントからShift-JISへの変換…
フォントディレクトリはエクスプローラーでは特殊フォルダ(フォントフォルダ)扱いされて元のファイル名を表示できません。この仕様はシェルを介さないWindows APIにより回避できます。 PowerShell 7でのスクリプトは以下のようになります。スクリプトでは…
エクスプローラーの検索ボックスで使える検索方法集です。詳細は末尾の公式ドキュメントを参照してください。Windowsのバージョンによっては内容が変わる可能性があります。 パターン指定 目的 記法 例 完全一致 ="キーワード" System.FileName:="テキスト.t…
8/30追記 下記のthiscall呼び出し規約を指定したコードはx64で動作しますが誤りです。COMメソッドはSTDMETHODやSTDMETHOD_マクロによりstdcall呼び出し規約が指定されます。x86ではECXレジスタ上のthisが無視されてエラーになるはずです。 WindowsのCOMオブ…
クラスライブラリは作っても場所を忘れて使わなくなってしまうことがありますが、ローカルリポジトリを作ってまとめておけば忘れにくくなり、管理も楽になります。 Visual Studio 2022でのローカルリポジトリへのクラスライブラリ登録は次の手順で可能です。…
過去の投稿のコードをC# 12 (.NET 8)版に書き換えたものです。nintやオブジェクト初期化子により少し簡潔になります。 非unsafe版 unsafe版 非unsafe版 using System.ComponentModel; using System.Runtime.InteropServices; [assembly: DefaultDllImportSea…