https://bugs.winehq.org/show_bug.cgi?id=52044
Bug ID: 52044 Summary: Safe exambrowser needs msctfmonitor.dll Product: Wine Version: 6.21 Hardware: x86-64 URL: https://sourceforge.net/projects/seb/files/seb/SEB_3.3 .1/SEB_3.3.1.388_SetupBundle.exe OS: Linux Status: NEW Keywords: download Severity: normal Priority: P2 Component: -unknown Assignee: wine-bugs@winehq.org Reporter: xerox.xerox2000x@gmail.com Distribution: Debian
Created attachment 71055 --> https://bugs.winehq.org/attachment.cgi?id=71055 patches to add stub msctfmonitor
Follow-up of bug https://bugs.winehq.org/show_bug.cgi?id=51938
When you start the program an errormessagebox appears: MsCtfMonitor.dll assembly:<unknown assembly> type:<unknown type> member:(null)\n\n at (wrapper managed-to-native) SafeExamBrowser.Client.App.InitLocalMsCtfMonitor(int)\r\n at SafeExamBrowser.Client.App.OnStartup (System.Windows.StartupEventArgs e) [0x0000e] in <0234e4d933094aa59b63e70b5"..., -1, [(0,0)-(264,0)] 00000c50
Added patches for stub dll in attachment
Adding a stub dll for msctfmonitor works around it to run into next bug :(. I' ll send attached patches to wine-devel later. The next bug seems afaict not related to this one. An endless 'fixme SwitchDesktop' is spawned in the console, and the program keeps initializing forever
sha1sum SEB_3.3.1.388_SetupBundle.exe 6a0500976012e0ad31a5b143baa2131a6e44dd3c SEB_3.3.1.388_SetupBundle.exe
Note: Source is available at https://github.com/SafeExamBrowser/seb-win-refactoring
From SafeExamBrowser.Client/App.cs:
// We need to manually initialize a monitor in order to prevent Windows from automatically doing so and thus rendering an input lanuage // switch in the bottom right corner of the desktop. This must be done before any UI element is initialized or rendered on the screen. InitLocalMsCtfMonitor(ILMCM_CHECKLAYOUTANDTIPENABLED | ILMCM_LANGUAGEBAROFF);
instances.BuildObjectGraph(Shutdown); instances.LogStartupInformation();
var success = instances.ClientController.TryStart()
. . .
void shutdown() { instances.ClientController.Terminate(); instances.LogShutdownInformation();
UninitLocalMsCtfMonitor();
base.Shutdown(); }
Dispatcher.InvokeAsync(shutdown); }