HTMLのリンク先オブジェクトの存在確認

[戻る]
bun 2007/10/30(火) 15:40:06
HTMLのリンク先オブジェクトの存在確認に関する質問です。
  ShellExecute(NULL, "open", "ABC.htm", NULL, NULL, SW_SHOWNORMAL);
のような呼び出しにおいて、リンク先が正しく表示されたかどうかは、戻り値が
NULLであるかどうかをチェックするだけで分かります。

しかし、
  ShellExecute(NULL, "open", "ABC.htm#xyz", NULL, NULL, SW_SHOWNORMAL);
のような呼び出しの場合、ABC.htmが存在し、ABC.htm中に <A NAME="xyz">が存在
しなくても、ABC.htmの先頭を表示して、戻り値は正常終了となってしまいます。

このような場合に、<A NAME="xyz">が存在することを簡単に調べる方法はないで
しょうか。むろん、HTMLファイルなどはテキストファイルなので、自分で解析す
れば分かるでしょうが、それではあまりに大変すぎます。

bun 2007/10/31(水) 13:28:27
これだけ経っても音沙汰がないところを見ると駄目っぽいですね(T_T)
仕方ないので、テキストファイルを解析することにします。
ありがとうございました。

玲音 (st.lain) 2007/10/31(水) 14:55:41
やったことがないので発言を避けていましたが。

> ABC.htmの先頭を表示して、戻り値は正常終了となってしまいます。
ShellExecute()自体は戻り値が示すように、プロセスが立ったかどうかしか
判断しないので、アンカーについては考慮しないと思われます。


MSHTMLとか使用すればできるのでは、とか思ったりしてます。
(記事をざっと見ただけなので間違ってるカモ知れず)

>> 第 3 回 VC# で MSHTML テクノロジ
> http://www.microsoft.com/japan/msdn/academic/Articles/fun/03/
図7あたりが正にそれっぽいような感じカナ、と思われます。

>> Lightweight HTML Parsing using MSHTML
> http://www.codeguru.com/cpp/i-n/ieprogram/article.php/c4385/
MSHTMLとVC++でググった結果の記事です。他にも有用な
サイトは幾つか見つかります。

# PG掲示板なら首を長くして待つのをお勧めします。1日は結構短いかと。

bun 2007/11/02(金) 14:28:20
玲音 (st.lain) さん、どうもです。

すいません、この話は終わったものだと思っていて、今日見たらRESがついてたので、あ
わててお返事させていただいています。

私が最初に求めていたのは、ABC.htm に <A NAME="xyz">だけがあった場合に、
  ABC.htm#xyzの呼び出しが成功し、
  ABC.htm#xxxの呼び出しがエラー
となるようなAPIでした。
あるなら、即返事があるだろうと見越して、確かに返答待ち時間が短かったかもしれま
せん(^^;)

しかし、テキスト解析する前提なら、玲音 (st.lain)さんのおっしゃっている方法も一
理ありますね。まったく想定外の盲点でした。ただし、今回は検索対象のHTML自体が自
作であり、その自作HTMLのチェック用アプリという位置づけのため、検索対象文字列は
完全に定型様式とできます。
定型文字列の検索であれば、普通の文字列検索の方が速いであろう事から、BM法のアル
ゴリズムを用いたテキスト検索を行うことにしました。
  BM法 : http://ja.wikipedia.org/wiki/BM%E6%B3%95

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

bun 2007/11/05(月) 11:20:00
[[解決]]
無事、作業が完了しました。
お世話になりました。

古いスレッドには追加発言できません。