2021-01-01から1年間の記事一覧
リストビューの内容をCSVへ出力するサンプルコードです。リストビューのColumnsやItemsは特殊なコレクションクラスなのでLINQを適用できませんが、Cast<T>で対応するクラスのIEnumerable<T>へ変換すればLINQを適用できます。クラスなので参照コピーで済むと思いま</t></t>…
2000年以降のYYMMDD形式の文字列を日付型(Date)に変換するサンプルコードです。 function dateFrom20YYMMDD(s) { if (typeof s != "string") return undefined; const m = s.match(/^(\d\d)(\d\d)(\d\d)$/) if (m == null) return undefined; const Y = pa…
JavaScriptで文字列の正規表現のマッチ結果をクラスで保持するサンプルコードです。正規表現のマッチ結果に限らず、文字列の処理結果を保持する方法の骨組みとして使えます。 クラスで正規表現のマッチ結果だけ保持する場合 クラスで正規表現のマッチ結果を…
ディレクトリ内のファイル名をJSONへ出力するサンプルコードです。pathlib、jsonを使用しています。 すべてのファイルを列挙する import json from pathlib import Path # ファイル名を取得するディレクトリのパス dir_path = Path(r"C:\Windows") # 作成す…
C# 9 システムフォルダに存在するOS DLLを取得するサンプルコードです。バージョン情報の製品名が「Microsoft® Windows® Operating System」のDLLをOS DLLとみなしています。 using System; using System.Diagnostics; using System.IO; using System.Linq; …
#include <format> #include <iostream> #include <string> #include <vector> #include <optional> #define STRICT #include <Windows.h> #include <powrprof.h> #pragma comment(lib, "powrprof.lib") namespace PowerUtil { std::vector<GUID> GetPowerSchemeGUIDs() { std::vector<GUID> guids; for (ULONG i = 0; ; ++…</guid></guid></powrprof.h></windows.h></optional></vector></string></iostream></format>
#include <iostream> #include <string> #include <vector> #include <optional> #define STRICT #include <Windows.h> #include <powrprof.h> #pragma comment(lib, "powrprof.lib") namespace PowerUtil { std::vector<GUID> GetPowerSchemeGUIDs() { std::vector<GUID> guids; for (ULONG i = 0; ; ++i) { GUID guid; DW…</guid></guid></powrprof.h></windows.h></optional></vector></string></iostream>
Windows Vista以降で画面の明るさを取得・設定するサンプルコードです。 画面の明るさの範囲と設定値を取得する。 画面の明るさを設定する。 現在の画面プロファイルの概要・名前を取得する。 画面の明るさの範囲と設定値を取得する。 #include <iostream> #include <string> #</string></iostream>…
プライマリモニターのハンドルを取得して、その物理モニター情報を列挙するサンプルコードです。 #include <format> #include <iostream> #include <string_view> #include <span> #include <vector> #define STRICT #include <Windows.h> #include <physicalmonitorenumerationapi.h> #pragma comment(lib, "dxva2.lib") inline HMONITOR GetPrimaryMon</physicalmonitorenumerationapi.h></windows.h></vector></span></string_view></iostream></format>…
ACPIテーブルIDを整数・文字列として列挙する。 #include <format> #include <iostream> #include <vector> #define STRICT #define NOMINMAX #include <Windows.h> namespace SysInfoUtil { std::vector<DWORD> EnumSystemACPITableIDs() noexcept { auto buffer_size = ::EnumSystemFirmwareTables('ACP</dword></windows.h></vector></iostream></format>…
システムメニューを表示するサンプルコードです。 #nullable enable using System; using System.Drawing; using System.Runtime.InteropServices; using System.Windows.Forms; static class Program { [STAThread] static void Main() { Application.SetHi…
ウィンドウのクライアント領域のボタン降下でウィンドウを移動させるサンプルコードです。ウィンドウはシステムに対してカーソルの位置を自身のWM_NCHITTESTメッセージで指定できることを利用します。 #nullable enable using System; using System.Drawing;…
Firefox(厳格モード、uBlock Origin導入)でCookieブロックをオフにしてもはてなブログに「サードパーティーのcookieが無効になっています」が表示されました。ブログのドメインとhttps://blog.hatena.ne.jpを例外指定して色々と弄ったところ、原因はDuckDu…
リストビューに大量のアイテムをListView.Items.Addメソッドで追加していたら律速になっていました。仮想リストビューも一つの手ですが、項目が多い場合はListView.Items.AddRangeで高速化できる場合があります。 listView1.BeginUpdate(); // infosという配…
プロセスの昇格タイプを確認するサンプルコードです。カレントプロセスの昇格タイプがTOKEN_ELEVATION_TYPE::TokenElevationTypeFullか確かめることで管理者権限を確認できます。 #include <optional> #define STRICT #define NOMINMAX #include <Windows.h> std::optional<TOKEN_ELEVATION_TYPE> GetPro</token_elevation_type></windows.h></optional>…
Iterable(反復可能オブジェクト)の正規表現と一致する部分を数えるサンプルコードです。collections標準ライブラリのCounterクラスを使用しています。 import re from collections import Counter values = ("ab1111", "ab1112", "ac2111", "ac2112", "ad2…
反復可能オブジェクト(Iterable)から正規表現の一致部分が重複しない要素を1つずつ抜き出すサンプルコードです。辞書型dictがキーと値のタプルで初期化でき、キーの重複する値を自動で上書きすることを利用しています。 import re #元から重複しないので…
std::spanのMicrosoft Visual Studio Community 2019 Preview Version 16.11.0 Preview 3.0の現時点の最新環境における動作確認結果です。 std::span<T>をイテレーター(begin、end)で初期化するとき、参照範囲は不正な要素を参照しないように丸められます。例</t>…
PEファイル(Windowsの主なEXE、DLLファイル)のインポート情報を列挙するクラスのコードです。std::spanを多用していますが、所々に不正なメモリを読み込むバグの余地は残っていると思います。正常なPEファイルを確認する分には特に問題ありません。 修正履…
スレッドまたはプロセスのトークンのユーザー情報SIDから文字列表記・ユーザー名・参照ドメイン名を取得するコードです。Win32 API関数のラッパー関数・クラスを定義していますが、サンプルコードなので名前空間で囲ったりはしていません。 #include <bit> #inclu</bit>…
.NET 5ではSystem.Text.Unicode名前空間にUnicodeRangeクラス、UnicodeRangesクラスがあります。UnicodeRangeクラスはUnicode範囲の開始コードポイントと長さ、UnicodeRangesクラスは静的プロパティとして名前付きのUnicodeRangeクラスを多数公開しています…
Windows 10 バージョン 1903以降、最新のSDKではicu.h、icu.lib、icu.dllからICU4Cを使用できます。ICU4Cを使えばUnicode関係の詳細な処理が可能です。ここでは動作確認用のコードを公開します。 参考 この投稿を書く際に参照したページです。 International…
できごと:いつの間にかVisual Studio 2019 PreviewでC#プロジェクトが作れるのに開けなくなった。dotnetコマンドでもSDKやランタイムが表示されなかった。 解決方法:Program Files\dotnetフォルダとProgram Files\dotnet\sdksの存在を確認した後、Program …
tidyverseパッケージの後でmagrittrパッケージを読み込むとextract関数が上書きされます。magrittr::extract関数の仕様により、magrittrなしのつもりで呼び出してもエラーを発生しないのでかなり気づきにくいバグが生まれます。conflictedパッケージを使うか…
tidyverseのtibbleの行を整数範囲で伸ばす方法です。seq関数で作成した適当な整数範囲をtibbleにして、full_join関数で結合することで行を伸ばしています。full_joinの左側に整数範囲のtibbleを指定すれば順番が指定されるので、ついでに昇順並び替えと欠損…
Ver系関数を使ってPEファイルのバージョン情報を取得するサンプルコードです。ひっそりとstd::format(実質fmt)を使用しています。 #include <format> #include <string> #include <span> #include <unordered_map> #include <vector> #define STRICT #define NOMINMAX #include <Windows.h> #pragma comment(lib, "v</windows.h></vector></unordered_map></span></string></format>…
ベクトルから開始位置をずらした等長のベクトルを作成して関数を呼び出すコードです。dplyr (tidyverse)を使用しています。 require(dplyr) # ベクトルのstart個めとそこからdiff個ずらした2個の配列のデータフレームを返します。 vec_shifted_tibble <- fun…
本文 formula()で引数の既定値(省略時の値)を取得・設定できます。 # リスト形式で取得される。 str(formals(paste)) # Dotted pair list of 4 # $ ... : symbol # $ sep : chr " " # $ collapse: NULL # $ recycle0: logi FALSE # <-で代入すると設定でき…
以下のコードの(☆)が不正なメモリアクセス(アドレス0の操作)で確実に失敗します。原因は不明です。 先に実行しているIDeskBand::GetWindowはE_FAILを返すので、こちらで判別は可能かもしれません。 #define STRICT #define NOMINMAX #define WIN32_LEAN_AN…
実行に必要なstrings64 (Sysinternals)はMicrosoftからダウンロードできます。 7文字以上のANSI/Unicode文字列を抜き出す。 SET STRINGS64_PATH="<string64のインストールディレクトリ>\strings64" %STRINGS64_PATH% -a -u -nobanner %windir%\system32\shell32.dll | findstr ".......*"</string64のインストールディレクトリ>