備忘録

備忘録

C#

C#でProtocolBuffersを使う方法

Ⅰ. はじめに Ⅱ. やり方(Google.Protobufを使う方法) 1. NuGetから Google.Protobuf をインストールする 2. protoファイルを作成する 3. protoc.exe をダウンロードする 4. protoファイルからC#のクラスを自動生成する 5. サンプルプログラムを書く 実行結…

C#でLuaを使う方法(NLuaの使い方)

Ⅰ. はじめに タイトルの通り「C#でLuaを使う方法(NLuaの使い方)」です。 Ⅱ. やり方 1. NuGetからNLuaをインストールする Install-Package NLua 2. サンプルプログラム humans.lua Humans = { [10001] = {id = 10001, name = 'name001' }, [10002] = {id = …

C#でWinPcapを使う方法(SharpPcapの使い方)

C#

Ⅰ. はじめに Ⅱ. やり方 1. NuGetからSharpPcapをインストールする 2. サンプルプログラムをコピペする 実行結果 Ⅲ. TCPだけをキャプチャする方法 参考 Ⅰ. はじめに タイトルの通り「C#でWinPcapを使う方法(SharpPcapの使い方)」です。 WinPcapを利用したキ…

Costura.Fody の使い方

Ⅰ. はじめに タイトルの通り「Costura.Fody」の使い方です。 Costura.Fodyはpdbファイルを基に自動的にDLLをEXEに埋め込みます。 ILMergeの代替として利用できます。 Ⅱ. 使い方 1. Costura.Fody をインストールする Install-Package Costura.Fody 2. プロジ…

C#でYahooAPIのルビ振りを利用する方法

C#

Ⅰ. はじめに タイトルの通り「C#でYahooAPIのルビ振りを利用する方法」です。 Ⅱ. サンプルプログラム using System; using System.Net.Http; using System.Threading.Tasks; using System.Xml.Linq; static async Task Main(string[] args) { var grade = 1;…

WPFでGridを使いコントロールの位置を動的に変更する方法

Ⅰ. はじめに Ⅱ. サンプルプログラム MainWindow.xaml MainWindow.xaml.cs Ⅲ. 実行結果 参考 Ⅰ. はじめに タイトルの通り「WPFでGridを使いコントロールの位置を動的に変更する方法」です。 Ⅱ. サンプルプログラム MainWindow.xaml <Grid Name="grid1" ShowGridLines="True"> <Grid.RowDefinitions> <RowDefinition Height="1*" MaxHeight="80"/> <RowDefinition Height="3*" /> </rowdefinition></rowdefinition></grid.rowdefinitions></grid>

CefSharpでリダイレクトURLを取得する方法

Ⅰ. はじめに Ⅱ. サンプルプログラム MainWindow.xaml test.php MyRequestHandler.cs 実行結果 参考 Ⅰ. はじめに タイトルの通り「CefSharpでリダイレクトURLを取得する方法」です。CefSharpに関する基本的な情報はこちら http://kagasu.hatenablog.com/entry…

Dapperの遅いINSERTをDapperPlusを使って高速化する

C#

Ⅰ. はじめに Dapperで以下のようなINSERTを実行した場合数秒かかります。 var values = Enumerable.Range(0, 10000).Select(x => new { a = x, b = x }); var count = connection.Execute(@"insert MyTable(ColA, ColB) values (@a, @b)", values); 原因はバ…

C#でenumに任意の文字列(string)を設定する方法

C#

Ⅰ. はじめに Ⅱ. サンプルプログラム1 実行結果 Ⅲ. サンプルプログラム2 実行結果 参考 Ⅰ. はじめに タイトルの通り「C#でenumに任意の文字列(string)を設定する方法」です。 Ⅱ. サンプルプログラム1 Install-Package FastEnum Program.cs enum Company { [En…

C#でGooglePlayStoreのAPIを呼び出す方法

C#

