czy możliwe jest zapisanie całego dokumentu załadowanego w Webbrowser (w Delphi) jako zwykłego pliku HTML z nowymi wartościami (mam na myśli wartości wprowadzane przez użytkownika w formularzach html tego dokumentu)? Potrzebuję tego do przeczytania tego dokumentu HTML z wszystkimi wartościami przy następnym użyciu aplikacji.Jak zapisać zawartość TWebBrowser, w tym wartości wprowadzone przez użytkownika?
6
A
Odpowiedz
7
Pewnie, że to możliwe!
Małe demo aplikacji, złożyć nowy wniosek formularzy VCL, upuścić TWebBrowser
, a TButton
i TMemo
na formularzu i użyć tego kodu (nie zapomnij, aby związać OnCreate
za formę i OnClick
dla przycisku)
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, OleCtrls, SHDocVw, StdCtrls,mshtml, ActiveX;
type
TForm1 = class(TForm)
WebBrowser1: TWebBrowser;
Button1: TButton;
Memo1: TMemo;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
//code snagged from about.com
procedure WBLoadHTML(WebBrowser: TWebBrowser; HTMLCode: string) ;
var
sl: TStringList;
ms: TMemoryStream;
begin
WebBrowser.Navigate('about:blank') ;
while WebBrowser.ReadyState < READYSTATE_INTERACTIVE do
Application.ProcessMessages;
if Assigned(WebBrowser.Document) then
begin
sl := TStringList.Create;
try
ms := TMemoryStream.Create;
try
sl.Text := HTMLCode;
sl.SaveToStream(ms) ;
ms.Seek(0, 0) ;
(WebBrowser.Document as IPersistStreamInit).Load(TStreamAdapter.Create(ms)) ;
finally
ms.Free;
end;
finally
sl.Free;
end;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
Doc : IHtmlDocument2;
begin
Doc := WebBrowser1.Document as IHtmlDocument2;
Memo1.Lines.Text := Doc.body.innerHTML;
end;
procedure TForm1.FormCreate(Sender: TObject);
var
Html : String;
begin
Html := 'change value of input and press Button1 to changed DOM<br/><input id="myinput" type="text" value="orgval"></input>';
WBLoadHTML(WebBrowser1, Html);
end;
end.
wyjściowa:
EDIT
Jako mjn wskazano, że wartości wejść nie będą wyświetlane. Można nadal można dostać swoją wartość mimo:
dodać te 2 linie do Button1.Click i zmienić HTML
onCreate:
Html := 'change value of input and press Button1 to changed DOM<br/><input id="myinput" type="password" value="orgval"></input>';
OnClick:
El := (Doc as IHtmlDocument3).getElementById('myinput') as IHtmlInputElement;
Memo1.Lines.Add(Format('value of password field = %s', [El.value]))
Powiązane problemy
- 1. Konwertuj datetime wprowadzone przez użytkownika do UTC
- 2. Ukryj dane wprowadzone przez użytkownika hasło poprosi
- 3. jak zapisać dane wprowadzone przez użytkownika na stronie formularza po wykonaniu skryptu?
- 4. Python 3: odbierać dane wprowadzone przez użytkownika w tym nowej linii znaków
- 5. Bash: sprawdź wprowadzone dane użytkownika
- 6. Sprawdź, czy wprowadzone przez użytkownika błędy nie są eleganckie.
- 7. Czy muszę odkażać dane wprowadzone przez użytkownika Laravel
- 8. jak uniknąć "Komunikat ostrzegawczy: NAs wprowadzone przez przymus" w as.numeric()
- 9. jak zaktualizować wprowadzone dane podstawowe wartości
- 10. Jak zapisać zawartość elementu div jako obrazu?
- 11. Zaktualizuj TWebBrowser w osobnym wątku?
- 12. Używanie Tidhttp z Twebbrowser
- 13. Jak zapisać zawartość edytora wbudowanego na serwerze? .
- 14. jak zapisać wygenerowaną zawartość DOMPDF do pliku?
- 15. Jak zapisać ustawienia użytkownika preferencji w Javie?
- 16. Jak zapisać bieżący kontekst użytkownika w Angular?
- 17. Jak uzyskać wartości wprowadzone w polu Filtered DataTable of Primefaces?
- 18. W tym zawartość zmiennej w filtrze Haml
- 19. Jak zapisać preferencje użytkownika w mojej aplikacji na iPhone'a?
- 20. MvcMailer: Mając dane wprowadzone przez użytkownika w widoku modelu, a następnie poprzez włożenie go do poczty
- 21. rura linux z wielu programów z prośbą o dane wprowadzone przez użytkownika
- 22. Jak zapisać wartości filtrów w zestawie narzędziowym WPF "rozszerzenie filtru"?
- 23. Jak zapobiegać odświeżeniu przez FormView wartości wprowadzonych przez użytkownika po uruchomieniu metody Insert Method?
- 24. Jak mogę zapisać zawartość OLEObject jako plik w sposób zautomatyzowany?
- 25. "NAs wprowadzone przez przymus" podczas analizy klastra w R
- 26. TCppWebBrowser kontra TWebBrowser
- 27. Niektóre modyfikacje na wzorze Buildera wprowadzone przez Joshua Bloch
- 28. Jak wyglądają zdefiniowane przez użytkownika klasy wartości z Java?
- 29. Czy istnieje ryzyko wstrzyknięcia, jeśli dane wprowadzone przez użytkownika nie zostały przesłane do bazy danych?
- 30. Jak sortować zawartość pliku w miejscu przez kolumnę?
Jeśli było to możliwe , aplikacja Delphi może pobrać wartości pól formularza, nawet zanim użytkownik prześle formularz HTML. Uwzględnianie poufnych danych, takich jak hasła. – mjn
@mjn, cóż, ale jest to możliwe. Możesz dość łatwo uzyskać oryginalne wartości wprowadzone przez użytkownika nawet z zamaskowanych pól wejściowych (takich jak hasła). Nie wiem, jak zapisać dokument, ale myślę, że będziesz musiał go zmodyfikować samodzielnie podczas zapisywania. – TLama
Jeśli to działa z polami wprowadzania typu hasła, nie ufałbym żadnej aplikacji, która używa wbudowanej przeglądarki internetowej do komunikowania się z witrynami internetowymi, na przykład za pomocą logowania OAuth. – mjn