CppWebBrowser kopieren und speichern von daten



  • Hallo Leute

    ich habe mal eine Frage zu dem CppWebBrowser1...

    Wenn ich auf ein Link mit rechtsklick eigenschaften klicke und dann die url oder so kopieren möchte kopiert er das gar nicht im speicher...

    Muss ich diese Funktion abfangen und manuell schreiben mit copytoclipbord ??

    oder wie macht man das ???

    und dann nochmal eine Frage ich würde gerne das er mich fragt soll dieses Passwort gespeichert werden ... wie bei dem I net Explorer wenn man mails abfragt damit man das nicht immer neu eingeben muss...

    Bin für jede Hilfe dankbar

    Gruß Malcolm 🙂





  • Hallo

    danke dir cool wir da gleich mal ran und versuchen ich hoffe ich bekomme das hin :S

    sag mal weist du auch wie man das macht das er mich nach den Speichern fragt für email oder so damit man nicht immer alles neu eingeben muss (benutzername und passwort) wäre cool

    schönen Tag dir noch 🙂

    Malcolm



  • huhu 😞

    habe nun das ausprobiert und bekomme folgende fehler meldung:

    [C++ Fehler] Unit1.cpp(576): E2268 Aufruf der undefinierten Funktion 'Clipboard'
    [C++ Fehler] Unit1.cpp(576): E2288 Zeiger auf Struktur auf linker Seite von -> oder von ->* erforderlich*
    [C++ Fehler] Unit1.cpp(579): E2288 Zeiger auf Struktur auf linker Seite von -> oder von ->* erforderlich*
    [C++ Fehler] Unit1.cpp(615): E2268 Aufruf der undefinierten Funktion 'Clipboard'
    [C++ Fehler] Unit1.cpp(619): E2268 Aufruf der undefinierten Funktion 'Clipboard'
    

    habe das #include <mshtml.h> oben mit rein getan

    #include <vcl.h>
    #include <mshtml.h>
    #pragma hdrstop
    

    und den quellcode von der seite:

    void CopySelectionToClipboard(TCppWebBrowser* pCppWebBrowser, bool blHtml)
    {
      IHTMLDocument2 *HTMLDocument = NULL;
      LONG ilFramesCount = 0;
      wchar_t* wcpSelectedText;
    
      // Falls eine Seite geladen:
      if(SUCCEEDED(pCppWebBrowser->Document->QueryInterface(
        IID_IHTMLDocument2, (LPVOID*)&HTMLDocument)))
      {
        // ggf. auch Frames-Code extrahieren:
        IHTMLFramesCollection2 *pFrames = NULL;
        if(SUCCEEDED(HTMLDocument->get_frames(&pFrames)))
        {
          // Anzahl der Frames bestimmen:
          pFrames->get_length(&ilFramesCount);
    
          if(ilFramesCount == 0)
          {
            IHTMLSelectionObject* pSelection;
            if(SUCCEEDED(HTMLDocument->get_selection(&pSelection)))
            {
              IHTMLTxtRange* pRange;
              if(SUCCEEDED(pSelection->createRange((LPDISPATCH*)&(pRange))))
              {
                if(blHtml)
                {
                  if(SUCCEEDED(pRange->get_htmlText(&wcpSelectedText)))
                    Clipboard()->SetTextBuf(AnsiString(wcpSelectedText).c_str());
                }
                else if(SUCCEEDED(pRange->get_text(&wcpSelectedText)))
                  Clipboard()->SetTextBuf(AnsiString(wcpSelectedText).c_str());
                pRange->Release();
              }
              pSelection->Release();
            }
          }
          else
          {
            VARIANT vFrame;
            VARIANT ret;
            vFrame.vt = VT_UINT;
            // für jedes Frame:
            for(LONG ilFrameIndex = 0; ilFrameIndex < ilFramesCount; ilFrameIndex++)
            {
              vFrame.lVal = ilFrameIndex;
              if(SUCCEEDED(pFrames->item(&vFrame, &ret)))
              {
                // Zeiger auf IHTMLWindow2 des Frames besorgen:
                IHTMLWindow2 *pWindow = NULL;
                if(SUCCEEDED(ret.pdispVal->QueryInterface(IID_IHTMLWindow2,
                  (LPVOID*)&pWindow)))
                {
                  // Zeiger auf IHTMLDocument2 des Frames besorgen:
                  IHTMLDocument2 *pDoc = NULL;
                  if(SUCCEEDED(pWindow->get_document(&pDoc)))
                  {
                    IHTMLSelectionObject* pSelection;
                    if(SUCCEEDED(pDoc->get_selection(&pSelection)))
                    {
                      IHTMLTxtRange* pRange;
                      if(SUCCEEDED(pSelection->createRange((LPDISPATCH*)&(pRange))))
                      {
                        if(blHtml)
                        {
                          if(SUCCEEDED(pRange->get_htmlText(&wcpSelectedText)) &&
                            AnsiString(wcpSelectedText).Trim() != EmptyStr)
                            Clipboard()->SetTextBuf(AnsiString(wcpSelectedText).c_str());
                        }
                        else if(SUCCEEDED(pRange->get_text(&wcpSelectedText)) &&
                          AnsiString(wcpSelectedText).Trim() != EmptyStr)
                          Clipboard()->SetTextBuf(AnsiString(wcpSelectedText).c_str());
                        pRange->Release();
                      }
                      pSelection->Release();
                    }
                    pDoc->Release();
                  }
                  pWindow->Release();
                }
              }
            }
          }
          pFrames->Release();
        }
        HTMLDocument->Release();
      }
    }
    //---------------------------------------------------------------------------
    

    Kann mir jemand weiter helfen das man im CppWebBrowser1 kopieren kann ???
    😞

    danke schön 😕

    Malcolm



  • Cursor auf 'Clipboard', F1 drücken, Clipboard(VCL) auswählen, "Unit: Clipbrd.hpp" lesen.

    Ausserdem bitte die Faustregel beachten: ein Thema pro Thread, ein Thread pro Thema. Danke!



  • hallo jansen

    habe ich gemacht aber da steht doch nix..

    Unit
    
    Clipbrd
    
    Kategorie
    
    Zwischenablage
    
    extern PACKAGE TClipboard* __fastcall Clipboard(void);
    
    Beschreibung
    
    Anwendungen interagieren über eine einzelne Instanz von TClipboard mit der System-Zwischenablage. Wenn in der Anwendung die Windows-Zwischenablage zuvor noch nicht verwendet wurde, wird durch den Aufruf von Clipboard eine neue Tclipboard-Instanz erstellt. Wurde bereits auf die Zwischenablage zugegriffen, gibt Clipboard das bereits erstellte TClipboard-Objekt zurück.
    
    Wenn Sie Clipboard und das TClipboard-Objekt verwenden wollen, fügen Sie Clipbrd.hpp in das Quelltextmodul ein.
    

    hm ich habe mir das beispiel geladen aber ich bekomme das so nicht hin wer weis wie man das genau macht sonst gibt ihr doch auch genaue beschreibung raus wie man das amcht sry aber ich weis net wie man das macht bitte helft mir 😕



  • Da steht doch

    Unit Clipbrd

    Das bedeutet eben, dass du die Clipbrd.hpp mit inkludieren mußt.



  • hallo

    das habe ich doch aber schau

    #include <vcl.h>
    #include <mshtml.h>
    #include <clipbrd.hpp>
    #pragma hdrstop
    

    habe sonst gedacht das man ein popup menü einbaut im webbrowser rechtsklick und dann speichern nur was für ein code kommt denn da rein ???

    gruß Malcolm



  • Ist es immer noch der gleiche Fehler wie oben, oder was genau funktioniert nicht?



  • also bin die ganze zeit dabei das hin zu bekommen...

    ich habe das in moment so aus den beispiel raus genommen der code sieht so aus:

    void __fastcall TForm1::Kopieren1Click(TObject *Sender)
    {
     // Falls ganze Seite kopieren...
      TVariant vIn, vOut;
      if(Sender == Kopieren1)
      {
        // Alles markieren:
        CppWebBrowser1->ControlInterface->ExecWB(Shdocvw_tlb::OLECMDID_SELECTALL,
          Shdocvw_tlb::OLECMDEXECOPT_DODEFAULT, &vIn, &vOut);
      }
    
       CopySelectionToClipboard(CppWebBrowser1, Sender == menuCopyToClipboardAsHtml ||
       Sender == menuMainCopyToClipboardAsHtml);
    
      // Falls ganze Seite kopiert wurde...
      if(Sender == Kopieren1)
      {
        // Auswahl aufheben:
        CppWebBrowser1->ControlInterface->ExecWB(Shdocvw_tlb::OLECMDID_CLEARSELECTION,
          Shdocvw_tlb::OLECMDEXECOPT_DODEFAULT, &vIn, &vOut);
      }
    }
    //---------------------------------------------------------------------------
    

    Fehler:

    [C++ Fehler] Unit1.cpp(557): E2268 Aufruf der undefinierten Funktion 'CopySelectionToClipboard'
      [C++ Fehler] Unit1.cpp(557): E2451 Undefiniertes Symbol 'menuCopyToClipboardAsHtml'
      [C++ Fehler] Unit1.cpp(558): E2451 Undefiniertes Symbol 'menuMainCopyToClipboardAsHtml'
    

    so habe das in ein popup menü gemacht den code und den cppwebbrowser mit den popup belegt er zeigt mir den aber nicht an wenn ich in den webbrowser mit rechts klicke und dann weis ich nciht was diese undefinierten funktionen sein solln 😞

    Ich habe nichtmal ne ahnung was genau ich amchenb muss das is es ja wnen mir wenigstens jemand sagen würde wie der aufbau der Funktion is könnte ich nach was suchen hmm...

    Hoffe auf eine nachricht 😞

    Malcolm



  • Hallo

    Die Fehlermeldung der unbekannten Funktion ist doch eindeutig : entweder hast du vergessen die entsprechende Funktion mit in dein Quellcode zu kopieren oder du hast sie an eine Stelle kopiert wo sie nicht für den Aufruf erreichbar ist. Ich empfehle dringends C++ Grundlagen in Sachen Funktionen und Sichtbarkeit durchzuarbeiten.

    Die beiden nachfolgenden Fehlermeldungen sind ähnlicher Natur, nur das hier wohl Komponenten unbekannt sind.

    bis bald
    akari


Anmelden zum Antworten