備忘録

備忘録

C#

.NET CoreでSQLite3を使う方法

Ⅰ. はじめに タイトルの通り「.NET CoreでSQLite3を使う方法」です。 Ⅱ. やり方 1. インストール Install-Package Microsoft.Data.Sqlite 2. サンプルプログラム using (var db = new SqliteConnection("Filename=db.sqlite3")) { db.Open(); var command = …

C#でCsvHelperを使ってCSVを読み込む方法

C#

Ⅰ. はじめに Ⅱ. インストール Ⅲ. サンプルプログラム 1. CSVにヘッダが有る場合 Program.cs 出力 2. CSVにヘッダが無い場合 Program.cs 出力 3. 自分でマップを作成する方法 Program.cs 出力 参考 Ⅰ. はじめに タイトルの通り「CsvHelperを使ってCSVを読み込…

タスクトレイのアイコンを消す方法

Ⅰ. はじめに タイトルの通り「タスクトレイのアイコンを消す方法」です。 Ⅱ. やり方 C++の場合 #include <Windows.h> int main() { auto hWnd = FindWindow(L"ApplicationWindow", NULL); NOTIFYICONDATA data; data.cbSize = sizeof(NOTIFYICONDATA); data.hWnd = hWnd</windows.h>…

C#でprotobuf-netを使ってデフォルト値を強制的に出力する方法

Ⅰ. はじめに ageが省略された例 Ⅱ. やり方 サンプルプログラム 実行結果 参考 Ⅰ. はじめに タイトルの通り「C#でprotobuf-netを使ってデフォルト値を強制的に出力する方法」です。 ProtocolBuffersは無駄なメモリを使用しない為にデフォルト値は出力しません…

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#

Ⅰ. はじめに タイトルの通り「C#でenumに任意の文字列(string)を設定する方法」です。 Ⅱ. サンプルプログラム EnumExtensions.cs public static class EnumExtensions { public static string GetDescription(this Enum value) { var field = value.GetType(…

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

C#

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

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

C#

Ⅰ. はじめに タイトルの通り「C#でRSAの暗号化と復号を行う方法」です。 サンプルプログラムとして扱うRSA暗号の詳細は以下の表の通りです。 アルゴリズム名 RSA KeySize 1024bit モード ECB パディング OAEPWithSHA1AndMGF1Padding Ⅱ. サンプルプログラム .…

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#

Ⅰ. はじめに 1つ目 2つ目 Ⅱ. やり方(1つ目) サンプルプログラム 実行結果 Ⅲ. やり方(2つ目) サンプルプログラム 実行結果 Ⅳ. その他 1つ目について 2つ目について Ⅰ. はじめに Windowsの場合記憶媒体(SSD/HDD等)には2つのシリアル番号があります。 1つ…

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

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

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

C#

Ⅰ. はじめに タイトルの通り「16進数文字列をbyte[]に変換する方法」です。 処理速度は考慮してません。 LINQ 拡張メソッドの Chunksについては参考に書いてあるブログのコードをそのまま利用しています。 Ⅱ. 16進数文字列→byte[] "0x000102030405" byte[] b…

C# で Redis を使う

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

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

C#

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

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

C#

Ⅰ. はじめに Ⅱ. やり方(DotNet4.SocksProxyを利用する方法) 1. NuGetから DotNet4.SocksProxy をインストールする 2. サンプルプログラム 3. 実行結果 Ⅲ. やり方(SocksSharpを利用する方法) 1. NuGetから SocksSharp をインストールする 2. サンプルプロ…

C# 7.1 非同期Mainを使う

C#

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

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. BOTを作成する 2. OAuthのリンクを作成する 3. NuGet から Discord.Net をインストールする 4. サンプルコード 5. 実行結果 Ⅰ. はじめに kagasu.hatenablog.comこちらの記事でプログラミング不要なBOTの作成方法…

.NET CoreでSystem.Drawingを使う

Ⅰ. はじめに System.Drawing は WindowsのGDI+に依存している為標準の.NET Coreで利用することができません。 解決策として CoreCompat.System.Drawing.v2 を使う方法を紹介します。※2018/04/26追記 CoreCompat.System.Drawing.v2はlibgdiplus側のメモリリー…