harrise 2011-11-07 20:09
Hi,
We have been having some issues regarding moving the opened IExplorer window to the next monitor.
If there is no IExplorer open the code below works perfectly fine.
If there is already an IExplorer open behind the main application. the code below doesn't work.
The code is setting the correct monitor Id each time for the IExplorer to move to the next monitor. I couldn't see any problem with the code and also this was working fine yesterday and now its not?
'the main window of the application identified by processId has been assigned to the object Dim sys As IUltraMonSystem = New ULTRAMONLib.UltraMonSystem Dim mon As ULTRAMONLib.IUltraMonMonitor = Nothing
If sys.Monitors.Count > 1 Then Try mon = sys.Monitors.Item(CStr(lngUltraMonScreenIndex)) Catch ex As Exception mon = sys.Monitors.Item("1") End Try
objUltraMonWindow.Monitor = mon.ID
blnResult = objUltraMonWindow.ApplyChanges(ULTRAMONLib.WNDCHANGE.WNDCHANGE_RESIZE_TO_FIT) Else blnResult = True End If
Any help or suggestion would be appreciated. The code is in VB.NET. We are using a COM Wrapper to call in VB6 as the main application is in VB6.
Regards Elisa
|
harrise 2011-11-07 22:18
Just to add, I already have a Find method before executing the code above.
|
Christian Studer 2011-11-08 09:04
The problem is that when you launch the second IE instance, the actual window gets created in a different process, but because UltraMon looks for the window in the original process this doesn't work.
The best way to do this is to use the IE COM object to create and position the new IE instance: add a reference to the Microsoft Internet Controls COM object to your project, then use code like this:'create UltraMon System and Internet Explorer objects
Dim sys As IUltraMonSystem = New UltraMonSystem
Dim ie As New SHDocVw.InternetExplorer
'get target monitor
Dim mon As IUltraMonMonitor = sys.Monitors("2")
'position IE on that monitor, navigate to the desired website, and make the new IE instance visible
ie.Left = mon.Left
ie.Top = mon.Top
ie.Navigate("http://www.realtimesoft.com")
ie.Visible = TrueChristian Studer - www.realtimesoft.com
|
harrise 2011-11-08 18:42
it started working when I added a line of code below: Dim bGet As Boolean = objUltraMonWindow.GetForegroundWindow()
before the line:
objUltraMonWindow.Monitor = mon.ID
it looks like it was losing a focus.
but i will also try the above suggestion. thanks
|
harrise 2011-11-09 01:53
i manage to get this to work by adding the code below:
SetActiveWindow(objUltraMonWindow.HWnd) Dim bGet As Boolean = objUltraMonWindow.GetForegroundWindow()
it was losing the focus on the current open IEplorer.
All the changes I made including the flickering tweak works fine on my machine.
But for some odd reason all of this doesn't function properly on my colleagues PC, he has Ultramon installed both ( COM and the utility?)
I have also noticed that you have a VBScript from your website. Would it be worth trying the vbscript???
Cheers
|
harrise 2011-11-09 01:54
I only have the Ultramon Components installed on my PC. I did not installed the Ultramon software (desktop)
|
Christian Studer 2011-11-09 06:51
I would recommend using the approach with the IE COM object, getting the foreground window after launching a new IE instance and then moving that is unreliable, depending on timing/other applications running you may get the correct window or not.
Christian Studer - www.realtimesoft.com
|