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

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

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>…

C++&STLで特殊フォルダの動作を取得するサンプルコード

Windows環境、C++でSTLを使用して特殊フォルダの動作一覧を取得するサンプルコードです。サンプルコードではごみ箱の動作を取得します。開発環境はWindows10、Microsoft Visual Studio Community 2019 (Version 16.0.2)、MSVC v142、Windows 10 SDK (10.0.17…

IShellFolder::GetUIObjectOfメソッドで取得できるオブジェクト

Microsoft Docsに記載されているGetUIObjectOfメソッドで取得できるインターフェイスと指定できるLPITEMIDLISTの数(cidlの値)は以下の通りです。 インターフェイス cidlの値 概要 IContextMenu 1以上 コンテキストメニュー(ファイルの右クリックメニュー…

C++&STLでごみ箱の最初の項目を元の場所に戻すサンプルコード

Windows環境、C++でSTLを使用してごみ箱の最初の項目を元の場所に戻すサンプルコードです。実行すると確認なしで最初の項目が元の場所に戻されることに注意してください。開発環境はWindows10、Microsoft Visual Studio Community 2019 (Version 16.0.2)、MS…

C++でごみ箱の最初の項目の動作一覧を取得するサンプルコード

Windows環境、C++でごみ箱の最初の項目のコンテキストメニューで実行できる動作一覧を取得するサンプルコードです。開発環境はWindows10、Microsoft Visual Studio Community 2019 (Version 16.0.2)、MSVC v142、Windows 10 SDK (10.0.17763.0)です。Windows…

C++でごみ箱の項目の元の場所を取得する方法

Windows 10、C++でごみ箱の項目の元の場所を取得するにはIShellFolderインターフェイスのGetDisplayNameOfメソッドを利用することができます。具体的にはGetDisplayNameOfメソッドに与えるフラグにより次の値を得ることができます。例はごみ箱に「C:\新しい…

C++でごみ箱の最初の項目の名前を取得するサンプルコード

Windows環境、C++でごみ箱の最初の項目の名前を取得するサンプルコードです。開発環境はWindows10、Microsoft Visual Studio Community 2019 (Version 16.0.2)、MSVC v142、Windows 10 SDK (10.0.17763.0)です。Windows デスクトップ ウィザードで空のアプリ…

CPUID(インラインアセンブリ)の覚書

はじめに アセンブリの命令コードCPUIDを使用することでCPUの基本情報を取得することができます。Microsoft Visual C++ではインラインアセンブリ(__asmステートメント)(32ビット環境限定)あるいはintrin.hの__cpuid関数(32ビットおよび64ビット)を使用…

Microsoft ExcelとCSV(タブ区切り)

概要 あるバージョンのMicrosoft ExcelでUTF16エンコードのCSVファイルを読み込むときはタブ区切りにする。カンマ区切りはカンマが区切りと認識されない。 経緯と解決策 あるバージョンのMicrosoft ExcelでUTF16形式のCSVを読み込むとき、二重引用符で囲って…

C# LINQ to Objectsのインデックス付きメソッド

C# LINQのコレクション、ファイル、文字列などに関するインデックス付きメソッドの覚え書きです。System.LINQ.Enumerable Classで、2番目以降の引数にFunc<TSource,Int32,...>が含まれるものはインデックス付き形式に対応しています。具体的には以下のメソッドが挙げられます。</tsource,int32,...>…

C#で実行ファイルの会社名にMicrosoftを含むレジストリに登録されたCOMクラスを選択する方法

C#、Windows 10でレジストリに登録されたCOMクラスから実行ファイルの会社名にMicrosoftを含むものを選択するソースコードです。 概要 ソースコード 出力例(抜粋) 補足説明 COMクラスの登録場所 レジストリとWOW64 名前付きタプル インデックス付きSelect …

Python3とmatplotlibでグラフを描画する基本

Python3とmatplotlibでグラフを描画する基本のメモです。グラフを表示するにはmatplotlibを使えば良いことだけ分かれば、あとは検索して何とかなると考えています。 y=2xを描画する 標準正規分布の確率密度分布を描画する 日本語の軸を追加して複数の設定を…

Rによる水素の線スペクトルの計算

R

水素の線スペクトルを計算するRのソースコードです。 R <- 1.097*10^7 #水素のリュードベリ定数R_H #水素原子の線スペクトル(波長λ) #hydrogen spectral series lambda <- function(m, n) {(m^2*n^2)/(R*(n^2-m^2))} #m

Python 3基礎事項の覚え書き

文字列の一部を取り出す スライスを使います。 s = "abcde" #先頭の文字 s[1] s[1:] #末尾の文字 s[-1] s[-1:] #先頭からn文字目 s[n] s[n:] #末尾からn文字目 s[-n] s[-n:] #先頭n番目からm文字 #末尾n番目からm文字 文字列配列から末尾が特定文字の要素を…

収束する数列の極限値のε-N論法のTeXコード

lim表記 ε-N論法による表記 太字、Nのε依存を無視 黒板太字、Nのε依存を無視 太字、Nのε依存を強調 黒板太字、Nのε依存を強調 参考 収束する数列の極限値のε-N論法のTeXコードです。 lim表記 \displaystyle\lim_{n\to\infty}a_n=\alpha ε-N論法による表記 太…

Visual C++ 2017でATLを利用してWord.Applicationのインスタンスを作成する方法

概要 Visual C++ 2017でATLを利用してWord.Applicationのインスタンスを作成する方法のサンプルコードです。この例では作成したインスタンスからWordのバージョンを取得します。 ソースコード #define STRICT #include <Windows.h> #include <atlbase.h> using namespace::ATL; voi</atlbase.h></windows.h>…

Visual C++ 2017でATLを利用してScripting.FileSystemObjectのインスタンスを作成する方法

概要 Visual C++ 2017でATLを利用してScripting.FileSystemObjectのインスタンスを作成する方法のサンプルコードです。この例では作成したインスタンスから現在のフォルダの名前を取得します。 ソースコード #define STRICT #include <Windows.h> #include <atlbase.h> using names</atlbase.h></windows.h>…

特定機能を提供するCOMクラスの登録情報をGoogle検索とレジストリ エディターから特定する方法

背景と目的 Windowsの機能をWSH、C#、VBなどから使用するとき、Windowsの提供するCOMクラスの利用が便利な場合があります。COMクラスの呼び出しにはCLSIDまたはCOMクラス識別名が必要になりますが、MSDNからこれらが検索しにくい場合があります。この文章で…

Pythonでウィンドウハンドルを列挙する

はじめに PythonからctypesパッケージでWin32 APIを呼び出してトップレベルウィンドウのハンドルとタイトルを列挙するサンプルです。素人なので不束かな点も多いと思います。また、使用していない関数は実装のみでテストを行っていません。 ソースコード win…

(作りかけ)Python3からQiita API v2を使う

はじめに Qiita API v2が発表されたことを知ったので、Pyhton3からも使ってみたいなとコードを書いてみました(あと、自分の勉強用に)。URLが違うだけでやっていることはv1時代と変わらないと思うので、ちょこちょこ追加していければいいなと思います。 簡…

[覚書]Androidでインストールされたパッケージ&アプリケーションを列挙する

パッケージマネージャーをからインストールされたパッケージと関連するアプリケーションの一覧を取得して、アクティビティに貼り付けたリストビューに二段表示するサンプルコードです。とてもシンプルです。 開発環境:Eclipse 4.4 Luna Pleiades All in One…

PythonでとあるモデルサイトのHTMLを解析してCSVで出力してみる

言い訳 各種インストール 実際のコード 言い訳 例えばR界隈で有名だった(?)おっぱい方程式(おっぱい断面方程式、おっぱい曲面方程式)のように人はよく分からないことに全力を尽くしてしまうことがあります。これもその1つであって――すみません、XPath…