potisanのプログラミングメモ

プログラミング素人です。昔の自分を育ててくれたネット情報に少しでも貢献できるよう、情報を貯めていこうと思っています。Windows環境のC++やC#がメインです。

2019-09-01から1ヶ月間の記事一覧

Windows BS_SPLITBUTTONとHDF_SPLITBUTTON

C#の標準コントロール(Button、ColumnHeader)で実装されていないので気付きませんでしたが、Button(標準コントロール)、Header(コモンコントロール)にスプリットボタン機能が追加されていました。 ButtonではウィンドウスタイルのBS_SPLITBUTTON、Head…

C# 現在使用されているMicrosoft Windows SDKの場所とバージョンを取得する

C#で現在使用されているMicrosoft Windows SDKの場所とバージョンを取得するにはレジストリを参照します。64ビット環境で32ビットアプリケーションを起動した場合、WOW64により異なるキーを参照してしまうことに注意してください。 レジストリキーの場所 HKE…

C# Image.FromFileの代替法とその短所

C#

C#のImage.FromFileメソッドは戻り値のImage型オブジェクトが解放されるまでファイルがロックされる仕様が知られています。 この仕様を回避するため、File.OpenメソッドとImage.FromStreamメソッドを組み合わせた代替法が知られています。この代替法を使用し…

C# 9 IShellItemインターフェイスをパスから作成する

IShellItemインターフェイスをパスから作成して表示名、親フォルダとその表示名を取得するサンプルコードです。 using System; using System.Runtime.InteropServices; var item = default(IShellItem); try { item = NativeMethods.SHCreateItemFromParsing…

C# BitmapData.Scan0の操作でAccessViolationException例外が発生する理由と対処

本文 Image.FromHbitmap関数で作成したビットマップのような一部のビットマップではBitmap.LockBitsメソッドが返すBitmapDataのStrideが負の値になります。このようなビットマップはボトムアップ形式と呼ばれ、Scan0はビットマップの最終列の最初のピクセル…

R.NETがすごい!

C# R

R.NETがすごいです。C#の標準機能では提供されない主成分分析やグラフ画像の作成を簡単かつ信頼できる方法で実行できます。詳細は以下のリンクから。また、Microsoft Visual Studio 2019であればNuGet パッケージマネージャーからプロジェクトへお手軽にイン…