Louis Naber
Posts: 6
Joined: 2018-08-04
|
The use case for my Add-In is to recover from navigation errors caused by network and server outage in an enterprise setting.
The design is to detect a navigation error and display a local page to indicate out-of-service. Then start a timer that triggers an http request to verify the server is available after which a recovery url is loaded.
It appears as if the timer task is not triggered which may be to IE 11 running another process to display the out-of-service page and thus losing the timer task.
Can the loadinmainprocess configuration set to true force the Add-In to remain active in a process? Or is there another design to provide this function?
Best
~ Louis |
|
Andrei Smolin
Add-in Express team
Posts: 19011
Joined: 2006-05-11
|
Hello Louis,
Loadinmainprocess doesn't support IE 11; we don't recommend using it at all.
You should use a broker application to support some global settings and to let your tabs (in different IE processes) communicate with each other. Please have a look in section Protected Mode, see the PDF file in the folder {Add-in Express}\Docs on your development PC.
Andrei Smolin
Add-in Express Team Leader |
|
Louis Naber
Posts: 6
Joined: 2018-08-04
|
I love the broker architecture you've included! I got it up and running quickly.
Is there a way for the AddOn to receive events from the broker? I'd need to have the broker perform the network checks and then trigger the AddOn once the recovery is ready which could be a long time.
Thanks
~ Louis |
|
Andrei Smolin
Add-in Express team
Posts: 19011
Joined: 2006-05-11
|
Hello Louis,
private uint WM_NETWORK_CHECK_IS_DONE = 0;
[DllImport("User32.dll", CharSet = CharSet.Auto)]
public static extern uint RegisterWindowMessage([MarshalAs(UnmanagedType.LPWStr)] string lpString);
[DllImport("User32.dll")]
public static extern int PostMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam);
private void IEBrokerModule_OnInitialize(object sender, ADXIEBrokerInitializeEventArgs e)
{
WM_NETWORK_CHECK_IS_DONE = RegisterWindowMessage("MyMessage_WM_NETWORK_CHECK_IS_DONE");
}
private void NotifyAllTabs(IntPtr myData)
{
foreach (ConnectionData connection in this.ActiveConnections)
{
PostMessage(connection.NativeWindowHandle, WM_NETWORK_CHECK_IS_DONE, myData, IntPtr.Zero);
}
}
Now you need to filter out and handle that message in the module's OnSendMessage.
Andrei Smolin
Add-in Express Team Leader |
|