しいしせねっと Get Firefox
[技術資料室] [もじらのお部屋]

Netscape mozilla DDE制御編

Last update 

DDEML(MFCにはない)

Last update 2001.9.9

LPDWORD DdeInitialize()
XTYP_REGISTER DDEMLサーバアプリケーションがサービス名を登録したとき、受け取る。 などややこしいんですね。VC++にもDDEのクラスは存在しないため、ある程度まとめてやらないといけません。
DDEがまとまれば、NETSCAPEとの対話がはじめられます。IEも非公式と言われていますがじつは基本的に対応しており、WWW_URLEchoなどの語でマイクロソフト(英語)のサイトを検索してみると、32ビット版IE3はバグでWWW_URLEchoに対応していないとかいう情報が検索できます。(笑)
(97年頃の)最近、DDEのだいたいの使い方がわかりました。うむ。
DDEは、サーバとクライアントで構成され、クライアントがサーバにあるトピック名を呼び出してサービスを利用する形です。
NETSCAPE(Spyglassの決めたブラウザ標準DDE?)の場合、毎回サービス名、トピック名で接続するようで、サーバからクライアントに接続するということはできないため、URLEchoなどではクライアントもサービス名を持ち、サーバにならなければなりません。
DDEの非常に略した使い方の解説は下のほうにあります。
Mozillaでの対応状況は、Bug 25699 - DDE implementation を参照してください。

Netscape DDE リファレンス

Netscapeのサービス名は、NETSCAPE
Mozillaのサービス名は、Mozilla (Mozilla 0.9.1以降で対応)
Netscape 6.1は?

Netscape項が、Serverとあるのは、アプリケーションからNetscapeに送る。
Clientとあるのは、Netscapeからアプリケーションに送られてくる。(サーバ機能を持つ必要がある)

トピック名 Netscape トランザクションタイプ Item(引数) (文字列) 戻り値(基本的に文字列) 説明
WWW_Active Server XTYP_REQUEST dwWindowID,dwFlags (DWORD)dwActivatedID アクティブにする
WWW_Alert Client XTYP_REQUEST qcsMessage,dwType,dwButtons
dwType 0x0 エラー 0x1 ワーニング 0x2 質問 0x3 ステータス
dwButtons 0x0 OK 0x1 OK/Cancel 0x2 Yes/No 0x3 Yes/No/Cancel
dwAnswer
0x0 error
0x1 OK
0x2 Cancel
0x3 No
0x4 Yes
該当トピックなし
WWW_BeginProgress Client XTYP_REQUEST dwWindowID, qcsInitialMessage dwTransactionID 読み込み開始通知
WWW_CancelProgress Server XTYP_POKE dwTransactionID 読み込みキャンセル
WWW_EndProgress Client XTYP_POKE dwTransactionID 読み込み終了通知
WWW_Exit Server XTYP_POKE WWW_Exit 終了させる
WWW_GetFrameParent Server XTYP_REQUEST dwWindowID of a browser window or frame cell dwWindowID 親フレーム 親フレーム通知
WWW_GetWindowInfo Server XTYP_REQUEST dwWindowID qcsURL,qcsTitle, qcsFrameName ウインドウ情報取得
WWW_ListFrameChildren Server XTYP_REQUEST dwWindowID representing a browser window or frame cell. dwWindowIDsの配列 
(DWORD)
フレーム一覧取得
WWW_ListWindows Server XTYP_REQUEST WWW_ListWindows dwWindowIDsの配列 
(DWORD)
ウインドウ一覧取得
WWW_MakingProgress Client XTYP_REQUEST dwTransactionID, qcsMessage, dwProgress blStopLoading
WWW_OpenURL Server XTYP_REQUEST qcsURL,[qcsSaveAs], dwWindowID,dwFlags, [qcsPostFormData], [qcsPostMIMEType], [csProgressServer] dwServicingWindowID 
(文字列ではなくDWORD数値 IE対応せず)
URLページを開く
Client XTYP_REQUEST qcsURL,[qcsSaveAs], dwWindowID,dwFlags, [qcsPostFormData], [qcsPostMIMEType], [csProgressServer] dwServicingWindowID ヘルパーアプリでURLを開くための通知
WWW_ParseAnchor Server XTYP_REQUEST qcsAbsoluteURL, qcsRelativeURL qcsCombinedURL 相対URLを絶対URLに変換
WWW_QueryURLFile Server XTYP_REQUEST qcsFileName qcsURL ファイルを開く
WWW_QueryViewer Client XTYP_REQUEST qcsURL,qcsMIMEType qcsFileName
WWW_RegisterProtocol Server XTYP_REQUEST qcsServer,qcsProtocol blRegistered プロトコルタイプ(http:など)DDEヘルパーの登録
WWW_RegisterURLEcho Server XTYP_POKE qcsServer(サービス名) 移動すると通知するよう登録する(IE3は非対応)
WWW_RegisterViewer Server XTYP_REQUEST qcsServer,qcsMIMEType, dwFlags blRegistered MIMEタイプDDEヘルパーの登録
WWW_RegisterWindowChange Server XTYP_REQUEST qcsServer,dwWindowID dwMonitoringWindowID WWW_WindowChangeを受け取るための登録
WWW_SetProgressRange Client XTYP_POKE dwTransactionID, dwMaximum
WWW_ShowFile Server XTYP_REQUEST qcsFileName, qcsMIMEType, dwWindowID,qcsURL dwServicingWindowID
WWW_UnRegisterProtocol Server XTYP_REQUEST qcsServer, qcsProtocolType blUnregistered WWW_RegisterProtocolの登録を解除する
WWW_UnRegisterURLEcho Server XTYP_POKE qcsServer URL通知の登録を解除するのだが。
WWW_UnRegisterViewer Server XTYP_REQUEST qcsServer,qcsMIMEType blUnregistered
WWW_UnRegisterWindowChange Server XTYP_REQUEST qcsServer,dwWindowID blUnregistered
WWW_URLEcho Client XTYP_POKE qcsURL,qcsMIMEType, dwWindowID, [qcsReferrer] 読み込んだURLの通知 
(IE3はバグのため非対応)
WWW_Version Server XTYP_REQUEST WWW_Version dwAPIVersion
WWW_ViewDocFile Client XTYP_POKE qcsFileName,qcsURL, qcsMIMEType, dwWindowID
WWW_WindowChange Client XTYP_POKE dwWindowID, dwWindowFlags, [dwX],[dwY], [dwCX],[dwCY] Windowの状態の変化の通知
Server XTYP_POKE dwWindowID, dwWindowFlags, [dwX],[dwY], [dwCX],[dwCY]
戻り値は、数値一つの場合のみ、数値型、それ以外は文字列型で返される。
dwWindowID
処理対象のNetscape NavigatorのウインドウID。トップウインドウの場合は0xFFFFFFFFを指定する。

