カタバミさんのプログラミングノート

日曜プログラマーがプログラミング関係のメモを記録するブログです。

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

C#でWin32 API TaskDialog関数を呼び出すサンプルコード

C#でTaskDialogを表示するにはWin32 APIのTaskDialog関数(comctl32.dll)を呼び出すサンプルコードです。適当なC#のWindows フォーム アプリケーション (.NET Framework) プロジェクトのForm1にボタン(Button1)を作成して、Clickイベントの名前を合わせて…

「Windowsの標準コントロール」と「C#の標準コントロール」

本文 前回の記事で平然と(Windows 10の)「標準コントロール」「コモンコントロール」と「C#の標準コントロール」という言葉を使ってしまったのですが、冷静に振り返ればこれらの言葉遣いは正しかったのかなと。多分に想像ですが、以下がその回答に近いかな…

C#でIEnumStringインターフェイスを実装する

C#でIEnumStringインターフェイスを実装するには、System.Runtime.InteropServices.COMTypes名前空間で定義されたC#のIEnumStringインターフェイスが利用できます。このインターフェイスを継承したクラスを実装することでCOMのIEnumStringインターフェイスを…

IShellItem.BindToHandler関数のBHID_StorageEnumとBHID_EnumItemsの違い

IShellItem.BindToHandler関数の引数にBHID_StorageEnumとBHID_EnumItemsを指定した場合、以下の点が異なります。 BHID 概要 BHID_StorageEnum 作成されたIEnumShellItemsはファイルシステムオブジェクトのみ列挙する。 BHID_EnumItems 作成されたIEnumShell…

WindowsのCOM関係レジストリキーの場所

WindowsのCOM関係のレジストリキーは次の場所に存在します。 ProgID、CLSID、Interfaceキー等 基本情報 DebugObjectRPCEnabledキー ノート 参考 ProgID、CLSID、Interfaceキー等 HKEY_LOCAL_MACHINE\Software\Classes HKEY_CURRENT_USER\Software\Classes HK…

HKEY_LOCAL_MACHINE、HKEY_CURRENT_USER、HKEY_CLASSES_ROOT

本文 HKEY_LOCAL_MACHINE、HKEY_CURRENT_USER、HKEY_CLASSES_ROOTは何れもレジストリのルートキーとして扱われる定義済みキー(Predefined Keys)ですが、その内容はログインするユーザーにより異なります。HKEY_LOCAL_MACHINEはどのユーザーでログインして…

JavaScriptのevent.targetとevent.currentTargetの違い

event.targetとevent.currentTargetの値は一般的に異なります。例えば以下のサンプルコードを実行すると次の表が得られます。ボタン2と3はどちらもA要素の子要素です。 クリックした場所 event.target event.currentTarget ボタン1 ボタン1 ボタン1 ボタン2 …

Vue.jsのmethodsやcomputedにおける関数式の種類とthis

Vue.jsのcomputedでアロー関数*1を使ってthisで混乱したので覚え書きとして。結論は以下の通りです。 Vue.jsのmethodsやcomputedでは匿名関数*2を使った方が素直 アロー関数におけるthisの挙動は仕様 thisの仕様については詳細に調べていませんが、サンプル…

C#用IShellFolderのファイル名(表示名)変更に必要な関数のラッパーを提供するクラスと拡張メソッドファイル

概要とコード サンプルコード 概要とコード 動作確認環境:Windows 10 64ビット、Microsoft Visual Studio 2019、C# 7.3 Win32 API IShellFolderインターフェイスのファイル名(表示名)変更に必要な関数のラッパーを提供するクラスと拡張メソッドファイルの…

Win32 API CIDA構造体のラッパークラス

特殊ファイル・フォルダのドロップ受け入れで使用することを目的としたWin32 API CIDA構造体のラッパークラスです。unsafeの使用を避けるためにGCHandleを使用しており、プロジェクトの設定変更が不用な代わりにGCHandleによるコストが発生します。 動作確認…

C# Win32 API STRRET構造体のラッパー構造体

C#でWin32 APIのSTRRET構造体を扱うためのラッパー構造体です。継承や内部データの操作は考慮しておらず、string型(文字列)への変換とメモリ解放処理のみ提供しています。 動作確認環境:Windows 10 64ビット、Microsoft Visual Studio 2019、C# 7.3

C#であるAndroid端末のファイルのドロップ処理を実装する場合の注意

動作確認環境:Windows 10 64ビット、Microsoft Visual Studio 2019、C# 7.3 本文 FileDropフォーマットが存在しないことに対する対処 DragOverイベントハンドラにおけるData.Effect設定の注意 参考 本文 あるAndroid機種はメーカーの公開するドライバをイン…