2019-03-01から1ヶ月間の記事一覧
概要 32ビット形式のPEファイルを生データとして解析してIMAGE_COR20_HEADER構造体を取得するサンプルコードです。実際にはIMAGE_COR20_HEADER構造体のメインであろうメタデータは今後の拡張に備えてフォーマット非公開なのでCLSID_CorMetaDataDispenserで公…
概要 shlwapi.dllのSHLoadIndirectString関数を使用してレジストリで使用されるindirect string("@location,id"等)を元の文字列に変換するクラスとサンプルコードです。この表記は主にレジストリで使用され、DLLに含まれる文字列リソースを参照する場合に…
概要 Win32 APIのリソースIDの定義や操作で使用されるマクロの簡単な情報です。具体的には次のマクロの概要を説明します。 IS_INTRESOURCE MAKEINTRESOURCE[A/W] リソースIDは環境(32、64ビットあるいはA/W)に関わらず、16ビットの範囲内にあれば整数型、…
DragEventArgs eとComTypes.IDataObject型 DragDropイベントなどで使用されるe.DataはSystem.Windows.Forms.IDataObject型ですが、System.Runtime.InteropServices.ComTypes.IDataObject型(以下ComTypes.IDataObject型)へ明示的に変換することができます。…
はじめに Windows 10 64 bit環境でウィンドウにドロップしたときのOLEデータオブジェクトに含まれるクリップボード形式の確認結果です。詳細は各自ご確認下さい。 出力例 デスクトップからPCをドロップ c0ca (Shell IDList Array) c0d3 (Preferred DropEffec…
概要 Windowsではファイル名を指定された場合のパスの検索順序がレジストリに保存されており、「ファイル名を指定して実行」やLoadLibrary関数等ではこの順序が使用されます。この検索機能はSearchPath関数で公開されており、C#でもP/Invokeにより使用するこ…
概要 C#でファイル、プリンター、ボリュームのプロパティダイアログを開く方法にはSHFileOperationEx関数、IShellFolderインターフェイスとIContextMenuインターフェイス等がありますが、SHObjectProperties関数を使用することでより簡単に実現することがで…
概要 文字列型の引数を伴うプラットフォーム呼び出し(P/Invoke)を実行するとき、引数の型によりマーシャリング動作が変わります。具体的にはC#側がstring/StringBuilder/byte型、プラットフォーム側(C/C++側)がLPWSTR/LPSTR(UnmanagedType.LPWStr/LPStr…
概要 ANSI文字列(ここでは純粋なASCIIエンコーディングの文字列ではなくシステム上でANSI版として扱われる文字列。日本語ではShift-JISエンコーディングの文字列)を格納したバイト配列byte[]をstring型へ変換する場合等、ANSI文字列を扱う場合はエンコーデ…
追記20240903 現行のC# 12では$"""..."""形式で複数行の文字列補間を使用できます。このリテラル?はFormattableString型のオブジェクトとして使いまわせるので、静的関数の実装も不要です。 各種エンコーディング(ASCIIエンコーディング、Unicodeエンコー…