適当に用語集

DDE / DDEML Windows(開発)用語

Dynamic Data Exchange(動的データ交換)
昔の、アプリケーション間で通信する手段。今はOLEに置き換わっているらしく、VC++のマニュアルなどを検索しても英語でしか記述されていないが、簡単なのでよく使われるとか。
Netscape Navigatorを操作するために使うらしいが、現在資料が皆無か・・・(上記参照)。 Internet ExplorerもNetscape互換のDDEを持つらしい。動いたが多少違うな。
どちらも現在OLEで操作できるが(Navigatorは、できないのか?)、その方法もよくわからない。(これがOLEオートメーションというものらしい)
でも、OLEとは違うような気がする。
Win32 API関連の書籍にわけのわからない解説を見ることもできるが、やはりよくわからない。
DDEは、項目、トピック、サービスがあり、Netscapeの場合サービス名がNETSCAPE、トピックがWWW_OpenURLというような関数の名前のもの。
引数などは文字列として渡しているが、これはNetscapeに限ったことか?
Netscape's DDE Implementation (netscape)
Netscape's DDE Implementation (iPlanet) 生きてました iPlanet for developers - Communicator FAQs にOLEの制御方法もあるかも

#include <ddeml.h>
DdeInitialise(略);  // DDEの初期化   
DdeConnect(略); // Netscape Navigatorのとあるトピックに接続する   
// Netscapeに要求を送る   
DdeDisconnect(略); // Netscape Navigatorから切断する 
DdeUninitialize(略); // DDEの終了処理

Ethernet

LANによく使われているプロトコル。2種類ぐらい形式がある。
DIXと、何とかと。

LDAP

ライトウエイト・ディレクトリ・アクセス・プロトコル。
ユーザ情報を管理するために使われているような感じである。
ほかのものも管理できる?らしい。
->X.500

NetscapeONE

JavaScriptを中心とした、Netscapeの操作を統合するもの。Plug-in, LiveConnect, Java IFCなどがある。

NCAPI

Netscapeが使っている用語。Netscape Client APIの略?

アドバイズループ

Windows開発用語
DDEのループ
Javaに慣れていると、Win32のコールバックが関数であるという事実が非常に面倒くさい。んん、どっちも面倒くさいかも・・・。

インスタンス

オブジェクト指向用語。
実体。変数というか、構造体なのかな。ゲームのザコキャラがたくさん出てくるが、その1つ1つがインスタンスという感じで。それを動かすプログラムは1つだが、動いているキャラクターはたくさんありますね。
インスタンスとオブジェクトは、ほとんど同じ意味を持つ。

コネクション

通信用語
仮想ケーブルとでもいうか
一対一の接続が基本的だが、他のパターンもあるのかも。

ソケット

通信をするときのプログラムとネットワークのコネクタの部分。
コネクションの両端。

タイプライブラリ

Windows開発用語。
拡張子tlbなどのふぁいるで、COMの情報が書かれている、といってもなんのことやら・・・。C言語でいうヘッダファイルのようなもの。ただし、odlという拡張子のファイルをコンパイルして作る。解説は英語だった。


[しいしせねっと] [お問い合わせ]