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ファイルなどはテキストファイルなので、自分で解析す
れば分かるでしょうが、それではあまりに大変すぎます。
これだけ経っても音沙汰がないところを見ると駄目っぽいですね(T_T)
仕方ないので、テキストファイルを解析することにします。
ありがとうございました。
やったことがないので発言を避けていましたが。
> 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日は結構短いかと。
玲音 (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
ありがとうございました。
無事、作業が完了しました。
お世話になりました。