Webview2 sendkeys

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • doskabouter
  • Registratie: Oktober 2004
  • Laatst online: 22-05 16:58
Hoi allemaal,

ik ben al een tijdje aan het vechten met een webview2 control en krijg het niet gewonnen.
Het idee is om een website te besturen met muiskliks en key presses, maar die website mag alleen deze events van mijn software krijgen, het is niet de bedoeling dat gebruikers zelf kunnen klikken enz.
Daarom heb ik de webview2 disabled zodat het idd geen events krijgt, en enable hem alleen in de korte tijd dat mn software er clicks en keypresses naartoe stuurt.

Voor de muiskliks heb ik idd een werkbare oplossing gevonden:
code:
1
2
3
4
5
6
7
webView.Enabled = true;
webView.Focus();
Application.DoEvents();
Cursor.Position = new Point(x,y);
CursorHelper.DoLeftMouseClick();
webView.Parent.Focus();
webView.Enabled = false;

Dit werkt behoorlijk stabiel.

Het enige is dat ik dat voor keypresses niet voor elkaar krijg, nu heb ik:
code:
1
2
3
4
5
webView.Enabled = true;
Application.DoEvents();
webView.Focus();
Application.DoEvents();
sendKeys("aaab");

maar daarna loop ik vast

Ik weet nl niet wanneer ik mn control weer moet disablen, en wil dat liever niet met timers doen, responsetijden zijn nl moeilijk in te schatten met browsers.
Als ik een
code:
1
webView.Enabled=false
na de sendkeys doe (of met een extra
code:
1
Application.DoEvents();
) is het te vroeg en komen de keys niet aan in de webvew.
Ook geprobeerd om de webView_Key* events af te vangen, maar deze worden niet afgevuurd door de webview component.
WebView's wndProc overriden had ook geen zin, de messages die voorbijkomen geven geen enkele hint over wanneer de keys verstuurt/verwerkt zijn

Relevante info: vs2019 met een winforms applicatie op .NET Framework (verschillende versies geprobeerd maar ze leverden allemaal hetzelfde niet-werkende resultaat)

Het grote voordeel van windows is dat je meer dos-boxen kan openen

Alle reacties


Acties:
  • +1 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Laatst online: 22-05 08:46

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

Zonder je te willen ontmoedigen: geef dit ingeslagen pad gerust op. Dit is echt, écht een dood eind. En daar ben je stapje-bij-beetje zelf ook achter aan 't komen. Dit is niet waar de webview voor bedoeld is en je bent een vierkant blokje in een rond gaatje aan 't meppen.

Waar jij naar moet kijken is frameworks die hiervoor bedoeld zijn zoals, bijvoorbeeld, Selenium. Wat natuurlijk nóg beter is is wanneer de andere partij een (web) API biedt zodat je helemáál niet hoeft te klooien met een UI waar elk moment iets in aangepast kan worden waarna jou software op z'n muil gaat :P

[ Voor 22% gewijzigd door RobIII op 16-03-2022 02:29 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij