| くりっく365 DDE その2 |
|
| 投稿者:手賀 |
| 2009年 12月 06日(日曜日) 08:34 |
|
これまでに二回ほど、インヴァスト証券のリッチクライアントが提供しているくりっく365の DDE について簡単にご紹介しました(「インヴァスト証券 くりっく365 DDE」「くりっく365 DDE の補足と雑談」参照)。 その後、くりっく365用の簡単なトレードクライアントを自作しようとしているのですが、その過程で気がついたことなどを(大したことではありませんが)いくつか紹介したいと思います。 起動時の UAC ダイアログを不要にするくりっく365 DDE の補足と雑談で書いたように、先日のパッチ以降、リッチクライアントの起動時に UAC プロンプトが表示されるようになってしまいました。これは普通のユーザーにとって面倒であるだけでなく、DDE クライアントにも同じ権限で動作していることが要求されてしまうため、DDE を利用する観点からも悩みの種です。 そこで、まず最初に、昇格なしでリッチクライアントが起動するようにリッチクライアントの EXE に含まれているリソースを書き換えることにします。ここでは、リソースの書き換えに、フリーウェアとして提供されている XN Resource Editor を使用しました。 なお、この作業に入る前に、リッチクライアントが C:\Program Files または C:\Program Files (x86) 以下にインストールされている場合は、どこか別の場所にインストールし直しておいてください。私の場合は C:\Programs というフォルダを別途作成して、その下にインヴァスト証券のくりっく 365 リッチクライアントやコスモ証券の大証 FX リッチクライアントをインストールしています。 マニフェストリソースの書き換えEXE ファイルの書き換えを行う前に、InvastClick365.exe をエクスプローラ上でコピペして、念のためバックアップを作成しておきましょう。 XN Resource Editor で InvastClick365.exe を開くと、EXE ファイルに含まれているリソースがツリービューに表示されるはずです。アプリを起動したときに UAC プロンプトで昇格が要求されるのは、これらのうち、XP Theme Manifest というノードに含まれているマニフェストによるものです。
上の図を参考にマニフェストリソースの編集画面を開き、マニフェストの最後の方にある requireAdministrator という箇所を、requireAdministrator から highestAvailable に書き換えることで、起動時に得られる可能な範囲の高い権限で実行するようになり、管理者への昇格は要求されなくなります。 書き換えたらファイルを保存できるようになっていると思いますので、[File > Save] を選択して変更内容を保存した上で、XN Resource Editor を終了します。 これで起動時に UAC のダイアログが表示されることはなくなりました。 DDE トランザクションさて、リッチクライアントを DDE サーバーとして、インヴァスト証券 くりっく365 DDE の記事で述べたようなトピック名/項目名でデータを取得してみたところ、XTYP_CONNECT トランザクションは成功するのですが、データを取得する XTYP_REQUEST トランザクションが失敗するようです。 そこで、DDE サーバーとしてのリッチクライアントの仕様について少し調べてみると、リッチクライアントが処理している DDE トランザクションは以下の四つだけであることが分かります:
なるほど、クライアント側がデータを好きなときに取得できる XTYP_REQUEST トランザクションは無視されているわけです。 また、面白いことに、XTYP_CONNECT を処理しているのに、XTYP_DISCONNECT トランザクションは処理されていません。これは、リッチクライアントの DDE 処理部が、為替のようなシンボル数の少ない金融商品を前提としていることを表していると言えるでしょう。株式のように銘柄が多数存在する商品まで扱うことを想定したら、XTYP_DISCONNECT を実装しないということは考えにくいところです。 以上から、リッチクライアントを DDE サーバーとして利用する場合には、
という二点に注意してクライアント側を実装してください。 おまけコスモ証券が提供している大証 FX 向けリッチクライアントも Simplex 製なので、技術的にはほぼ同じ作りになっているはずですが、大証 FX が複数気配であることも関係してか、現在のバージョンでは DDE の配信は行っていないようです。 |
