Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Text (Content) einer ms-help://-Adresse erhalten (https://www.delphipraxis.net/106705-text-content-einer-ms-help-adresse-erhalten.html)

Daniel 15. Jan 2008 11:38


Text (Content) einer ms-help://-Adresse erhalten
 
Moin,

ich habe die gültige URL einer lokalen Hilfe-Seite, beipsielsweise "ms-help://borland.bds5/devcommon/codeeditor_xml.html". Wie komme ich denn jetzt elegant an den zugehörigen Hilfe-Content?

Sicherlich kann ich den Weg über TWebBrowser.Navigate() gehen und mir dann den Source herausziehen, aber das sollte doch auch einfacher gehen. Einfach eine Indy-Komponente auf das Formular setzen hat leider nicht geklappt, da diese so ohne Weiteres nicht mit dem ms-help://-Protokoll klarkommt.

Jemand 'ne Idee, wie man dies bewerkstelligen könnte?

shmia 15. Jan 2008 11:44

Re: Text (Content) einer ms-help://-Adresse erhalten
 
Versuch mal:
Delphi-Quellcode:
Uses ...,UrlMon;
function DownLoadInternetFile(const Source, Dest : String): Boolean;
begin
   Result := URLDownloadToFile(nil,PChar(Source),PChar(Dest),0,nil) = 0
end;

if DownLoadInternetFile('ms-help://borland.bds5/devcommon/codeeditor_xml.html', 'C:\codeeditor_xml.html') then
begin
   // ok
end;

Daniel 15. Jan 2008 12:41

Re: Text (Content) einer ms-help://-Adresse erhalten
 
:-)
:thumb:
Danke Dir vielmals.

Ich habe es jetzt so gelöst, dass ich die Daten in einem Stream erhalte:

Delphi-Quellcode:
function DownLoadInternetFile( const URL : WideString; const outStream : TStream ) : boolean;
var Stream : IStream;
    Buffer : array of byte;
  numBytes : longint;
        hr : HRESULT;
begin
  SetLength( Buffer, 8192 );

  if (URLOpenBlockingStreamW( NIL, PWideChar(URL), Stream, 0, NIL) = S_OK) then
  begin
     hr:= Stream.Read (@Buffer[0], SizeOf(Buffer), @numBytes );
     while (hr = S_OK) do
     begin
       outStream.Write( Buffer[0], numBytes );
       hr:= Stream.Read (@Buffer[0], SizeOf(Buffer), @numBytes );
     end;

    result:= TRUE;
  end
  else
    result:= FALSE;

  SetLength( Buffer, 0 );
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:59 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz