Microsoft Moneyのオンライン機能の回復。 引用

Microsoft Moneyには長い歴史があります。 1991年にリリースされたWindows 3.0の最初のバージョンから2007年のPlusバージョンまで、Moneyは個人の財務を管理するための便利なツールでした。



Moneyは、通常のアカウント管理に加えて、開発されたオンラインサービスも提供しました。

これらは3つのコンポーネントに分けることができます。



  1. 見積と通貨換算に関するデータの取得。
  2. 言うまでもなく、クラウドとのアカウントデータの同期。
  3. OFXプロトコルを介した請求書の支払いなど、オンラインバンキングと連携します。


残念ながら、2011年、Microsoftはサービスを終了するためのmodをサポートしていたため、MSN Moneyオンラインサービスを終了し、最初の2つの機能が動作しなくなりました。



また、2010年にリリースされたMoney Plus Sunsetの無料版には、オンライン機能のサポートが含まれなくなり、オフラインアカウント管理のシンプルなツールになりました。



2006年からMicrosoft Money 2004 Standardを使用しています。 この間、他のプログラムやオンラインサービスにアクセスしようとしましたが、それでもMoneyの方が便利でした。 しかし、ここでは機能を公然と動揺させていません。 わが国のオンラインバンキングが役に立たない場合は、 私の知る限り、大手銀行の1つでも個人向けのOFXでの業務をサポートしていないため、為替レートに関するデータはほとんどありませんでした。 結局のところ、1つのオンラインサービスで作業した後のオンライン同期は夢でした。



コミュニティはさまざまな程度の松葉杖のツールをいくつか作成しましたが、致命的な欠陥が1つあります。Moneyに統合されず、結果を得るために手作業が必要です。



奇跡を待つ必要がなかったので、現実の夢の実現

夢想家自身の仕事です。



すぐに予約すると、以下に記載されているすべてがバージョン2004に適用されます。おそらく、以前のバージョンには必要な機能がなく、後続のバージョンは予想と異なる動作をする可能性があります。



オンライン機能を返すタスクは、2つの大きな段階に分けることができます。



  1. 相場と為替レートに関するデータの取得。
  2. オンラインサービスとの同期。


Moneyが引用符を取得しようとするデフォルトのURLは



http://moneycentral.msn.com/Scripts/invisapi.dll
      
      





Microsoft Moneyには、複雑で柔軟な構造があります。 一見モノリシックなプログラム

OLEを介して接続された多くのコンポーネントで構成されます。 ほとんどのコンポーネントには、iniファイルまたはレジストリのいずれかに設定があります。これは、ファイルに干渉することなくプログラムの動作を変更する絶好の機会です。



したがって、レジストリで文字列パラメータ値を指定することにより、リクエストURLを変更することが可能です



 HKLM\Software\\Microsoft\\Investor\\StockQuotes\\QuoteServerURL
      
      





その後、Microsoftサーバーから自分のサーバーにリクエストをリダイレクトできます。



Moneyは、必要なデータのリストをアドレスパラメーターとして含むHTTP GETコマンドを使用して、指定されたURLにリクエストを送信します。



例:



 http://moneycentral.msn.com/Scripts/invisapi.dll?V=5&S=$US:INDU,/RUBUS,/ECUUS,/ATSUS,/BECUS,/DEMUS,/FIMUS,/FRFUS,/GRDUS,/IEPUS,/ITLUS,/LUFUS,/NLGUS,/PTEUS,/ESPUS&Q=19,15,32,0,3,5,1,2,10,4,17,18,8C,E9,EA,1E,8,9,A2,104,3A,3B,3C,3D,7F,7D,7,13,14,14E,14F,EB,21,192,16A&N=8,15&H=15,5,20002+20201+20170916+20180316,20006+20201+20170916+20180316,20000+20201+20170916+20180316,20001+20201+20170916+20180316,20004+20201+20170916+20180316
      
      





ここでは、INDU交換インデックスのデータ、その年の履歴データ、および為替レートのデータを受信するように要求がエンコードされています。



興味深いことに、最新の米ドル通貨コードの代わりに、米国が使用され、リクエストのルーブルコードは正しいです:RUB。



応答として、Moneyはバイナリ形式のデータを予期しています。 残念ながら、InvAPIプロトコルは非常に紛らわしく、その回復には非常に時間がかかります。



幸いなことに、MoneyはQWBとWebQUOTEの2つの形式で動作します。

したがって、MicrosoftがバイナリInvAPIの使用に切り替えて、MoneyがXMLで非常に広く使用されていることを考えると、構造化されたXMLベースのWebQUOTEを放棄した理由はあまり明確ではありません。



代替プロトコルを使用するには、レジストリブランチHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Money\12.0\Online\WebQuoteServers.



セクションを作成する必要がありHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Money\12.0\Online\WebQuoteServers.





サブセクションには任意の名前を付けることができ、次のパラメーターを含める必要があります。





次のパラメータには、カンマで区切られた国のリストを含める必要があります。カンマで区切られたインデックスは、サーバーがサポートします。





以下のパラメーターの目的は不明のままです。





