Wow. Seems like an awful lot of work. Why not just use shell to start IE as any user you want using the Windows "RunAs" command, then attach to the window?
Two short lines of code.

Lonny Eachus
==========

Subject:
Re: [Wtr-general] launch broswer as another user ?
From:
Bret Pettichord <[EMAIL PROTECTED]>
Date:
Mon, 21 Aug 2006 14:55:10 -0500

Marco wrote:
Hi

has anyone had to come up with a way of launching an instance of ie from within a script but run as another user context?

I tried using cpau and I can launch a browser using a ruby script. I then run that script using
cpau -u <user> -p <password> -ex "cmd /K \"launchbrowser.rb <params>"" -enc -file launchbrowser.job

cpau -dec -file launchbrowser.job

whilst this works fine to run the script standalone when I try to run this script from within a testcase using

puts("Foo1")
exec "cpau -dec -file launchbrowser.job"
puts("Foo2")

the browser launches but the testcase dosen't run through to completition drops out to cmd prompt as soon as the exec finishes.

the plan was then to use ie.attach to attach to this browser window

I'm hoping someone else has an easier / better idea to do this sort of thing?
 
The code below should be a step in the right direction. I have been using this and expect contribute it to the main watir code base at some point.

Bret


# based on http://svn.instiki.org/instiki/trunk/test/watir/e2e.rb
# and http://rubyforge.org/pipermail/wtr-general/2005-November/004108.html

require 'watir'

class IEProcess
 def self.start
   startup_info = [68].pack('lx64')
   process_info = [0, 0, 0, 0].pack('llll')
      # TODO: make this portable
   startup_command = 'C:\Program Files\Internet Explorer\IEXPLORE.EXE'
      result = Win32API.new('kernel32.dll', 'CreateProcess', 'pplllllppp', 'l').
     call(
          nil,
          startup_command,
          0, 0, 1, 0, 0, '.', startup_info, process_info)
      # TODO print the error code, or better yet a text message
   raise "Failed to start IEXPLORE." if result == 0
      process_id = process_info.unpack('llll')[2]
   puts "Process ID: #{process_id}"
   self.new process_id
 end
<snip>


_______________________________________________
Wtr-general mailing list
Wtr-general@rubyforge.org
http://rubyforge.org/mailman/listinfo/wtr-general

Reply via email to