snippet

【C#】あるプロセスの開始と終了のイベントを取得する

なんでかわかりませんが、最近WMIばっかりやってる気がします。まぁ仕事だからやるしかないし、案外面白いので別にいいんですが、資料が全然なかったり、ばらばらだったり、VBSでのやり方しか見つからなかったり、いきなりPowerShellの話をされたり、中々し…

【C#】親プロセスの情報を取得する

普通だったらコマンドライン引数として呼び出し元のモジュールが渡すべきでしょう。ただ、もう本番稼働中かつその共通モジュールを呼びだしているモジュールが山ほどある、全部直してテストするなんてとても考えられない、なんて状況がたまにあります。 そん…

【C#】DateDiff

ただの親近感のお話です。 public class DateDiff { public int Year { get; private set; } public int Month { get; private set; } public int Week { get; private set; } public int Day { get; private set; } public int Hour { get; private set; } …

【C#】Microsoft.SqlServer.Dts.Runtimeを使ってパラメータマッピングと結果セットを持つSQL実行タスクを作成する

おさらい タスクを作成する場合はPackage.Executables.Addを呼び出すことで可能となります。具体的に何のタスクを作成するかは「プログラムによるタスクの追加」という資料に記載されているSTOCKモニカーで指定することができます。 返ってくるExecutableク…

【C#】enumで宣言されているメンバーを文字列から特定し取得する

つらつら語っても仕方ないのでコードを出しましょう。 public static TEnum GetEnum<TEnum>(string target) { if (string.IsNullOrEmpty(target)) throw new ArgumentException("Target is null."); var type = typeof(TEnum); if (!type.IsEnum) throw new NotSupp</tenum>…

【C#】Microsoft.SqlServer.Dts.Runtimeを使ってDTSXを生成する

コードサンプル 下準備としてMicrosoft.SqlServer.ManagedDTSを参照設定に追加しないといけないんですが、.NETタブからは見つけられなかったので、C:\Windows\assembly\GAC_MSIL\配下を探してみてください。 using Microsoft.SqlServer.Dts.Runtime; namespa…

【VBA】VBAでjsonのパーサを作ってみよう

JsonObjectの方でItemプロパティを使うようにしました。 前書き なんとかVBAでjsonをパースすることが出来るようになったのはいいけれど、なんでjsonごときにここまで苦戦せにゃならんのだと思うのは正しいし、汎用的なパーサを作ってしまうのがいいのでは?…

【VBA】VBAでjsonをパースする

前書き せっかくVBAでHTTP通信が出来るんだから未だに流行のjsonでもパースしてみましょう。 とりあえず一つだけ言えることは、やめとけってことです。jsonを扱うなら素直に別の言語を使うか別のデータ形式を使った方が絶対にいいです。本当に死ぬほど面倒で…

【VBA】Excel VBAでHTTP通信

ぐぐればいっぱい出てくるけど、断片的にしか見つからないのでまとめる。 MSXML2.XMLHTTPを作成する VBAからHTTP通信をしたい場合はCreateObject(“MSXML2.XMLHTTP”)でIXMLHTTPRequestオブジェクトを作るのが一番簡単だと思う。XMLHttpRequestはjavascriptで…

【C#】OLE DB接続を使った時のエラー特定方法

SQLを動的に生成してOLE DB接続でSELECTを発行するものを作っていたんだけど、そのSQL実行時にある特定のエラーが出た時は別の方法で再試行したい、という案件。 とりあえずエラーが起きた時に返ってくるのはOleDbExceptionみたいなので、catchしてみよう。 …

【C#】Windowsのログインユーザを偽装する

SQL Serverからデータをとってきたいんだけど、ある特定のユーザでWindows認証によるログインを済ませないと目的のデータが引っ張ってこれない。SQL認証であれば接続文字列にちょちょっと加えればそれで済むんだけど、Windows認証だとそうもいかない。 まぁ…

【C#】HttpClientのPOSTメソッドとGETメソッドのパラメータをお手軽に追加する

private static FormUrlEncodedContent CreatePostContent(params Expression<Func<Object, Object>>[] exprs) { var contents = new List<KeyValuePair<string, string>>(); foreach (var expr in exprs) { var obj = expr.Compile().Invoke(null); if (obj == null) continue; if (obj is Byte[]) { contents.</keyvaluepair<string,></func<object,>…

【C#】C#で和暦変換

極々稀に西暦→和暦の変換をしなきゃいけないことがあるんだけど、割と面倒だってことだけは知っているのでちょっとまとめておく。 Utilなクラスを作れば十分だと思うが、ありとあらゆるところで出てくる場合は拡張メソッドでもいいかもしれない。 とりあえず…

【C#】IEnumerable<dynamic>の作り方

IEnumerable<dynamic>を継承するクラスを作成しようとするとビルド時に動的なインターフェイス ‘System.Collections.Generic.IEnumerable<dynamic>’ を実装できません と表示される。 dynamicで受け取るオブジェクトがGetEnumeratorを実装していれば普通にforeachでいいんだけ</dynamic></dynamic>…

【サクラエディタ】サクラエディタで選択中のHTMLをエスケープするマクロ

{ if(Editor.IsTextSelected == 1){ var buf = GetSelectedString; buf = buf.replace(/&/g, "&amp;") .replace(/</g, "&lt;") .replace(/>/g, "&gt;") .replace(/\"/g, "&quot;") .replace(/'/g, "&apos;"); Editor.InsText(buf); } })(); アップロードする度ジェネリクスが消滅する…

【C#】Team Foundation Server SDKの覚書

ドキュメントを読んでもちんぷんかんぷんだったので試行錯誤したあれをメモしておきます。 TFSへの接続 var nc = new NetworkCredential(userName, password); //ここのUriは"http://[TFSのサーバ名]:[ポート番号]/[ディレクトリ]"を指定する var configurat…