サーバーの記述順序には微妙な違いがあります。WebQUOTEサーバーの記述が並べ替えの最初で、次にQWBが続く場合、両方に要求が行われます。 その逆の場合は、QWBサーバーのみ。



QWBプロトコル(見積書書き戻し)のMoneyサポートのどのバージョンが登場したかを調べることはできませんでした。 しかし、すべての兆候から、これはデータを取得するために使用された最初のプロトコルでした。 Money 2000は、この形式のファイルをインポートできました。 しかし、2004年版にはまだそのような機会はありません。



QWB Moneyを使用する場合、要求パラメーターを含むURLを生成し、GETメソッドを使用してHTTP経由で送信します。



例:



 http://example.com/msmoney/webqt.qwb?N=INDU
      
      





どこで



 http://example.com/msmoney/webqt.qwb?N=
      
      



WebQTSrvrURLパラメーターの値です。



応答形式は単純です。形式の見出し、日付/時刻、およびインデックスによるデータのリストです。



例:



 <FORMAT>QWB2.0 <DATE>20180311105300 US:INDU@179.98@0@0@0@0@0@0@0@0@0@0@USD@
      
      





日付形式-YYYYMMDDHHmmSS



フィールド値:



0-国情報を含むWKN、ただし実際には要求からのインデックスの名前

1-最後(指定された時間のコース)(ダブル)

2-高(その日の最高入札価格)(ダブル)

3-低(その日の最低入札価格)(ダブル)

4-オープン(始値)(ダブル)

5〜52週間(52週間の範囲、DATE)(ダブル)

6〜52週間分(DATEから52週間の範囲)(ダブル)

7-P / Eレシオ(EPS)(価格/利益(P / E))(ダブル)

8-ボリューム(ロング)取引ボリューム

9-? 1/0(ブール)

10-発行済み株式(ダブル)

11-時価総額(ダブル)

12-通貨コード(米国、RUR ...)



この形式は、株式とインデックス(証券)のデータを受信するように設計されており、為替レートを取得することはできません。



WebQUOTEは、データ取得プロトコルの開発における次のステップです。

その使用により、より詳細なデータを取得できます。



Moneyは、XMLドキュメントの形式で要求を生成し、POSTメソッドによってサーバーに送信します。 リクエストの本文は次のようになります。



 <?xml version="1.0" encoding="windows-1251"?> <WEBQUOTE Version="1.0" Source="Money2K"> <QUOTERQ Symbol="$INDU" Type="INDEX" Country="US"/> <HISTQUOTERQ Symbol="$INDU" Type="INDEX" Country="US" StartDate="20170918" EndDate="20180318"/> </WEBQUOTE>
      
      





応答形式は次のとおりです。



 <WEBQUOTE> <EXRATERS CurrFrom="" CurrTo="" datetime="" rate=""/> <QUOTERS Symbol="" Country="" Type="STOCK|INDEX|MUTUAL|OTHER" Currency="string" DateTime="YYYYmmDD" Price="double" Low="double" High="double" Open="double" PrevClose="double" YearHigh="double" YearLow="double" Pe="double" Vol="dword" Out="double" Cap="double" NewsURL="string" Ask="double" Bid="double" Beta="double" DividendYield="double" AmtEPS="double" Size="long" LastUpdate="YYYYmmDD" FYI="YYYYmmDD" News="YYYYmmDD" PercentCash="double" PercentOther="double" PercentSmall="double" PercentLarge="double" PercentMedium="double" BaseUnit="long"/> <HISTQUOTERS Symbol="" Country="" Type="STOCK|INDEX|MUTUAL|OTHER" Currency="string" DateTime="YYYYmmDD" Price="double" Low="double" High="double" Open="double" PrevClose="double" YearHigh="double" YearLow="double" Pe="double" Vol="dword" Out="double" Cap="double" NewsURL="string" Ask="double" Bid="double" Beta="double" DividendYield="double" AmtEPS="double" Size="long" LastUpdate="YYYYmmDD" FYI="YYYYmmDD" News="YYYYmmDD" PercentCash="double" PercentOther="double" PercentSmall="double" PercentLarge="double" PercentMedium="double" BaseUnit="long"/> </WEBQUOTE>
      
      





どこで



EXRATERS-通貨換算に関するデータ。

QUOTERS-リクエスト時の見積もりに関するデータ。

HISTQUOTERS-引用の履歴データ。



返されるデータのセットは、QWBと比較して大幅に拡張されています。 属性の名前から、どのデータを含めるべきかが明確になります。



興味深いことに、Moneyは通貨換算に関するデータを要求することはありませんが、それに応答してこのデータが含まれている場合、完全に処理して保存します。



任意のプロトコルに従って応答を作成する場合、データベースに保存されている通貨コードを考慮する必要があります。 たとえば、MoneyのルーブルコードはRURとして記述されており、RUBを記述した場合、分析は失敗します。



3番目のオプションもあります:OFXプロトコルを使用します。 この形式のデータは、ファイルによってインポートできます。たとえば、ユーティリティの1つで生成したり、オンラインで取得したりできます

Moneyに接続された銀行から。 ただし、この方法はQWBおよびWebQUOTEに続くものであり、手動での介入が必要です。



All Articles