AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Buchstaben an Internetexplorer senden

Ein Thema von Markus Effenberger · begonnen am 8. Aug 2017 · letzter Beitrag vom 10. Aug 2017
Antwort Antwort
Seite 1 von 2  1 2   
Markus Effenberger

Registriert seit: 2. Jul 2014
44 Beiträge
 
Delphi 10.3 Rio
 
#1

Buchstaben an Internetexplorer senden

  Alt 8. Aug 2017, 12:27
Hallo !

Mit dem folgenden Code möchte ich Tasten an einen Internetexplorer senden:

Delphi-Quellcode:
procedure SendeTaste(Empfaenger: THandle; Zeichencode: Integer);
begin
  PostMessage(Empfaenger, WM_KEYDOWN, Zeichencode, 0);
  PostMessage(Empfaenger, WM_KEYUP, Zeichencode, 0);
end;

procedure SendeWortBuchstabenweise(Empfaenger: THandle; Text: string);
Var i:integer;
begin
  for i := 1 to length(Text) do
    begin
      SendeTaste(Empfaenger,Ord(Text[i]));
    end;
end;
Der Aufruf erfolgt mit:

Delphi-Quellcode:
z.B.: SendeWortBuchstabenweise(HANDLE,Edit1.Text);
z.B.: SendeTaste(HANDLE,VK_TAB);

Wenn man das Handle von einem Editorfenster übergibt, funktioniert alles tadellos.
Buchstaben, Tabulatoren, Leertasten, Entertasten... Alles kommt im Editor an.

Wenn man allerdings an einen TAB im aktuellen Internetexplorer in Windows 7 sendet,
so kommt nur die Tabulatortaste an. Oder es kommt die Leertaste an, wenn der Focus auf einem Button liegt.

Wenn der Focus auf einem Eingabefeld liegt, kommen keine Buchstaben im Eingabefeld an.
Hat jemand eine Idee, wie man Buchstaben an ein Internet-explorer-fenster senden kann? (Chrome oder Edge wäre auch noch ok. Wobei ich dazusagen muss, dass im Chrome oder Opera z.B. nicht einmal die Tabulatortasten ankommen.)


Gruß,
Markus Effenberger
  Mit Zitat antworten Zitat
blablab

Registriert seit: 3. Jan 2006
509 Beiträge
 
Delphi 7 Enterprise
 
#2

AW: Buchstaben an Internetexplorer senden

  Alt 8. Aug 2017, 13:50
Wenn du nicht auf Delphi angewiesen bist würde ich sowas eher mit einer Skriptsprache wie zB AutoHotkeys machen.
  Mit Zitat antworten Zitat
Markus Effenberger

Registriert seit: 2. Jul 2014
44 Beiträge
 
Delphi 10.3 Rio
 
#3

AW: Buchstaben an Internetexplorer senden

  Alt 8. Aug 2017, 14:13
Wenn du nicht auf Delphi angewiesen bist würde ich sowas eher mit einer Skriptsprache wie zB AutoHotkeys machen.
Geht leider nur in Delphi

Man könnte natürlich Globale Tastendrücke machen.
Delphi-Quellcode:
procedure SendGlobalKeyPress(KChar: Char);
var
  Scan: SHORT;
  key: Byte;
begin
    key := Byte(KChar);
    Scan := MapVirtualKey(key, 0);
    keybd_event(key, Scan, 0, 0); //Status: Gedrückt
    keybd_event(key, Scan, KEYEVENTF_KEYUP, 0); //Status: Normal
end;
Die funktionieren aber leider nur, wenn das Browserfenster den Focus hat.
Ich würde gerne Tastendrücke an Browserfenster senden, die sich im Hintergrund befinden.

.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.169 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Buchstaben an Internetexplorer senden

  Alt 8. Aug 2017, 15:24
Was willst du eigentlich erreichen?
Dein Lösungsansatz kommt mit doch reichlich "da könnte es das eine oder ander Problem geben und mit dem nächsten Windows/IE-Update wird das alles nicht mehr funktionieren" an.

Wieso willst du Key an ein IE-Fenster senden?
Was soll damit erreicht werden?
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.093 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

AW: Buchstaben an Internetexplorer senden

  Alt 8. Aug 2017, 15:29
Sein anderes Thema war
http://www.delphipraxis.net/193498-f...dows-10-a.html

Hier ging es darum ein Browser-Tab in den Vordergrund zu bringen und etwas vorzuführen.

Ich persönlich würde das auch niemals so machen, da hast du nie Sicherheit dass das nach dem nächsten Update noch funktioniert. Im Browser am Benutzer vorbei etwas eingeben könnte auch etwas sein wo vielleicht manche Virenscanner drauf anspringen.