Ⅰ. はじめに Ⅱ. サンプルプログラム 検索する アプリの詳細情報を取得する APKをダウンロードする 参考 Ⅰ. はじめに タイトルの通り「C#でGooglePlayStoreのAPIを呼び出す方法」です。 Ⅱ. サンプルプログラム 予め以下のパッケージをNuGetからインストールし…

C#でRSAの暗号化と復号を行う方法

C#

Ⅰ. はじめに Ⅱ. サンプルプログラム .NET標準ライブラリを使う方法 BouncyCastleを使う方法 Ⅲ. 鍵を読み込む方法 1. 秘密鍵、公開鍵を作成する 2. サンプルプログラムを書く 実行結果 Ⅰ. はじめに タイトルの通り「C#でRSAの暗号化と復号を行う方法」です。 …

C#でローカルIPアドレスを列挙する方法

C#

Ⅰ. はじめに タイトルの通り「C#でローカルIPアドレスを列挙する方法」です。 Ⅱ. サンプルプログラム Program.cs using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Net.NetworkInformation; using Syste…

C#でYouTube APIを利用する方法

C#

Ⅰ. はじめに タイトルの通り「.NETでYouTube API v3を利用する方法」です。 サンプルとして「任意の単語で検索し、動画IDと動画タイトルを表示する」プログラムを書きます。以下2つの環境で動作確認を取りました。 .NET Framework 4.5 .NET Core 2.0 Ⅱ. やり…

C++(EXE)からC#(DLL)の関数を呼び出す

Ⅰ. はじめに Ⅱ. 「C++/CLIを使う」方法 1. C++のプロジェクト設定を開き「共通言語ランタイム サポート (/clr)」に変更する 2. サンプルプログラム 3. 実行結果 Ⅲ. 「C#(DLL)側で関数をエクスポートする」方法 1. サンプルプログラム 2. DllExport.bat をダ…

C#でChromiumを使う(WinForms, WPF)

Ⅰ. はじめに Ⅱ. WinFormsで使う場合 1. NuGetからパッケージをインストールする 2. プラットフォームをx86またはx64に変更する 3. サンプルプログラムを書く 4. 実行結果 Ⅲ. WPFで使う場合 1. NuGetからパッケージをインストールする 2. プラットフォームをx…

C#でSSD/HDD等のシリアル番号を取得する方法

C#

2024/01/30追記 Ⅰ. はじめに 1つ目 2つ目 Ⅱ. やり方(1つ目) サンプルプログラム 実行結果 Ⅲ. やり方(2つ目) サンプルプログラム 実行結果 Ⅳ. その他 1つ目について 2つ目について 2024/01/30追記 WMICが廃止されます https://techcommunity.microsoft.co…

.NET 難読化ツール「Obfuscar」の使い方

Ⅰ. はじめに 無料で利用できる難読化ツール Obfuscar の使い方です。 GitHubでソースコードが公開されています。 https://github.com/lextm/obfuscar Ⅱ. 使い方 1. NuGetから必要なライブラリをインストールします Install-Package Obfuscar 2. プロジェクト…

C# 16進数文字列をbyte[]に変換する方法

C#

