Antoine.st 2009-03

2009-03-23

Visual Basic 6.0 on Windows 7

もうそろそろ終わりにしてほしい気持ちが満々なのですが、続くそうです。ええ。Visual Basic 6.0 のサポート on Windows 7 です。詳しくは、こちら を。

サポートが続くこと自体は悪いことじゃないんですが、実際に Visual Basic 6.0 を利用して Windows 7 用のアプリケーションを開発するか? それは本当に現実的な選択肢か? というあたりを考えると、かなり微妙です。

ちょっとしたツール程度ならいいんですが、まじめにビジネスアプリケーションを作ろうとすると、コンポーネントがほしいところですし。実質、今、動いているアプリケーションを移行する ( それも、いずれは .NET への置き換えを踏まえつつ ) といったレベルでしょうかね。


2009-03-20

Recent work

最近のお仕事ですが、EWS ( Exchange Web Services ) とか SharePoint 関係とかやってます。ようやく、EWS の仕組みがなじんできたって感じでしょうか。結構面倒ですが、データの取得、設定関連のパターンが一緒なので、その辺さえきちっと理解してしまえば、ある程度行けそうです。

で、これをうまく使えば、貧弱な Outlook くらいは何とか作れそうな感じ。といっても、メール関連ぐらいにしておきたいところですが。仕事だったりスケジュール関連だったり、パブリックフォルダ関連だったり、なにげに高機能ですからね。Outlook って。


2009-03-16

No files

なぜか、2006-02 の .html ファイルのサイズが 0 になってました。当然、内容が見れないわけで。そういえば、以前、アップロードしたはずなのにおかしな状態になったということがありました。もしかして、そのときの影響かも...。

たいした内容ではありませんが、一応アップロードし直しと。

Reflection

またまたリフレクションな小ネタなわけですが、うまいことやると、すでに関連づけられているイベントハンドラを置き換えることができたりします。で、こんな感じで。もともと設定されていた、btnDoit_Old_Click というイベントハンドラを btnDoit_New_Click に置き換えます。

当然、自分で作ったアプリだけが対象ではないので、どこかの誰かが作ったライブラリといったものでも置き換えが効いたりします。使いどころを選ぶとは思いますが、結構便利。

これだけリフレクションでいろいろできてしまうと、『リフレクションされにくい』ライブラリの作り方、なんてのも面白いネタかもしれないですね。

  private void btnReplace_Click(object sender, EventArgs e)
  {
    Type t;
    Type h;
    Type target;
    MethodInfo mi;
    Delegate d;
    EventInfo ei;

    t = this.GetType();
    target = btnDoit.GetType();
    h = typeof(EventHandler);

    mi = t.GetMethod(
      "btnDoit_Old_Click",
      BindingFlags.NonPublic | BindingFlags.Instance);
    ei = target.GetEvent(
      "Click",
      BindingFlags.Instance | BindingFlags.Public);
    d = Delegate.CreateDelegate(h, this, mi);
    ei.RemoveEventHandler(btnDoit, d);

    mi = t.GetMethod(
      "btnDoit_New_Click",
      BindingFlags.NonPublic | BindingFlags.Instance);
    ei = target.GetEvent(
      "Click",
      BindingFlags.Instance | BindingFlags.Public);
    d = Delegate.CreateDelegate(h, this, mi);
    ei.AddEventHandler(btnDoit, d);

  }

しばらく C# のソースコードを書いてなかったら、こんな微妙な色合いに・・・。ちょっと見直した方がよさげですねぇ。