Programming一覧

C# ウインドウメッセージによるプロセス間通信

C# プロセス間通信をしてみたのでメモ。

正道を行くならIPCチャンネルを使う選択が正しいのかもしれないが、面倒くさいしよく分からないので比較的簡単に実装できるウインドウメッセージを用いた方法にしてみた。

ただしこの方法には次の制限アリ。

  1. 同じ PC 上のプロセス間のみ
  2. GUI のあるアプリケーション

ウインドウ宛てにメッセージ送るわけなので当然といえば当然。

やりかたそのものは検索すれば出てくる方法とほぼ同じ。
取り回しが良いように DLL にしてみた。

サンプルプロジェクトの構成

まず Visual Studio のソリューションにプロジェクトを3つ作成。

プロジェクト名 種類 参照設定 備考
Server Windows フォームアプリケーション HogeHoge
Client Windows フォームアプリケーション HogeHoge,Server スタートアッププロジェクト
HogeHoge クラスライブラリ System.Windows.Forms

送受信まわりを簡単な DLL(HogeHoge) にして Server・Client から参照する。

Client で Server を参照設定しているのは、実行フォルダに Server.exe を作成する為だけの目的なので本来は必要ない。HogeHoge の System.Windows.Forms 参照はウインドウメッセージを扱うので必要。

Server にはテキストボックスを1つ、Client にはボタンを2つ追加すれば準備完了。
続きを読む


C# で JSON を処理する

久しぶりに C# で JSON を処理してみたので備忘録。

JSONを処理する(現在)

ググってみたところ、使い勝手の言いパーサーがあってすこぶる楽ちんになっていた。

DynamicJson

Dynamic 型を利用しているので、C# 4.0 (Visual Studio でいうと 2010 以降かな?)が必要。

使い方も簡単。

まず上記ページからファイルをダウンロード。(今日現在の最新版 DynamicJson_1.2.0.0.zip)

解凍して中にある DynamicJson.dll を参照設定に追加するか、DynamicJson.cs を自分のプロジェクトに追加すれば使えるようになる。

今回は外部ファイルを必要としなくてもいいように DynamicJson.cs を使ってみた。
(実行時に怒られるので System.Runtime.Serialization も参照設定に追加しておきましょう。)

そしてサンプルコード。
続きを読む


Windows7 + Access2007 で SendKeys を使うとNumLockがはずれる(備忘録)

仕事で Microsoft Access をフロントエンドにして Oracle や SQL Server に接続するコトが多々ある。

Windows7 で Access2007 を使用する場合に VBA で SendKeys を連続して使用すると、何故か NumLock がはずれるのだが、毎回対処法を忘れて右往左往するので備忘録として書いておこうw

結論としては「DoEventsを挟む」です。(複雑なキーストロークでなければ)

同じような症状として Visual Basic 5.0 のバグがマイクロソフトのHPに乗ってた。

[BUG] 複数の SendKeys ステートメントが実行されると NumLock キーがオフになる

Windows Vista や Windows8、 Access2010、Access2013 それぞれの組み合わせでどうなのかは不明だけど、Windows XP + Access2007では発生しない。


C#でGoogleリーダーのRSSを取得する3

数日前からGoogleリーダーの認証まわりに変更があったようで、
以前投稿した内容ではRSS(というかAtom)が取得できなくなっていた(T T)

残念ながら英語のドキュメントを細部まで把握できる読解力がないので諦めていたが、
早々に日本語で解説されている方がいらっしゃったので参考にさせて頂きました。

http://intre.net/item_6712.html

要するに、、、

  • クッキーが不要になった(SID・LSID)
  • HTTPヘッダにAuthトークンが必要になった

ということらしい。
続きを読む


C#でGoogleリーダーのRSSを取得する2

続きです。

とりあえず前回のコードをメソッド Login() にまとめてしまいます。
クラスの名前は「GoogleReader」とでもしておくことに。

コードの変更点として、SIDとLSIDをクラスのプライベートなプロパティへ。
(C#にはグローバル変数という言葉はないらしい・・・)

public class GoogleReader
{
    private string SID;
    private string LSID;

これでログイン処理が成功すれば内部から

  • this.SID
  • this.LSID

てな感じで使える筈。

さて、フィードを取りにいってみませう。
続きを読む


スポンサーリンク