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

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

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

SlideShareの各カテゴリ日本語全期間ページリンク集

カテゴリ等 URL Most Popular https://www.slideshare.net/popular/language/ja/all-time Art & Photos https://www.slideshare.net/popular/language/ja/category/art-photos/all-time Automotive https://www.slideshare.net/popular/language/ja/category…

SlideShareで日本語のスライドを探すときの注意点

概要 SlideShareで日本語のスライドを探すには適当なカテゴリ等のmore filtersでJapanese、AllTimeを設定する。 AllTimeを設定しないとTodayが既定値となるため、日本語スライドはほぼ表示されない。 本文 SlideShareで日本語のスライドを探そうとして、検索…

XPathとCSS Selectorの各ブラウザ対応

概要 現時点の主要ブラウザはXPath 2.0以降非対応 CSS SelectorはLevel 3まで対応 本文 Windows版のGoogle Chrome 75でXPath 3.1を試してみようと色々とコードを書いてみたのですが、upper-case関数を何度試してもエラーになりました。どうやら現時点でXPath…

C# AngleSharp 0.12.1でHTML要素を追加する

C#

C#のAngleSharpでは、素直にノードのInnerHtmlプロパティへ直接代入(=)または追加(+=)することで要素に子要素を追加できます。例えば、適当なHTMLドキュメントを作成してそのBODY要素にHTML要素を追加するには以下のようにします。 // AngleSharpのusing…

Microsoft Visual Studio 2019 Community付属のSpy++

Microsoft Visual Studio 2019 Communityに付属している便利なソフトウェアSpy++の概要等。 Spy++の概要 ウィンドウをツリーやファインダーで検索して各種情報(親子関係、ハンドル、ウィンドウタイトル、クラス名、その他諸々)を確認できる便利なソフトウ…

VBA7用の64ビット環境対応Win32API Declareステートメント一覧

VBA

VBA7で使用できる64ビット環境対応のWin32API Declareステートメント一覧が以下からダウンロード可能です。 www.microsoft.com 配布形式はインストーラーで、展開後にフォルダ内の「Win32API_PtrSafe.TXT」を開くことで大量のコードが利用可能です。自分の環…

VBAにおける64ビット対応

VBA

概要 ExcelやWord等のMicrosoft Officeで使用されるVBAの64ビット対応の概要。詳細は以下の公式ドキュメントをご覧ください。 docs.microsoft.com 内容 VBAの64ビット対応はVBA7から導入されており、3つの重要な追加機能、条件付きコンパイル定数、型変換関…

C++&ATLでフォルダのファイル名に使えない文字を取得する

概要 Windows 10でC++&ATLでフォルダのファイル名に使えない文字を取得するには次の手順を踏みます。具体的なサンプルコード等は後に示します。 COMを初期化する。 デスクトップのIShellFolderインターフェイスを取得する。 ファイル名に使えない文字を取得…

C++&ATLでフォルダのファイル名の最大長を取得する

概要 Windows 10でC++&ATLでフォルダのファイル名の最大長を取得するには次の手順を踏みます。具体的なサンプルコード等は後に示します。 COMを初期化する。 デスクトップのIShellFolderインターフェイスを取得する。 ファイル名の最大長を取得したいフォル…

C#のUnsafeクラス

C#

MicrosoftはNuGetを通してUnsafeクラスを公開しています。これを利用することで/unsafeオプションを使用せずに変数をポインタとして扱うことができるようになります。バイト配列を構造体として参照するあるいはその逆も可能なため、素直にバイト配列として取…

VBAのPtrSafe/LongPtr

VBAにも64ビット対応の波が押し寄せていたらしく、DeclareステートメントにPtrSafe属性、データ型にLongPtr型が追加されていました。PtrSafeの無いDeclareステートメントの呼び出しは64ビット環境ではエラーとなり、LongPtr型はC/C++のポインタ(void*等)同…

ATLのCAtlArray<CComPtr<...>>の動作確認

ATLのCAtlArray<CComPtr<...>>クラスの動作確認用サンプルコードです。CAtlArrayクラスは自身のデストラクタで要素のデストラクタを呼び出すかどうかを確認するために作成しました。結論として、CAtlArray<CComPtr<...>>クラスは自力で個々の要素を解放することなくデストラクタを呼び</ccomptr<...></ccomptr<...>…

IUnknownの実装例とATL CComPtr&CComQIPtrの動作確認

IUnknownを自前で実装する方法とATLメモリ管理クラスであるCComPtrクラスおよびCComQIPtrクラスの動作確認を兼ねたサンプルコードです。 main関数内部のコメントは主にOutputDebugStringで出力される内容です。 IUnknownインターフェイスではなくIClassFacto…

VC2019のWinMain関数(wWinMain関数、_tWinMain関数)

VC2019のWinMain関数(wWinMain関数、_tWinMain関数)はプログラムの起動時に最初に呼び出される関数ではありません。実際にはCRTの用意したWinMainCRTStartup関数が呼び出され、コンストラクタ/デストラクタの呼び出し、標準関数やデバッグ情報の初期化/…

ATLのクラスでCOMのインターフェイス及びポインタ管理を簡略化する方法

ATLのクラスを利用することでCOMのインターフェイス及びポインタ管理を簡略化することができます。具体的には以下が利用可能です。 目的 ATLクラス IUnknown継承インターフェイスのポインタ管理 ATL::CComPtr、ATL::CComQIPtr CoTaskMemFree関数で解放するメ…

C++でATLを使用してデスクトップの最初のオブジェクトの表示名を取得する

ATLを使用してデスクトップの最初のオブジェクトの表示名を取得するサンプルコードです。 開発環境:Windows 10、Microsoft Visual Studio 2019、C++17 #define STRICT #include <Windows.h> #include <ShlObj.h> #include <atlbase.h> #include <atlcom.h> HRESULT CreateFirstObjectItemFromShellFold</atlcom.h></atlbase.h></shlobj.h></windows.h>…