C#

【C#】今更ScriptCsを触ってみる

C#

前書き 最近新しくお仕事用のPCを貰ったはいいんですが、こう、端的に言って、とんでもないクソスペックです。 Windows 7は別にいいんですが、32bitだし、メモリ1GBしかないし…。今どき1GBのメモリなんてExcel開いてるだけで枯渇しますよ。 まぁ開発用ではな…

【C#】Windows資格情報を操作する

以前C#でWindows資格情報を列挙すると言う記事で試しに作成したソリューションをGitHubに公開したんですが、相当手を加えて列挙だけでなく操作も全部できるようにしたのでした。 したんですが、それを紹介する記事を書いてなかったので書きます。とは言え、…

【C#】StreamReader#ReadLineの改行コードを明示的に指定する

ExcelやAccessのデータをコピペしてExcelで保存、それで「CSVを作った」と言い張る輩が日本社会には巣食っているわけですが、あんなものはCSVに対する冒涜です。 と言うのも、セル内改行されているデータが「ダブルクォーテーションで括り、セル内改行部分は…

【C#】タスクのキャンセル方法

普段C#ではほんとスクリプトみたいなちまーっとしたものしか作らないので、たまにTaskのキャンセル処理を入れようとするとどうやるのか忘れてしまっています。 と言うわけでメモしておきます。 CancellationTokenSourceを作成する 何はともあれCancellationT…

【C#】Google APIを使うためにOauth2認証する

GoogleのAPI Consoleにプロジェクトを登録すると、Googleの膨大な資産で遊べたり、Googleアカウントを利用して各サービスのAPIを叩いたりすることが出来ます。 更に各言語でGoogle APIを叩くためのライブラリが無料で公開されているため、自分の好きな言語で…

【C#】引数として渡したいTypeに制約を設ける

AttributeからリフレクションをキメるためにTypeを渡すようなメソッドを作ることは割とよくあることなんですが、渡すTypeにジェネリクスっぽい制約(境界)を設けたくなることもあると思います。 まぁそもそも「あるインターフェースを実装している場合は特…

【C#】StdRegProvを使用してレジストリを操作する(90%ぐらいの完全版)

最近IEの右クリックメニュー拡張に手を出していて、その辺の絡みでレジストリを自分で作る必要が出てきました。 当然面倒なのである程度自動化しようと思ったら前に書いたやつが読み込みしか出来なかったので、もうStdRegProvのメソッドを全部ラップしてしま…

【C#】System.Data.SQLiteを使ってみる

このTumblrの更新は自作のTumblr更新ツールから行われているんですが、既に書いた記事のタグを取得して候補に出す、なんてことをしています。 が、TumblrのAPIにはタグ一覧を取得するものがないので、とりあえずHTTP飛ばして記事を取ってくるだけ取ってきて…

【C#】端末のシステム日付を変更する

やはりエンジニアたるもの、出来る限り定時で帰りたいので、PCを起動する際にHTTP経由で毎日時間を合わせようと思います。 使用するWeb API NICT(情報通信研究機構)が提供しているAPIを使用します。 タイムスタンプはどれでもどうにでもなるんですが、POSI…

【C#】Windows資格情報を列挙する

もうちょっと複雑なことができるものを作りました。 [2014/07/03追記ここまで] こんなのC#じゃないわ!ただのWin32 APIよ! 前書き ちょっと訳あって資格情報マネージャを確認しようとしたらコントロールパネルから見れませんでした。多分、権限とかなんかそ…

【C#】TaskとUIスレッド問題

C#

私は諸事情により.NET4.5を使うことが出来ず、.NET4.0しか使えないので、この事象が.NET4.5でも再現するかどうかはわかりません。念のため。 事象 例えばこんなコードがあったとします。Form上にあるボタンを押すと非同期処理が走り、Labelが書き換えられま…

自作のListViewItemを作成する

ListViewを使ってると「なーんでわざわざデータ用のクラスを作ったのにstringの配列なんぞに変換せにゃならんのじゃ」と結構色んなタイミングで感じることがあります。 いや別に、入れる分にはいいんですけど、取り出す際にTextプロパティ見てSubItemsプロパ…

【C#】NotifyIconにWindows規定のアイコンを埋め込む

で、「ああーそっか設定しないと出ないんだっけ」と思いながらプロパティを開いて拡張子がicoのファイルを求められて「それな」って気持ちになるのも今のところ100%です。 別にアイコンとかいらねぇしなんかあのデフォルトで設定されているよくわかんない四…

【C#】Windows FromのInvokeが面倒くさいから拡張メソッドを作る

まー理屈はわかる。確かにその方がいい。ただ厄介なのは、引数がDelegateなせいでそのままラムダ式を書けないし、匿名メソッドもそのまま使えない。MethodInvokerでキャストしてやる必要がある。 //匿名メソッド版 this.Invoke((MethodInvoker)delegate() { …

【C#】StdRegProvを使ったレジストリ操作

書き直すのが面倒なのでコードとリンクだけはっつけておきます。 [20140210追記]ちゃんと書き直しました。 コード using System; using System.Linq.Expressions; using System.Management; namespace RegistryTest { public class Registry : IDisposable {…

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

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

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

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

【C#】TaskのDispose

結構色々な資料を読んだつもりだったんですが、TaskはDisposeメソッドを持っていると言うことを昨日初めて知って、結構驚きました。 世の中に出回っている(MSDNを含む)資料でTaskをusingに入れているものを見たことがなかったので、IDisposableも実装して…

【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…

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

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

【C#】Tuple.Equalsに関するメモ

以下のコードであれば、trueになる。 var foo = Tuple.Create("hoge", "piyo"); var bar = Tuple.Create("hoge", "piyo"); if (foo.Equals(bar)) { Console.WriteLine("true"); } else { Console.WriteLine("false"); } 内部的にEqualsが呼ばれていれば何で…

【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,>…

Excel-DNAで遊ぼう(2)

誰かが新たにデファクトスタンダードになるような帳票ソフトを開発してくれればそれで済むんですが、仕方ないのでそう言ったものが出てくるまでなんとかExcelでやり過ごしていくしかないのです。 と言うわけで、Excel-DNAなる面白いおもちゃがあるのでExcel…

Excel-DNAで遊ぼう(1)

じゃあVisual StudioでExcelのアドイン作ればいいんじゃね?と言うことで、Excel-DNAで遊びましょう。 どんなことが出来るとか、どうやって導入するとか、どんなメリットがあるかとか、そう言うのはもう先人が書いているので適当に読んでください。日本語リ…

【C#】C#で和暦変換

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

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

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