Send text to current IE window? (auto form fill)

How can I send text to the current IE window?

I have this code, but it's only for webbrowser1, how can I convert it to work with the current IE window?
I want to auto complete a file upload form (see below)

procedure TForm1.Button2Click(Sender: TObject);
var
Doc: IHTMLDocument2;
Elements: IHTMLElementCollection;
Element: IHTMLElement;
InputElement: IHTMLInputElement;
I,j: Integer;
FormItem: Variant;
pch: PChar;
str1: string;
sk:tsendkeys;
IE2: IWebBrowser2;
sh: TShellWindows;
begin
str1:= 'hello';//convert input value to string
pch := PChar(str1);//type cast to pointer

Doc := WebBrowser1.Document as IHTMLDocument2;
//sh := TShellWindows.Create(self);
//IE2 := sh.item as IWEbBrowser2;
//doc:=(webbrowser1.document) as ihtmldocument2;

//sh := TShellWindows.Create(self);
//IE2 := sh.item as IWEbBrowser2;
//doc:=IE2.Document;

Elements := Doc.all;
for I := 0 to Elements.length - 1 do
begin
Element := Elements.item(I, EmptyParam) as IHtmlElement;
if Element.tagName = 'INPUT' then
begin
InputElement := Element as IHTMLInputElement;
if (SameText(InputElement.type_,'file')) and
(SameText(InputElement.Name, 'userfile1[]'))then
begin
FormItem:= InputElement;
FormItem.Focus;
//SendKeys(PCh);// NOTE the false flag
sk.SendKeys(PCh);
end;
end;
end;
end;//SetFilename



the form I am trying to complete is...

<form action="file-upload.php" method="POST" enctype="multipart/form-data">
 Send these files:<br>
 <input name="userfile1[]" type="file"><br>
 <input name="userfile2[]" type="file"><br>
 <input name="" type="text">
 <input type="submit" value="Send files">
</form>

many thnaks

Stu

PS

I've had this responce in VB (from fantasy1001), but I need it in Delphi :(

'This is vb code, very easy
Dim IE As Object
Dim i As Long
Set IE = CreateObject("Internetexplorer.Application")
IE.Visible = True
IE.Navigate ("http://yourip")
Do While Not IE.ReadyState = 4
  DoEvents
Loop
IE.Document.All("userfile1[]").Value = "input text 1"
IE.Document.All("userfile2[]").Value = "input text 2"
IE.Document.All("btnG").Click   'this need the name of the button


see: http://www.experts-exchange.com/Programming/Programming_Languages/Delphi/
LVL 1
stuayreAsked:
Who is Participating?

[Product update] Infrastructure Analysis Tool is now available with Business Accounts.Learn More

x
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

stuayreAuthor Commented:
0
geobulCommented:
Hi Stu,

I really doubt whether that VB code would work because input elements of type 'file' have no Value property that could be set that way. You can start a new IE window this way:

uses ComObj;

var
  IE: Variant;

procedure TForm1.Button1Click(Sender: TObject);
begin
  IE := CreateOleObject('Internetexplorer.Application');
  IE.Visible := True;
  IE.Navigate('http://swift400/sis/login.html');
  while not IE.ReadyState = 4 do Application.ProcessMessages;
  // simulate Tab key several times until your first element gets the focus
  // here you could simulate your keys for entering the first element
  // then Tab key again - next element
  // simulate keys for the second element
  // Tab key - text element gets the focus
  // tab key - the button gets the focus
  // simulate Space or Enter key to submit the form
end;

Regards, Geo
0
stuayreAuthor Commented:
thanks geo I'll give that a wirl
0
Become a Certified Penetration Testing Engineer

This CPTE Certified Penetration Testing Engineer course covers everything you need to know about becoming a Certified Penetration Testing Engineer. Career Path: Professional roles include Ethical Hackers, Security Consultants, System Administrators, and Chief Security Officers.

Eddie ShipmanAll-around developerCommented:
Really want to make your app shine with IE? Download AutoIt's DLL version and
import it's typelin and away you go on automating IE or any other program.
It will even work on the File fields of a web form...

http://www.hiddensoft.com/AutoIt/

I use it to login to Hotmail, Yahoo, and other web sites with one click.
0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
Eddie ShipmanAll-around developerCommented:
Oh, BTW, it's FREE...
0
stuayreAuthor Commented:
wow! AutoIT is amazing! thanks Eddie
0
Eddie ShipmanAll-around developerCommented:
Yeah, here's how I log in to Hotmail, of course username and password are fictitious.

  ShellExecute(0, 'open', PChar('http://login.passport.net/uilogin.srf?id=2'), '', '', SW_SHOW);
  AutoIt_WinWaitActive('Please sign in', '', 0);
  AUTOIT_Sleep(1500);

  AutoIt_Send('username@hotmail.com');
  AutoIt_Send('{TAB}');

  AutoIt_Send('password');
  AutoIt_Send('{ENTER}');
0
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Delphi

From novice to tech pro — start learning today.