<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[TCppWebBrowser und Link unter Maus erkennen]]></title><description><![CDATA[<p>Mit folgendem Code ermittel ich den Link unterhalb des Mauszeigers:</p>
<pre><code class="language-cpp">AnsiString TAcDocHandler::getUrlUnderMouse(POINT mousePos) {
  AnsiString url = &quot;&quot;;
  TCppWebBrowser *wbMain = browser;
  IHTMLDocument2 *pDoc = NULL;
  IHTMLElement *pElement = NULL;
  IHTMLAnchorElement *pAnchor = NULL;
  bool blUrl = false;

  try
  {
    if(wbMain-&gt;Document == NULL)
      return &quot;&quot;;

    WideString wURL;
    POINT p = mousePos;

    if(SUCCEEDED(wbMain-&gt;Document-&gt;QueryInterface(IID_IHTMLDocument2,(LPVOID*)&amp;pDoc)))
    {
      if(pDoc == NULL)
        return &quot;&quot;;

      //GetCursorPos(&amp;p);
      p = wbMain-&gt;ScreenToClient(p);
      if(SUCCEEDED(pDoc-&gt;elementFromPoint(p.x, p.y, &amp;pElement)))
      {
        if(pElement == NULL)
          return &quot;&quot;;

        if(SUCCEEDED(pElement-&gt;QueryInterface(IID_IHTMLAnchorElement,(LPVOID*)&amp;pAnchor)))
        {

          if(pAnchor == NULL)
            return &quot;&quot;;

          if(SUCCEEDED(pAnchor-&gt;get_href(&amp;wURL)))
          {
            blUrl = true;
            url = AnsiString(wURL);
          }
        }
      }
    }
  }
  __finally
  {
    if(!blUrl)
      url = &quot;&quot;;
    if(pDoc != NULL)
      pDoc-&gt;Release();
    if(pElement != NULL)
      pElement-&gt;Release();
    if(pAnchor != NULL)
      pAnchor-&gt;Release();
    return url;
  }
}
</code></pre>
<p>Das klappt eigentlich auch immer, aber bei einigen Links leider nicht: Wenn man auf <a href="http://google.de" rel="nofollow">google.de</a> nach sport sucht, wird als erstes Ergebnis ein Link auf <a href="http://sport.de" rel="nofollow">sport.de</a> ausgeworfen. Wenn ich die Maus über diesem Link habe und dann den Link unter der Maus ermitteln will, schlägt die Zeile</p>
<pre><code class="language-cpp">if(SUCCEEDED(wbMain-&gt;Document-&gt;QueryInterface(IID_IHTMLDocument2,(LPVOID*)&amp;pDoc)))
</code></pre>
<p>immer fehl und ich bekomme den Link nicht. Mit dem Link darunter auf Sport1 - Fußball Bundesliga klappt das, ich bekomme die Url. Auf der Ergebnisseite gibt es etliche Links, die funktionieren, und etliche, die nicht funktionieren. Woran kann das liegen, und wie komme ich an die Links, die ich momentan nicht bekomme?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/81906/tcppwebbrowser-und-link-unter-maus-erkennen</link><generator>RSS for Node</generator><lastBuildDate>Wed, 01 Jul 2026 03:06:45 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/81906.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 05 Aug 2004 12:34:21 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to TCppWebBrowser und Link unter Maus erkennen on Thu, 05 Aug 2004 12:34:21 GMT]]></title><description><![CDATA[<p>Mit folgendem Code ermittel ich den Link unterhalb des Mauszeigers:</p>
<pre><code class="language-cpp">AnsiString TAcDocHandler::getUrlUnderMouse(POINT mousePos) {
  AnsiString url = &quot;&quot;;
  TCppWebBrowser *wbMain = browser;
  IHTMLDocument2 *pDoc = NULL;
  IHTMLElement *pElement = NULL;
  IHTMLAnchorElement *pAnchor = NULL;
  bool blUrl = false;

  try
  {
    if(wbMain-&gt;Document == NULL)
      return &quot;&quot;;

    WideString wURL;
    POINT p = mousePos;

    if(SUCCEEDED(wbMain-&gt;Document-&gt;QueryInterface(IID_IHTMLDocument2,(LPVOID*)&amp;pDoc)))
    {
      if(pDoc == NULL)
        return &quot;&quot;;

      //GetCursorPos(&amp;p);
      p = wbMain-&gt;ScreenToClient(p);
      if(SUCCEEDED(pDoc-&gt;elementFromPoint(p.x, p.y, &amp;pElement)))
      {
        if(pElement == NULL)
          return &quot;&quot;;

        if(SUCCEEDED(pElement-&gt;QueryInterface(IID_IHTMLAnchorElement,(LPVOID*)&amp;pAnchor)))
        {

          if(pAnchor == NULL)
            return &quot;&quot;;

          if(SUCCEEDED(pAnchor-&gt;get_href(&amp;wURL)))
          {
            blUrl = true;
            url = AnsiString(wURL);
          }
        }
      }
    }
  }
  __finally
  {
    if(!blUrl)
      url = &quot;&quot;;
    if(pDoc != NULL)
      pDoc-&gt;Release();
    if(pElement != NULL)
      pElement-&gt;Release();
    if(pAnchor != NULL)
      pAnchor-&gt;Release();
    return url;
  }
}
</code></pre>
<p>Das klappt eigentlich auch immer, aber bei einigen Links leider nicht: Wenn man auf <a href="http://google.de" rel="nofollow">google.de</a> nach sport sucht, wird als erstes Ergebnis ein Link auf <a href="http://sport.de" rel="nofollow">sport.de</a> ausgeworfen. Wenn ich die Maus über diesem Link habe und dann den Link unter der Maus ermitteln will, schlägt die Zeile</p>
<pre><code class="language-cpp">if(SUCCEEDED(wbMain-&gt;Document-&gt;QueryInterface(IID_IHTMLDocument2,(LPVOID*)&amp;pDoc)))
</code></pre>
<p>immer fehl und ich bekomme den Link nicht. Mit dem Link darunter auf Sport1 - Fußball Bundesliga klappt das, ich bekomme die Url. Auf der Ergebnisseite gibt es etliche Links, die funktionieren, und etliche, die nicht funktionieren. Woran kann das liegen, und wie komme ich an die Links, die ich momentan nicht bekomme?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/575950</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/575950</guid><dc:creator><![CDATA[Ickis]]></dc:creator><pubDate>Thu, 05 Aug 2004 12:34:21 GMT</pubDate></item><item><title><![CDATA[Reply to TCppWebBrowser und Link unter Maus erkennen on Thu, 05 Aug 2004 14:03:03 GMT]]></title><description><![CDATA[<p>Ob es klappt oder nicht, scheint von der Position der Maus überhalb des Links abzuhängen: Klickt man mit der rechten Maustaste auf die fett hervorgehobenen Worte, funktioniert die Navigation nicht, klickt man auf den nicht hervorgehobenen Bereich, geht alles. Kann man wunderbar beim ersten Link der erwähnten Suche nachvollziehen: klicken auf &quot;Sport&quot;: Fehler. Klicken auf &quot;.de&quot;: Alles in Ordnung.<br />
Wie komme ich an den Link unter &quot;Sport&quot;?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/576040</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/576040</guid><dc:creator><![CDATA[Ickis]]></dc:creator><pubDate>Thu, 05 Aug 2004 14:03:03 GMT</pubDate></item><item><title><![CDATA[Reply to TCppWebBrowser und Link unter Maus erkennen on Thu, 05 Aug 2004 14:31:30 GMT]]></title><description><![CDATA[<p>Bei mir kommt die Codeausführung nicht über</p>
<pre><code class="language-cpp">if (SUCCEEDED(pElement-&gt;QueryInterface(IID_IHTMLAnchorElement,(LPVOID*)&amp;pAnchor)))
</code></pre>
<p>hinaus. Die Funktion SUCEEEDED nicht. D.h. <strong>Sport</strong> ist kein Anchorelement, nur .de .</p>
<p>Der HTML Code sieht aber an der Stelle wie folgt aus:</p>
<pre><code>&lt;a href=http://www.sport.de/&gt;&lt;b&gt;Sport&lt;/b&gt;.de&lt;/a&gt;
</code></pre>
<p>Vermutung: Wahrscheinlich wird duch das &lt;b&gt;...&lt;/b&gt; die Erkennung des Anchorelements ausgehebelt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/576064</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/576064</guid><dc:creator><![CDATA[F98]]></dc:creator><pubDate>Thu, 05 Aug 2004 14:31:30 GMT</pubDate></item><item><title><![CDATA[Reply to TCppWebBrowser und Link unter Maus erkennen on Thu, 05 Aug 2004 14:46:03 GMT]]></title><description><![CDATA[<p>F98 schrieb:</p>
<blockquote>
<p>Vermutung: Wahrscheinlich wird duch das &lt;b&gt;...&lt;/b&gt; die Erkennung des Anchorelements ausgehebelt.</p>
</blockquote>
<p>Ja, vermute ich auch. Aber wie kann ich das trotzdem hinbekommen? Es muß doch eine Möglichkeit geben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/576083</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/576083</guid><dc:creator><![CDATA[Ickis]]></dc:creator><pubDate>Thu, 05 Aug 2004 14:46:03 GMT</pubDate></item></channel></rss>