Ich sehe in anderer Software so etwas (wenn man etwas "erklären" will) immer durch kurze Videoclips gelöst.
  Mit Zitat antworten Zitat
Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
1.186 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Buchstaben an Internetexplorer senden

  Alt 8. Aug 2017, 15:38
Hi zusammen

@ Bernhard Geyer Schaut so aus, als wolle er da Formularfelder ausfüllen.

Nun ja, da man Word und die andern Officeprogramme mit Delphi fernsteuern kann, liegt der Gedanke nahe, dies auch mit dem IE auszutesten.
Ansonsten würde es sich anbieten, die betreffende Webseite nicht im IE zu laden, sondern in TWebbrowser

Gruss
Delbor
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch
  Mit Zitat antworten Zitat
madas

Registriert seit: 9. Aug 2007
207 Beiträge
 
#7

AW: Buchstaben an Internetexplorer senden

  Alt 8. Aug 2017, 15:46
Wenn du nicht auf Delphi angewiesen bist würde ich sowas eher mit einer Skriptsprache wie zB AutoHotkeys machen.
Geht leider nur in Delphi

Man könnte natürlich Globale Tastendrücke machen.
Delphi-Quellcode:
procedure SendGlobalKeyPress(KChar: Char);
var
  Scan: SHORT;
  key: Byte;
begin
    key := Byte(KChar);
    Scan := MapVirtualKey(key, 0);
    keybd_event(key, Scan, 0, 0); //Status: Gedrückt
    keybd_event(key, Scan, KEYEVENTF_KEYUP, 0); //Status: Normal
end;
Die funktionieren aber leider nur, wenn das Browserfenster den Focus hat.
Ich würde gerne Tastendrücke an Browserfenster senden, die sich im Hintergrund befinden.

.
Schade für C# hättest Du WatiN benutzen können. Für automatisierte Test mit Formularausfüllung ist diese Framework sehr geeignet.

madas
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#8

AW: Buchstaben an Internetexplorer senden

  Alt 8. Aug 2017, 15:48
Könntest Du statt des IEs auch den TWebBrowser innerhalb Deiner Anwandung nutzen?

Wenn ja, ließe sich die Eingabe programmintern lösen.

Weiß nicht mehr, wo ich das herhabe:
Delphi-Quellcode:
// ...HTML Formulare mit TWebBrowser automatisch ausfüllen lassen?
function WBFillForm(wb: TWebBrowser; sFieldName: string; sValue: string): Boolean;
var
  i, j: Integer;
  FormItem: Variant;
begin
  Result := False;
  //no form on document
  if wb.OleObject.Document.all.tags('FORM').Length = 0 then begin
    Exit;
  end;
  //count forms on document
  for I := 0 to wb.OleObject.Document.forms.Length - 1 do begin
    FormItem := wb.OleObject.Document.forms.Item(I);
    for j := 0 to FormItem.Length - 1 do begin
      try
        // when the fieldname is found, try to fill out
        if AnsiUpperCase(FormItem.Item(j).Name) = AnsiUpperCase(sFieldName) then begin
          FormItem.Item(j).Value := sValue;
          Result := True;
        end;
      except
        Exit;
      end;
    end;
  end;
end;
Ansonsten schau mal bitte hier: https://www.delphi-treff.de/tipps-tr...ern-ermitteln/

Dort ist beschrieben, wie Du an eine Instanz vom IE kommen kannst. Die bekommst Du dann als IWebbrowser2 (definiert in SHDocVw). Mit der so erhaltenen Instanz kannst Du dann alles machen, was die Schnittstelle zulässt.

Da der TWebBrowser in der gleichen Unit definiert ist, würde es mich wundern, wenn Du über einen so "gefundenen" IE nicht das Gleiche anstellen kannst, wie mit 'nem TWebBrowser.
  Mit Zitat antworten Zitat
Markus Effenberger

Registriert seit: 2. Jul 2014
44 Beiträge
 
Delphi 10.3 Rio
 
#9

AW: Buchstaben an Internetexplorer senden

  Alt 9. Aug 2017, 08:23
Könntest Du statt des IEs auch den TWebBrowser innerhalb Deiner Anwandung nutzen?
Nein leider nicht. Die TWebbrowserkomponente führt die Seite nicht richtig aus (z.B. keine Javascripts).
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.093 Beiträge
 
Delphi 10 Seattle Enterprise
 
#10

AW: Buchstaben an Internetexplorer senden

  Alt 9. Aug 2017, 08:38
Nur als Hinweis: Der TWebBrowser kapselt standardmäßig einen uralten Internet Explorer 7. Du kannst ihn auch auf die jeweils neuste IE-Version einstellen, der kommt eigentlich mit allem klar.

http://www.delphipraxis.net/192748-i...ml#post1371666
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:00 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz