|
Erick Stover
Posts: 4
Joined: 2010-10-21
|
I just got this project dumped on me (old developer quit a week before project was due and hadn't actually worked on the project at all). I've been a web developer (asp.net) for a while but desktop development is relatively new to me.
Here is the situation I have:
There is a web page with three fields that needs to be filled with values from their local computer. I already have the ability to grab the values working. No worries there. The problem is autofilling those fields (field names: txtCat, txtMod, txtNum). The way I would normally parse through a series of controls on a page apparently isn't working in this context. Can someone at least point me in the right direction to fill those fields?
Thanks! |
|
Posted 21 Oct, 2010 09:45:40
|
|
Top
|
|
Andrei Smolin
Add-in Express team
Posts: 18825
Joined: 2006-05-11
|
Hi Erick,
Can you please provide more details? If that was not a pure asp.net question, we will try to help.
Andrei Smolin
Add-in Express Team Leader |
|
Posted 22 Oct, 2010 05:55:16
|
|
Top
|
|
Erick Stover
Posts: 4
Joined: 2010-10-21
|
no no, this was a purely Add-in Express related question. From a Internet Explorer Toolbar created with your plugin, how would I go about inserting a value into a form field on a page the user is at?
Say the value "steve" going into an input field with the id of "txtName".
In normal vb.net I know it would just be a matter of txtName.text = "steve" or looping through the controls to find "txtName" but I'm not sure how to actually access the displayed page/form from a created Add-in toolbar. That's the part that's not clicking with my brain. |
|
Posted 22 Oct, 2010 09:05:57
|
|
Top
|
|
Andrei Smolin
Add-in Express team
Posts: 18825
Joined: 2006-05-11
|
Hi Erick,
You can access the currently displayed page via the HTMLDocument property of the module. Probably, you'll need to set new values in the DownloadComplete, DocumentComplete or NavigateComplete2 event of the module.
Andrei Smolin
Add-in Express Team Leader |
|
Posted 22 Oct, 2010 12:48:00
|
|
Top
|
|
Erick Stover
Posts: 4
Joined: 2010-10-21
|
Got it working! Turns out it was much simpler than I was thinking it would be. For any future visitors, here is the working code attached to a button:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
While Me.HTMLDocument.readyState <> "complete"
'wait
End While
If Me.HTMLDocument.url = "http://www.darkhorizon.org/rftest.html" Then
Debug.WriteLine("outerHTML:" & Me.HTMLDocument.documentElement.outerHTML)
Dim wbd As mshtml.HTMLInputElement
For Each wbd In Me.HTMLDocument.getElementsByTagName("input")
Debug.WriteLine("DocObj: " & wbd.name)
Select Case wbd.name
Case "txtName"
wbd.value = "Mr. Crispy"
Case "txtNumber"
wbd.value = "904-867-5309"
End Select
Next
End If
End Sub
|
|
Posted 25 Oct, 2010 11:14:04
|
|
Top
|
|
Eugene Astafiev
Guest
|
Hi Erick,
Thank you for sharing your code for others! Good luck with your add-in project! |
|
Posted 25 Oct, 2010 11:18:35
|
|
Top
|
|
Erick Stover
Posts: 4
Joined: 2010-10-21
|
No problem at all!
One more quick (I hope) question....
Given the code above, say those tags are in a frame. How would I modify the Me.HTMLDocument.getElementsByTagName("input") line to account for that?
UPDATE!
Nevermind, I figured it out.
I first had to figure out the frame index number of the form I needed (it was 1, easy enough) then I had to modify the code as follows:
Dim wbd As mshtml.HTMLInputElement
Dim f1 As mshtml.IHTMLWindow2 = CType(Me.HTMLDocument.frames.item(1), mshtml.IHTMLWindow2)
Dim f2 As mshtml.HTMLDocument = CType(f1.document, mshtml.HTMLDocument)
For Each wbd In f2.getElementsByTagName("input")
Debug.WriteLine("DocObj: " & wbd.name)
Select Case wbd.name
Case "txtName"
wbd.value = "Mr. Crispy"
Case "txtNumber"
wbd.value = "904-867-5309"
End Select
Next
|
|
Posted 25 Oct, 2010 15:17:02
|
|
Top
|
|
Eugene Astafiev
Guest
|
Hi Erick,
Good news! Thank you for letting me know. |
|
Posted 26 Oct, 2010 03:33:34
|
|
Top
|
|