Ⅰ. はじめに Ⅲ. 16進数文字列→byte[] Ⅳ. byte[] → 16進数文字列 Ⅰ. はじめに タイトルの通り「16進数文字列をbyte[]に変換する方法」です。 Ⅲ. 16進数文字列→byte[] Main.cs static void Main(string[] args) { byte[] bytes = "01 02 03".ToByteArray(); //…

C# で Redis を使う

Ⅰ. はじめに タイトルの通り「C# で Redis を使う方法」です。 ライブラリは「StackExchange.Redis」を使います。 Ⅱ. 使い方 NuGetから必要なライブラリをインストールします Install-Package StackExchange.Redis 文字列をセットする var redis = Connectio…

C# でSMTP サーバを建ててメールを受信する方法

C#

Ⅰ. はじめに タイトルの通り「C# でSMTP サーバを建ててメールを受信する方法」です。 cosullivan/SmtpServer を使います ※画像はWikipediaより Ⅱ. やり方 1. NuGetから必要なライブラリをインストールする Install-Package SmtpServer Install-Package Mime…

C#でHttpClientにSOCKS Proxyを利用する方法

C#

Ⅰ. はじめに Ⅱ. やり方(.NET6以上の場合) 1. サンプルプログラム 2. 実行結果 Ⅲ. やり方(HttpToSocks5Proxyを利用する方法) 1. NuGetから HttpToSocks5Proxy をインストールする 2. サンプルプログラム 3. 実行結果 留意点 Ⅳ. やり方(DotNet4.SocksProx…

C# 7.1 非同期Mainを使う

C#

Ⅰ. はじめに C# 7.1の新機能の1つに「非同期Main」があります。 C# 7までは Main関数で async/await は利用不可でした。 C# 7 まで static void Main(string[] args) => MainAsync().Wait(); static async Task MainAsync() { await Task.Delay(1); Console.…

C# Zlibで圧縮、展開する

C#

Ⅰ. はじめに Zlibのマジックナンバーは2バイトです。 「78 DA」「78 01」「78 9C」等がメジャーです。 詳しくはRFC 1950で定義されています。 https://www.ietf.org/rfc/rfc1950.txt Ⅱ. やり方 NuGetパッケージをインストールする Install-Package Iconic.Zl…

HttpClient で任意のHTTPヘッダを指定した時 FormatException が発生する

C#

Ⅰ. はじめに 通常HttpClientでHTTPヘッダを指定する場合は以下のように書くことが出来ます。 var client = new HttpClient(); client.DefaultRequestHeaders.Add("User-Agent", "hoge"); しかし、User-AgnetやAuthorization等のよく知られたヘッダは自動的に…

C#でDiscord BOTを作る方法

Ⅰ. はじめに Ⅱ. 環境 Ⅲ. echo botの作り方 1. 新規アプリケーションを作成する 2. BOTとして設定する 3. Tokenをコピーする 4. OAuthのリンクを作成する 5. 4で作成したURLにアクセスし、BOTを自分のサーバに招待する 6. NuGet から Discord.Net をインスト…

.NET CoreでSystem.Drawingを使う

Ⅰ. はじめに System.Drawing は WindowsのGDI+に依存している為、標準の.NET Coreで利用することができません。 解決策として System.Drawing.Common を使う方法を紹介します。 ただし、非推奨です。 Ⅱ. やり方 1. NuGetからインストールする dotnet add pac…

C#でテンプレートマッチを行う

C#

Ⅰ. はじめに OpenCV3 のラッパーである OpenCvSharp の MatchTemplate メソッドを使ってテンプレートマッチを行います。 Ⅱ. サンプル スクリーンショットを取り、メモ帳のアイコンを探すサンプルです。 NuGet から OpenCV3 のラッパーをインストールする。 I…

C# で HMACSHA256を計算する

C#

string CalculateHMACSHA256(byte[] bytes) { using (var hmacsha256 = new HMACSHA256(key)) { var bs = hmacsha256.ComputeHash(bytes); return BitConverter.ToString(bs).ToLower().Replace("-", ""); } } // 出力例 // b248bb2b861e5efe1e5bea3722b19c6…

C#で bzip2 の圧縮、展開を行う方法

C#

Ⅰ. はじめに タイトルの通り「C#で bzip2 の圧縮、展開を行う方法」です。 bzip2のマジックナンバーは「BZh」(45 5A 68)です。 Ⅱ. SharpZipLib をインストールする SharpZipLib というライブラリを使います。 1. NuGet から SharpZipLib で検索し、インスト…

WebSocket4Net C# .NET Standard対応 WebSocket クライアントライブラリ

Ⅰ. はじめに WebSocket4Net は2017/05/11 時点でベータ段階ですが .NET Standard 対応の WebSocket ライブラリです。 Ⅱ. 使い方 1. 「WebSocket4Net」で検索し、インストールする 2. サンプルプログラム using System; using WebSocket4Net; namespace WebSo…