[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2005/11/02(Wed) 11:20
投稿者名:IMA
Eメール:
URL :
タイトル:
mshtml.IDisplayServicesをVB6で使うには
mshtml.IDisplayServicesをVB6から使いたいと考えています。
netでは以下のようにDirectCastを使えば出来るようですが・・

    Dim doc4 As mshtml.IHTMLDocument4
    Dim ids As mshtml.IDisplayServices
    Dim ims As mshtml.IMarkupServices

    doc4 = DirectCast(AxWebBrowser1.Document, mshtml.IHTMLDocument4)
    ids = DirectCast(doc4, mshtml.IDisplayServices)
    ims = DirectCast(doc4, mshtml.IMarkupServices)

よろしくお願いします。

投稿時間:2005/11/02(Wed) 11:53
投稿者名:K.J.K.
Eメール:akiya@koalanet.ne.jp
URL :
タイトル:
Re: mshtml.IDisplayServicesをVB6で使うには
>     Dim doc4 As mshtml.IHTMLDocument4
>     Dim ids As mshtml.IDisplayServices
>     Dim ims As mshtml.IMarkupServices

    Set doc4 = AxWebBrowser1.Document
    Set ids = doc4
    Set ims = doc4

投稿時間:2005/11/02(Wed) 13:40
投稿者名:IMA
Eメール:
URL :
タイトル:
Re^2: mshtml.IDisplayServicesをVB6で使うには
K.J.K.さん すばやいご回答ありがとうございました。
VB6ではこんなに簡単に記載できるのですね!

実は、hhttp://www.bcap.co.jp/hanafusa/vbbbs/wforum.cgi?no=4777&reno=no&oya=4777&mo
de=msgview&page=0
に関連したことで2・3日考え込んでいました。
カーソルでなくカレット位置を求めたのはいいのですが、
カレット最上部の位置しか取得できなく困っていました。

それで、カレット部分の行高さを求めたくて
IDisplayPointer.GetLineInfo
を使いたかったのですが、情報が無くて困っていました。

おかげで、行高さ情報が取得できました。

どうもありがとうございました。

投稿時間:2005/11/08(Tue) 14:01
投稿者名:IMA
Eメール:
URL :
タイトル:
WebbrowserでOKでもIEでNGです
K.J.K.さんのアドバイスでフォームに埋め込んだWebbrowserコントロールでは
Set ids = WebBrowser1.Document でOKでしたが、

CreateObjectしたIEオブジェクトや、起動済みのIEオブジェクトの Set は
出来ませんでした。
Set ids = objIE.Document

→ 実行時エラー 型が一致しません。 となります。

? typename(objIE.Document)
HTMLDocument
となり、Webbrowserコントロールの

? typename(WebBrowser1.Document)
HTMLDocument
と同じです。

何か対処方法はあるのでしょうか? 

よろしくお願いします。

投稿時間:2005/11/08(Tue) 19:04
投稿者名:K.J.K.
Eメール:akiya@koalanet.ne.jp
URL :
タイトル:
Re: WebbrowserでOKでもIEでNGです
IEのは別プロセスになるので、論外では。

投稿時間:2005/11/09(Wed) 04:58
投稿者名:IMA
Eメール:
URL :
タイトル:
代替方法はないでしょうか?
> IEのは別プロセスになるので、論外では。
K.J.K.さんにそう言われるとあきらめるしかないですかね?

再度、得たい情報を整理すると
1.IEをデザインモードに変更しカレットを表示可能にしている。
2.そのカレット位置での行の下端位置(y)を知りたい。

やったこと
1.カレットの上端位置はGetCaretPosで取得できるが、行(文字)の高さ
 によりカレットの高さが変化するが、カレットの高さを取得できない
2.単純にカレット部の行位置を得るプロパティは上記のIDisplayServices
 で得るILineInfoしかないようである。
3.ベースフォントの高さも求まるが、当然これより大小の文字行があるので
 却下

宜しくお願いします

投稿時間:2005/11/09(Wed) 09:06
投稿者名:K.J.K.
Eメール:akiya@koalanet.ne.jp
URL :
タイトル:
Re: 代替方法はないでしょうか?
> > IEのは別プロセスになるので、論外では。
> K.J.K.さんにそう言われるとあきらめるしかないですかね?

まず、自分で判断しましょう。私は、IDisplayServiceなどは
Marshalされないインターフェースになっている、と考えています、
が、確認したわけではありません。もしかしたらできるけど、
別の原因で上手く行っていないだけかも知れませんし。

> 再度、得たい情報を整理すると
> 1.IEをデザインモードに変更しカレットを表示可能にしている。
> 2.そのカレット位置での行の下端位置(y)を知りたい。

IEでのそれを調べる必要はあるのでしょうか?
どうしても上記のアプローチに拘るのならば、同プロセス内で
動くCOMオブジェクトとして実装することになるのでは。
ただ、そうすべきかどうかはちと怪しく思えます。

投稿時間:2005/11/09(Wed) 09:36
投稿者名:IMA
Eメール:
URL :
タイトル:
Re^2: 代替方法はないでしょうか?
アドバイスありがとうございます

> > 再度、得たい情報を整理すると
> > 1.IEをデザインモードに変更しカレットを表示可能にしている。
> > 2.そのカレット位置での行の下端位置(y)を知りたい。
>
> IEでのそれを調べる必要はあるのでしょうか?
> どうしても上記のアプローチに拘るのならば、同プロセス内で
> 動くCOMオブジェクトとして実装することになるのでは。
> ただ、そうすべきかどうかはちと怪しく思えます。

この目的は、テキストベースのHPを閲覧する際に、カレット行
に下線を引ければ読みやすく、行の上下移動も1行単位でできる、
また、注目語を色付けしたり、コメントを入れたり→いわゆる
dhtmlエディタ的に使いたいと思っているからです。

もう少し、自分で調べてみます。
お付き合いありがとうございました。

もう少し、調べてみます。

投稿時間:2005/11/09(Wed) 09:38
投稿者名:K.J.K.
Eメール:akiya@koalanet.ne.jp
URL :
タイトル:
Re: 代替方法はないでしょうか?
> > どうしても上記のアプローチに拘るのならば、同プロセス内で
> > 動くCOMオブジェクトとして実装することになるのでは。
> > ただ、そうすべきかどうかはちと怪しく思えます。
> この目的は、テキストベースのHPを閲覧する際に、カレット行
> に下線を引ければ読みやすく、行の上下移動も1行単位でできる、
> また、注目語を色付けしたり、コメントを入れたり→いわゆる
> dhtmlエディタ的に使いたいと思っているからです。

それならば、適応しますね。BHOなどのIEのAddInとして実装して
みてもいいのでは。同プロセス内で動作することが前提となって
いますし。

投稿時間:2005/11/09(Wed) 13:25
投稿者名:IMA
Eメール:
URL :
タイトル:
うまく行きそうです
> それならば、適応しますね。BHOなどのIEのAddInとして実装して
> みてもいいのでは。同プロセス内で動作することが前提となって
> いますし。

いつもいつも的確な情報ありがとうございます。
勉強不足で、十分な検証はこれからですが、簡単なIEツールバーを
作成し、IDisplayServicesも設定でき、行高さも取得できました。

これで、新たにカスタムブラウザーを作成しなくても既存のIEに
タダ乗り?して下線表示ブラウザーに出来そうです。

本当に、本当にありがとうございました。

独り言
少しでもK.J.K.の領域に近づきたいな m(_ _)m

投稿時間:2005/11/09(Wed) 14:59
投稿者名:K.J.K.
Eメール:akiya@koalanet.ne.jp
URL :
タイトル:
Re: うまく行きそうです
# 特に意味のある内容ではありません。

> 独り言
> 少しでもK.J.K.の領域に近づきたいな m(_ _)m

私を基準にするのは、あまり意味のないことでしょう。
単なる一介のアマチュアに過ぎませんし。そんな小さな目標で
はなく、もっと大きな野心を抱いてください。

それと、「人に訊く、人の言うことを聞く」よりも
「自分の目の前にあるものをよく見る」ことのが効果がありますよ。
# この場合、目の前にあるのはPCであったり開発ツールであったり。