目次
■画面作成(WPF/xaml)
スタイル/Template(Style/Template)
考え方と基本的な使い方
実際に使ってみる
styleでアニメーションを動かす(Storyboard)
- [C#/WPF] Storyboardの動かし方(Startのさせ方) あれこれ
- Storyboardでアニメーションをつくる
- Storyboardでアニメーションをつくる2(TargetPropertyの階層的な指定)
- xaml+C#で当番決めのためのルーレットを作る(アニメのstart/stopをコードからやる)
style/Templateの便利な使い方
- Templateで見た目を変えつつStyleとTriggerでMouseOver等のときの色を変える
- BasedOnを使って元のstyleを受け継ぐ
- EventTriggerを使って、Buttonでなくてもクリック時のCommandをかけるようにする
- DataTriggerを使って、ViewModelのフラグ等にバインドして、見た目を変化させる
- ControlTemplateの中にViewModelのプロパティをバインドする
リソースディクショナリ(ResourceDictionary)
ユーザーコントロール(UserControl)
- 簡単なユーザーコントロール(WPF)の作り方
- ユーザーコントロールのひな型
- 自作ユーザーコントロールにバインディングするプロパティのMode(OneWay/OneWayToSource/TwoWay)によって、値変化時の動作がどう変わるか実験
- ユーザーコントロールのプロパティの値の妥当性検証と値の矯正のやり方(と、躓いた箇所とその回避策)
oxyplot
ルーティングイベント関連
- Buttonをマウスクリック/タッチしたときのイベントの流れ(親子関係なし)
- Buttonをマウスクリック/タッチしたときのイベントの流れ(親子関係あり)
- Gridをマウスクリック/タッチしたときのイベントの流れ(親子関係あり)
- コントロールをマウスクリック/タッチしたときのイベントの流れを今一度確認②
- 重ねたGridの上を押しながら移動(マウスでドラッグ、タッチでスライド)したときのイベントの流れ(IsManipulationEnabledをON/OFF切り替えて実験)
- Windowクラスのイベント全部、発生時にログ取ってみる
- ルーティングイベント関連参考サイト集
Prism関連
- Prism(6.3.0)のRegionで画面遷移をする
- prism.unity(6.3.0)を試したまとめ(RegisterTypeとRegisterInstanceの違いなど)
- prism.unity(6.3.0)の簡単な実装サンプル②(登録~依存性注入まで)(RegisterType使用)
- prism.unity(6.3.0)の簡単な実装サンプル①(登録~依存性注入まで)(RegisterInstance使用)
- Prism(6.3.0)のKeepAliveをfalseにすることとIsNavigationTargetでfalseを返すことの違いの実験
ListView
- ListViewのGrid表示を使う
- ListViewをグループ表示する(xamlで書く)
- ListViewをグループ表示/ソート表示する(C#コードで書く)
- ListViewの行の背景色を、データの中身によって変える
- ListViewのGrid表示のセルの中身をカスタムする
- ListViewのヘッダの中身をカスタムしたい
- ListViewの見た目(背景色とか、マウスオーバー時の色とか)をまるっと変えたい
WPF/xaml一般
- ワーカースレッドのコードに、UI部品を更新するコードを書く
- ディスプレイのON/OFFを取得する
- ウインドウメッセージハンドラをフックする
- WPF+.NetFrameworkでアクションセンター内のトーストを押したときにアプリを起動する
- コンバーター(Converter)の書き方
- ノートPCのバッテリーの充電状況を取得する
- もうとにかく今すぐデバッグのためのログを出力したいときのクラス/メソッド
- NLogでログをとる
- 自分以外のウインドウを最前面にもってくる
- ユーザーがログイン/ログアウト、PCをシャットダウン等したときになにかしたい
- プライマリディスプレイ(1番の画面)の全体の大きさ/作業領域の大きさを取得する
- プライマリディスプレイのサイズの取り方いろいろ(SystemParameters/Screen)
- 上にかぶせたTextBlockを通り抜けて下のボタンがClickイベントを取れるようにする(IsHitTestVisible)
- Pathで描いた図形サンプル集(ひし形、角を丸くした四角、楕円など)
- 【うまく動かせず断念】.NET core 3.0のWPFでUWPコントロールを使う
- Segoe MDL2 FontFamilyを使って、いいね!っぽいボタンをつくる
- ビューモデルからビューのメソッドを呼ぶ代わりに、EventTriggerでMouseDown等のイベントを拾ってビューのメソッドを呼ぶ
- ビューモデルからビューのメソッドを呼ぶ
- Setting.settingを使用して、簡易的にアプリの設定値を保存/読出しする
- Propertiesでxamlの画面を多言語対応(ローカライズ)する&現在の言語と地域のコードを取得する
- Propertiesでxamlの画面を多言語対応(ローカライズ)する(.NET6版)
- ResourceDictionaryでxamlの画面を多言語対応(ローカライズ)する
- UIの現在の表示言語設定をコードから変更する
- xamlで定数を使う
- コントロールの大きさや位置を、C#コードから変化させる(RenderTransform)
- 画面の要素を回転/拡大縮小/移動する(RenderTransform)
- 画面の要素を回転/拡大縮小/移動する(RenderTransformにMatrixTransform)
- フリックやピンチインアウトでControlを移動・拡大縮小する(ManipulationDeltaイベントとMatrixTransform)
- マルチバインディングで複数プロパティを繋げて、一つのTextBlockに表示する
- スライダのツマミをスライドしたときに設定できる値をとびとびの値(0,50,100,150,・・・等)にしたい
- wpfで、×ボタンをなくしたウインドウを作る(WindowChrome)
- ListBoxのアイテムに、バインドしたコレクションのインデックスを出す
- ItemsControlで、複数のControlを重ねて表示する
- RelativeSource(バインディング)の使い方メモ
- ボタン押したときに時間がかかる処理をawaitでやるときに、ボタン連打を防止したい
- ボタン押したときに時間がかかる処理をawaitでやるときに、ボタン連打を防止したい その2
- System.Windows.Pointのリストを使って線を引く
- Grid.Clipで表示領域を制限する(好きな形に切り抜く)
- Binding復習①
{Binding Path=.}
でDataContextそのものにバインドする - Binding復習② リストで今選択している項目を
{Binding Path=/}
で取得する - あるView/ViewModelから、別のView/ViewModelのメソッドを呼びたいとき
- WPF画面とやり取りするための最低限の構成
- WPF画面とやり取りするための最低限の構成(.NET6版)
- .net5でSystem.Windows.Formsを使いたい
- クラスライブラリのプロジェクトにWPFのウインドウを追加する
WinUI3
画面作成
- UWP用のデザインツール Fluent XAML Theme Editor を使ってWinUI3アプリのテーマ色を設定する
- NavigationViewを使う
- NavigationViewを使う2(画面遷移時にPageのインスタンスを使いまわす)
- 起動時にNavigationViewItemを選択しておく/コードから選択を解除する
- 左クリックでFlyoutを表示できるToggleボタンを作る
- 左クリックでFlyoutを表示できるToggleボタンを作る その2
- WinUI3で最小ウインドウサイズを指定する
- WinUI3のウインドウの最大化ボタン無効化や、ウインドウサイズ変更をしたい
- WinUI3のウインドウのタイトルバーを自由にカスタムしたい
- WinUI3アプリのウインドウのタイトルバーを消す
- タイトルバーで右クリックして出てくるコンテキストメニューから一部項目を消す
- WinUI3アプリのウインドウの大きさや位置が変化したイベントと、変化したときの大きさや位置の値を取りたい
- WinUI3アプリのウインドウを、dpiの大きなモニタに移動すると、中のUI部品は大きくなるのに、ウインドウの大きさはそのままになる
- WinUI3アプリを高DPI(>100%)でappWindow.MoveAndResize()する
- WinUI3アプリから、別のDLLに置いてあるResourceDictionaryを使う
- WinUI3でウインドウプロシージャをフックする(最大/最小ウインドウサイズの指定にも使える)
- ワーカースレッドのコードに、UI部品を更新するコードを書く
- コードからバインディングを設定する
- 同じスレッドの別ウインドウを開く
- WinUI3の背景アクリルの色調整をする
- テキスト中に出てくるリンクをつくりたい1(没)
- テキスト中に出てくるリンクをつくりたい2
- WinUI3で表を使うために、CommunityToolkit.WinUI.UI.Controls の DataGridを試す
画面作成(色のカスタマイズ(マウスオーバー時、押下時、無効時の色 / テーマごとの色))
- WinUI3のコントロールの標準style(generic.xaml)のありか
- コントロールのマウスオーバー時等の色を変えたい
- generic.xamlにあるリソースの値を上書きしたときに、いうことを聞くヤツと聞かないヤツがいる(StaticResourceとThemeResourceの違い)
- WinUI3ではStyle.Triggersがないので代替手段でマウスオーバー時の背景色変更する
- WinUI3でテーマカラー(ダーク/ライト/ハイコントラスト)対応する-マウスオーバー時の色変更も込み
- アプリ自身で自分のテーマ(ダーク/ライト)を変更する
- ResourceDictionaryから他のResourceDictionaryのリソースを使うとき
- generic.xamlにないデフォルトテンプレートのありか(RadioMenuFlyoutItemの場合)
- ライト/ダーク/ハイコントラストの変化時イベントはWinUI3で取れるか?
画面作成 カスタムコントロール(CustomControl)
ViewModelの意味とは...
- WindowsのGUIアプリ開発で、ViewModelがやるべきことが何なのか未だ全然わからないので、考えてみる(2023年7月版)
- WindowsのGUIアプリ開発で、ViewModelがやるべきことが何なのか未だ全然わからないので、考えてみる(2023年7月版)その2【作成途中】
一般
- WinUI3プロジェクトをビルドしたexeを直叩きで起動する
- VS2022でWinUI3アプリを実装中に、すべてのNugetキャッシュをクリアをすると、ビルド時にエラーが出だした
- WinUI3でSelfContained=trueでビルドすると出るエラー対処
- WinUI3でSelfContained=trueでビルドすると出るエラー対処 その2
- WinUI3でSelfContained=trueでビルドすると出るエラー対処 その3
- Resource.reswでローカライズした文言データの出力先の.priを、MakePri,exe dumpで見る
- インストールしたパッケージの中のexeがスタートアップで起動するようにする
- インストールしたパッケージの中のexeをAliasでほかのプログラムから呼べるようにする
- WinUI3アプリをローカライズする(Resource.resw使用)
- WinUI3アプリをローカライズする(ResourceDictionary使用)
- 画像ファイルのローカライズ(言語により勝手に画像を切り替えてもらう)(ms-appx:)
- WinUI3プロジェクトに持っている言語リソースと、appmanifestの中の言語リソース設定、OSの表示言語設定の関係の実験
- WinUI3/WPFプロジェクトに持っている言語リソースと、OSの表示言語設定、表示言語優先順位の関係のまとめ
- Source="ms-appx:///Images/myimage.bmp"みたいな書き方で画像を表示する方法の説明・参考
- WinUI3アプリでResource.reswに登録したリソースをC#コードから使う
- 現在の言語の設定にかかわらず、指定した言語のリソースを取ってくる
- WinUI3で、OSの言語設定を変更せずに、コードから使う言語を変更する
- ResourceDictionaryの中のリソースを、コードから使いたい
- パッケージしたアプリの「ローカルフォルダ」にアプリの設定データを保存する
- 非パッケージのWinUI3アプリを、WindowsAppSDKが入っていないPCでも動くようにする
- いったんWindows App SDKをアンインストールしたい
- WinUI3のコントロールのnupkgを作って使ったときに出てくる「.xbfがない」エラーの対応
MAUI(.NET Multi-Platform App UI)
ReactiveProperty
■UWP/パッケージング
■VisualStudio
.NET5/6
- dotnet publishで、MSBuildのパラメータを指定してpublish(配置)する
- csprojに書く設定とdotnet publishに渡すパラメータの実験と比較
- csprojに条件式を書いて、nugetパッケージを参照したりしなかったりを切り替える
- deps.jsonファイルは何者か?消していいか?
一般
- VisualStudio2019で2017と同じ静的解析(コード分析)をしたい
- ビルドをバッチで行う
- bitsadminでnuget.exeをダウンロードする
- 「リンクとして追加」で、プロジェクト間で同じソースファイルを使う
- ソース上のコメントを英語で統一したいのに自動生成されるcsファイルが勝手に日本語コメントになるので英語に直す
- Debug/Releaseビルドで、参照するdllを変えたい
- 参照の追加について(出力フォルダに自動でコピーされるもの/されないもの)
- System.Windows.Interactivity は Microsoft.Xaml.Behaviors.Wpf に置き換え必要
- ソリューションの中にnugetしたライブラリを入れるpackageフォルダが作られる/作られない、の設定
- 自作例外発生時に、VisualStudioの例外設定を使って止めてもらう
- VisualStudio2022とOpenCoverでカバレッジを取る
- 出力フォルダの中に「net5.0-windows」フォルダができないようにする
- リモートのPCに、VisualStudioでビルドした成果物(.exeなど)をコピーする手間を省く
- ソリューションのVisualStudioテンプレートを作る
- ソリューションのテンプレートにTagを付ける
ダンプの採取とそのデバッグ
- ダンプファイルの取り方
VisualStudioを使ったダンプ解析
WinDBGを使ったダンプ解析
その他
■C#(.net)
json
- .NET標準のDataContractJsonSerializerクラスを使ってjsonを読み書きする
- DataContractJsonSerializerで読み書きするjsonデータのためのクラスを簡単につくる
- ジェネリクスでいろいろなjsonファイルの読み書きできるようにする
- jsonデータを保存するクラスをrecordで作る
WMI
- WMIで何かの値を取りたいときの、どこからとればいいかの調べ方
- WMIのクラスを全部取る・その中のプロパティ値もできるだけ取る
- WMIで、あるプロセスのCPU時間やメモリ使用量をとる
- WMIで、全プロセスのCPU時間やメモリ使用量をとる
- WMIで、WindowsPCにインストールされたドライバーのバージョンを取得する
タイマー
一般
- Bluetooth v4(BLE)機器と通信する(BLE基礎メモ)
- Bluetooth v4(BLE)機器と通信する(C#で実装メモ)
- WPFでBluetooth v4(BLE)機器とペアリングする
- データをAESで暗号化してファイルに保存する
- 正規表現で、ルールに一致した文字列かどうか調べる/一致した文字列を抜き出す
- StopWatchで処理にかかる時間を測る
- ファイルに文字列/バイナリデータを読み書きする
- UWPアプリでファイルを作成~テキストを読み書き~画像を読み込み
- WriteableBitmapで点を打って、テレビの放送終了後の砂嵐をつくる(Taskで処理)
- WriteableBitmapで点を打って、テレビの放送終了後の砂嵐をつくる(タイマーで処理)
- WriteableBitmapで点を打って、テレビの放送終了後の砂嵐をつくる(UWP版)
- Disposeとは?
- デストラクタとDisposeについて
- yield returnで、遅延評価されるコレクションを作る
- 拡張メソッドの作り方
- C#で作成したDLLをC#で呼ぶ(静的/動的)
- C#でjpgのExif情報を書き込む
- C#でjpgのExif情報を読み込む
- BitmapSource派生クラスの使い方
- BitmapSourceやその派生クラスから、System.Drawing.Bitmapに変換する(BmpBitmapEncoderクラス)
- System.Drawing.BitmapをBitmapSourceに変換する
- 画像に対していろいろ行う(System.Drawing.Bitmap版)
- 画像に対していろいろ行う(System.Windows.Imaging版)
- GeoTag(GPS情報)をjpgファイルに設定/取得する
- GeoTag(GPS情報)をjpgファイルに設定/取得するときのハマったメモ
- 実行中のプロセス自身のパスをとる
- 特殊なフォルダパスを取得する
- Linqの中でawaitさせたいとき
- プロパティを文字列で指定して値をsetし、forループ中で使用する
- 動かすアプリのプロセスがx64かx86かによって、SpecialFolderのパスが変わる
- 文字列の中のyyyyMMdd(20201016等)とtimezone(+0900等)を取り出してDateTimeに変換する
- Mutexでリソースの排他制御をする
- レジストリに好きな値を書き込む
- C#のxmlコメントからヘルプファイル(.chm)を作成する
- 現在の言語と地域のコードをC#でとってくる(ja-JP等)
- event/delegateを使って、他のclassに、自分のメソッドに欲しい値を載せて良いタイミングで実行してもらう
- 2つのIDisposableをusingしたときのコード分析の指摘CA2202の対応
- パフォーマンスモニタ(perfmon)で見るような情報をプログラムで取得する
- 使用中のGDIオブジェクトの数を見る
- WPFで、UWPのAPIを使ってプロセス毎のCPU時間とメモリ使用量をとる
- UWPアプリの一覧とアプリの概要を表示する
- UWPアプリの一覧とアプリの詳細を表示する
- UWPアプリをsuspendしたりresumeしたりする
- バックグラウンドプロセスを作ってみる
- バックグラウンドプロセスを作ってみる(.NET5版)
- バックグラウンドプロセスを作ってみる(.NET5版 別解)
- タスクトレイに常駐するバックグラウンドアプリをつくる
- パスが、ローカルPCのパスか、サーバー上のパスか判定する
- 参照型を値渡ししたときの不思議な動作を調べる
- C#のスクリプトでアプリのバージョン番号を一括更新
- ファイルに、フルアクセス権限を付与する
- switch式の書き方 チートシート
- 可変長のメソッドを作る
- 文字列や数値からEnumに変換する
- Consoleアプリなどのexeの中のメソッドを呼ぶ
- .NET6アプリからUWPのAPI(WinRT API)を使う
- よく知られたフォルダパスの取り方
- ManualResetEvent / AutoResetEvent で処理を待たせる
- ファイルやリンクをダブルクリックしたときと同じ動きをC#でさせる
- 1つのexeから、同じnugetパッケージの複数バージョンを切り替えて使いたい
- アプリの空き時間にキー入力を監視する
- ウインドウ非表示中にキー入力を検知(グローバルホットキー)
- 指定フォルダの中にある.特定の拡張子のファイルをリストUPする
- XElementを使ってxmlファイルを読み込む
- 管理者権限で別のプロセスを起動する
- リトライ処理をまとめる
- インターフェース・継承周りの実験①
- インターフェース・継承周りの実験②
- 別のexeを、自分のアプリ(exe)に取り込んで、好きな時に吐き出して実行する
- コンソールアプリの、標準出力への出力を受け取る
- コンソールアプリの、標準出力/標準エラー出力への出力を受け取る(非同期版)
- C#コードから起動したプロセスの標準入力に、なにか入力する(Y/Nみたいなのを自動で入力する)
- .net Frameworkの中身のコードを見る
- 型パラメーターの制約条件(where T : 〇〇)
- null許容(null許容値型/null許容参照型)についてのメモ
- 構造体の「StructLayout」とは何をするものか?
- IEquatable
を実装する - C#でxmlファイルを読み込む
- QRCodeを作成する(ZXing使用)
■C#(.net) Task関連
- Taskの状態遷移
- Taskのキャンセルのしかた
- Taskのキャンセルのしかた その2
- Taskでマルチスレッドするときの、async/awaitのある時、ない時の処理の実行順の実験2
- Taskでマルチスレッドするときの、async/awaitのある時、ない時の処理の実行順の実験
- Taskを使って並行処理(並列処理?)をする・UIを固めずに重い処理をする
- Taskの中で例外が起きた時のキャッチの仕方
- 戻り値のあるTaskの完了をTask.WhenAll()で待って例外が起きたときに、正常終了したTaskだけでも値を取り出す
- 複数のTaskの終了待ち中にTaskの中で例外が起きたら、いつどこでアプリが落ちるのか
- Task.WhenAllで、複数タスクのうちどれか1つが終わるまで待つ&そのときの例外処理
- .ConfigureAwait(false)のありなしで、使うスレッド/戻り先スレッドがどう変わるか実験
- 呼び出し元がUIスレッドかどうかでawaitした後の戻り先スレッドがどう変わるか実験
- TaskにConfigureAwait(false)を付けると、それ以降の処理はそれ以前のスレッドとは別のスレッドで行われることになる
- Taskを調べてると頻繁に出てくる「コンテキスト」とは何か?
- SynchronizationContext の実験(+Dispatcher(WPF)の実験)
■パイプ(プロセス間通信)(Windows)
名前付きパイプでプロセス間の双方向通信を行う名前付きパイプでプロセス間の双方向通信を行う(改良版)名前付きパイプでプロセス間の双方向通信を行う(さらに改良版)- 名前付きパイプでプロセス間の双方向通信を行う(最終版)
- 複数の名前付きパイプサーバーに、1つのパイプクライアントから同じデータを送る
■C++/C#
UnitTest
DependencyInjection関連(Ioc/ServiceCollection)
- UnitTestでDependencyInjectionを利用する(DI)
- UnitTestでDependencyInjectionを利用するときの部品どり
- UnitTestでDependencyInjectionするときの、登録と取り出しの仕方
- Moqを使ってUnitTestする
- コールバックメソッドで登録したメソッドを呼んでやるようなMockをつくる
- DIでServiceCollectionに同じInterfaceのクラスを複数登録する
COM(Common Component Model)系
- C++のCOMのコードをC#にもっていきたいときに、interfaceや構造体等の定義の参考にするもの
- PCに接続されているマイク(オーディオデバイス)を取得し、音量設定をする(EnumAudioEndpoints)(C++版)
- PCに接続されているマイク(オーディオデバイス)を取得し、音量設定をする(EnumAudioEndpoints)(C#版)
- PCに接続されているマイク(オーディオデバイス)を取得し、音量設定をする(EnumAudioEndpoints)(C#/CsWin32使用版)
- PCにマイクやスピーカー(オーディオデバイス)を抜きさししたときのイベントを取る(C++版)
- PCにマイクやスピーカー(オーディオデバイス)を抜きさししたときのイベントを取る(C#版)
- 今使っているスピーカー(デフォルトスピーカー)の情報を取る(C++版)
- PCのマイク・スピーカー(オーディオデバイス)の音量変更・ミュート状態変更時のイベントを取る
- Media Foundationでカメラデバイスを列挙する
- SensorManagerで、C++とC#でCOMを使う練習をする その1
- SensorManagerで、C++とC#でCOMを使う練習をする その2
一般
- UnitTest(C ++用Microsoft単体テストフレームワーク/vstest.Console.exe)の使い方概要
- クラス自体がinternalなときのUnitTest
- クラス自体がinternalなときのUnitTest(.NET6版)
- private、internalなメソッドのUnitTest
- private、internalなメソッドのUnitTest(.NET6版)
- クラスのprivateなフィールド、プロパティの値を外から変えて、UnitTestする(.NET6)
- 同じTestに複数のパラメータを渡してUnitTest実行する(DataRow)
- 同じTestに複数のパラメータを渡してUnitTest実行する その2(DynamicData)
- vstest.console.exeでUnitTestする(VisualStudio2022版)
- vstest.console.exeで行うUnitTestをアタッチ→デバッグする
- vstest.console.exeでテストを行うときに、テストするクラスやメソッドを指定(フィルター)する
- NUnitでUnitTestする
ウインドウ操作/Window操作
- 見えている全ウインドウのハンドルを取得
- 全ウインドウ(UWP/DESKTOP)を最小化する/元に戻す
- 自分以外のウインドウを最前面にもってくる
- 指定exeのウインドウにWM_CLOSEなどのウインドウメッセージを投げる
- デスクトップ・UWP・WinUIのウインドウを見分ける
- キーボードのキーを押したことにする(SendInput)
- キーボードのキーを押したことにする(keybd_event)
P/Invoke
- C++の関数から引数で返される文字列をP/InvokeでC#で受けるサンプル
- 関数ポインタを受け取る関数をpinvokeでC#から使う
- CsWin32でC#からWin32APIを使って、ウインドウを列挙し、そいつに好きなWindowsメッセージを送る
C++/C# mutex関連
C++/C#一般
- 英語Windows10で、日本語Ansi文字列をC#→C++DLLに渡す
- C#をC++/CLIでラップしてC++アプリから呼ぶ
- C#をCOM参照可能にしてC++アプリから呼ぶ2
- C#をCOM参照可能にしてC++アプリから呼ぶ1
- C++で作成したDLLをC#で呼ぶ
- C#のPJから使うC++(アンマネージド)のDLLのPJが勝手にコピーされてくれないのでビルド後イベントでコピーする
- UnmanagedのC++x64/x86のdllをexeに組み込んで、動作時の環境により自動で切り替えて使用する
■C++
- GetLastError()のエラーコード一覧のありか
- 引用符で囲まれていないプログラムパス(Unquoted Program Path) の脆弱性確認
- ダイアログベースアプリのひな型
- yyyyMMdd形式の文字列を日付(tm)に直す
- 正規表現で文字列から日付の部分を抜き出す
- もうとにかく今すぐデバッグのためのログを出力したいときの関数(C++)
- もうとにかく今すぐデバッグのためのログを出力したいときのクラス(C++)
- 文字列の型がいろいろあるが、どれをどういうときに使うかわからない
- C++で作成したDLLをC++で呼ぶ(動的)
- C++で作成したDLLをC++で呼ぶ(静的)
- 引用符で囲まれていないプログラムパス(Unquoted Program Path) の脆弱性対応確認
- 日付時刻とタイムゾーンの取得の仕方
- 日付時刻とタイムゾーンの取得の仕方(std::chrono使用)
- SESSIONCHANGE時のWTS_〇〇〇達がどういうタイミングで来るのかを調べる
- C++でマルチスレッドする
- 関数ポインタの練習
- std::functionの練習
- 文字列からGUIDに直す / GUIDの比較
- あるデバイスが今WindowsPCにつながってるかどうかを調べる
- 特殊フォルダのパスを取得する
- 次回のWindows起動時に消してほしいファイルを登録して、消してもらう
- Mutexで排他制御をする(CreateMutex)
- Mutexで排他制御をする(std::mutex)①
- Mutexで排他制御をする(std::mutex)②
- 可変引数の関数を作る
- devconの中身を見る①(cmdClasses)
- devconの中身を見る②(cmdListClass)
- devconの中身を見る③(cmdHwIds)
- C++のバックグラウンドプロセスの作り方
- 変数のコピーとstd::moveによる所有権の移動
- nlohmann.jsonでjsonファイルをシリアライズ・デシリアライズする
電源プラン・節約系
タイマー系
■Windows
レジストリ
- .regファイルでレジストリキーと値をポンと登録する
- バッチからレジストリに値を追加する(regコマンド)
- レジストリに好きな値を書き込む(C#)
- 新規ユーザー作成時に、指定のレジストリキーと値を設定しておきたい
サービスを作る
- C++でサービスをつくる(仮)
- C++でサービスをつくる(正式版)
- Windowsサービスで発生するエラーのメモ
- SESSIONCHANGE時のWTS_〇〇〇達がどういうタイミングで来るのかを調べる
- C#でサービスを作る(.NET Framework)
- C#でサービスを作る(.NET5.0)
- C#でサービスを作る(.NET6.0)
- サービスを作るうえで便利なコマンド
- Windowsサービスに、独自のサービスコントロール(SC)を送る
- Systemセッションから、Userセッションでアプリを起動する①
- Systemセッションから、Userセッションでアプリを起動する②
- Windows.winmdってなんなのか?
- Windowsの表示言語のインストールをバッチで行う
Microsoft Azure関連
AzureAppService(Webサービス開発)
Azureパイプライン(CI/CD)
一般
- Windowsのバージョン、コードネームを確認する
- サスペンド/ハイバネーション
- たまに使うWindowsコマンド
- 休止(ハイバネーション)をできるようにする
- 「lib」という拡張子のファイルのみを検索する(フォルダは検索しない)
- Windowsの検索機能を使って、objとbinフォルダを全部消す
- SDカードをパーティション削除~フォーマットしたときのメモ
- 共有フォルダにアクセスする際のログインIDを変える
- charmapでフォントファイル(.ttf)の中身を見る
- UAC関連設定とログインユーザー、起動方法により、起動したアプリの権限がどうなるか実験
- アプリが管理者として起動しているかどうかを調べる
- Windowsの設定画面をURIで起動する(ms-settings:〇〇〇〇)
PowerShell
- 自分がよく使いそうなPoweShellコマンド早見表
- コマンドで取れた値の、値の部分だけ取る
- C#から、PowerShellのコマンドを実行する
- バッチファイルの中でPowerShellのコマンドを実行する
- PowerShellで取得した値をSelectする方法
リモートデバッグ/リモートデスクトップ準備関連
- Windowsの設定
- VisualStudioのプロジェクト設定
プロファイル/診断ツール
- まとめ
- 実装中に計測
- 本番環境で計測
- メモ
■Windows PE
■バッチ/コマンド(Windows)
- 3秒おきに、何かのアプリのショートカットをたたき続けるバッチ
- Tailっぽくログを監視できるバッチファイル
- Tailっぽくログを監視できるコマンド
- ファイルに書き込み
- バッチのあるフォルダのパスを取得する
- findで、取得した情報を絞る
- for と 「/f "tokens=〇"」 を使って、スペース区切りの文字列の必要列だけ取り出す
- if文を使って条件分岐
- バッチでサブルーチンを書く
- コマンドの確認入力([Y/N?]みたいなの)を自動で入力する
- 毎月の勤怠表のpw付きzip作成を自動で行う
- bitsadminでファイルをダウンロードする
- バッチをgitに上げてそれを他の人がクローンすると、なんか動きませんけどと言われる(gitにコミット時の改行の扱いについて)
- 歴史あるソースコードのバラバラの文字コードを一括変換で統一したい
- 管理者権限でバッチを起動する
- バッチで取得できる、特殊フォルダのパスの一覧を出す(setコマンド)
- 標準出力/標準エラー出力をリダイレクトする
- いじるのにシステム権限が必要なフォルダに、copyコマンドでファイルをコピーしたい(PsExec)
- あるdllを握っているプロセスを特定する(tasklist /m)
- バッチファイルの中でPowerShellのコマンドを実行する
- イベントログ(.evtx)を採取する
- テスト中の障害発生時に調査を円滑に行うための準備と情報採取のためのバッチをつくる
■データベース
■VisualStudioCode(Windows版)
■git
- よく使うgitコマンド
- gitで一度間違えてしまったユーザー名/PW(資格情報)を消す方法
- バッチをgitに上げてそれを他の人がクローンすると、なんか動きませんけどと言われる(gitにコミット時の改行の扱いについて)
- git revert(あるコミットの内容を打ち消すコミットをする)
- dotnetコマンドで.gitignoreを作成する
■ラズパイ+WindowsIoT(UWP/C#)
- RaspberryPi 3B+と.NET5で電子工作(準備/Lチカ)
- RaspberryPi 3B+と.NET5で電子工作(ハードウェアPWM)
- RaspberryPi3にI2Cサーマルカメラ(サーモグラフィ)をつなげて温度を画像化する
- RaspberryPi3でWindows10 IoT Coreを動かす(2019/02/13)
- VS2019で作ったUWPのslnをラズパイ3+WinIoTCoreでリモートデバッグができないときの対処
- 9軸センサ(MPU-9150)でジャイロ・加速度・磁力センサの値をとる
- Bluetooth v4(BLE)機器と通信する(BLE基礎メモ)
- Bluetooth v4(BLE)機器と通信する(C#で実装メモ)
- WPFでBluetooth v4(BLE)機器とペアリングする
■Unity
- 古いUnity IDE(開発環境)をインストールする
- オブジェクトを移動させる
- 物理法則を適用する
- モノとモノが当たったことの判定
- モノに力を加える
- Unityストアにある無料アセットを自分のプロジェクトで使う
- Terrainを使って地形をつくる
- Prefabの作り方
- オブジェクトに付けられているコンポーネントを取得する
- モノの大きさを取る
- 重力を調節する
- 音を出す
- パーティクルを動かす
- キー入力を判定する
- オブジェクトのPrefabをインスタンス化する
- 別のオブジェクトに割当たっているスクリプトの変数の値を取ってくる
- ゲームコントローラーの入力をとる
- TPSっぽく自キャラとカメラを動かす
- 別のオブジェクトの方に向けて、力を加える
- ランダムな値を取得する
- 時間を測る(コルーチン)
- ボタンを押したときの処理を書く その①
- ボタンを押したときの処理を書く その②