bovender / XLToolbox

Daniel's XL Toolbox is an open-source add-in for Excel(R) that assists with scientific and technical data analysis and visualization.
https://www.xltoolbox.net
Apache License 2.0
53 stars 9 forks source link

Access is denied (73b4dc20) #21

Open bovender opened 8 years ago

bovender commented 8 years ago

This issue was submitted by the add-ins's exception handler.

Exception:

System.ComponentModel.Win32Exception (0x80004005): Access is denied
   at Bovender.Unmanaged.Pinvoke.OpenClipboard(IntPtr hWndNewOwner)
   at XLToolbox.Export.WorkingClipboard..ctor() in XLToolbox\Export\WorkingClipboard.cs:line 47
   at XLToolbox.Export.Exporter.ExportSelection(Preset preset, Double widthInPoints, Double heightInPoints, String fileName) in XLToolbox\Export\Exporter.cs:line 237
   at XLToolbox.Export.Exporter.ExportSelection(SingleExportSettings settings) in XLToolbox\Export\Exporter.cs:line 77
   at XLToolbox.Export.ViewModels.SingleExportSettingsViewModel.DoExport() in XLToolbox\Export\ViewModels\SingleExportSettingsViewModel.cs:line 201
   at XLToolbox.Export.ViewModels.SingleExportSettingsViewModel.DoConfirmFileName(FileNameMessageContent messageContent) in XLToolbox\Export\ViewModels\SingleExportSettingsViewModel.cs:line 268
   at XLToolbox.Export.ViewModels.SingleExportSettingsViewModel.<DoChooseFileName>b__17(FileNameMessageContent content) in XLToolbox\Export\ViewModels\SingleExportSettingsViewModel.cs:line 243
   at Bovender.Mvvm.Messaging.Message`1.<>c__DisplayClass2.<Send>b__0()
   at Bovender.Mvvm.Actions.FileDialogActionBase.Invoke(Object parameter)
   at System.Windows.Interactivity.TriggerBase.InvokeActions(Object parameter)
   at System.Windows.Interactivity.EventTriggerBase.OnEvent(EventArgs eventArgs)
   at System.Windows.Interactivity.EventTriggerBase.OnEventImpl(Object sender, EventArgs eventArgs)
   at Bovender.Mvvm.Messaging.Message`1.Send(T messageContent, Action`1 respond)
   at XLToolbox.Export.ViewModels.SingleExportSettingsViewModel.DoChooseFileName() in XLToolbox\Export\ViewModels\SingleExportSettingsViewModel.cs:line 238
   at XLToolbox.Export.ViewModels.SingleExportSettingsViewModel.<get_ChooseFileNameCommand>b__6(Object param) in XLToolbox\Export\ViewModels\SingleExportSettingsViewModel.cs:line 139
   at Bovender.Mvvm.DelegatingCommand.Execute(Object parameter)

Message: Access is denied

jbohling commented 8 years ago

I came across this error again today under the same use case (exporting a chart with "Export with settings..." option). I have attached a screenshot of the error reporting dialog and the corresponding log file in case they might be helpful.

screenclip

Complete text from error dialog:


System.ComponentModel.Win32Exception (0x80004005): Access is denied
   at Bovender.Unmanaged.Pinvoke.OpenClipboard(IntPtr hWndNewOwner)
   at XLToolbox.Export.WorkingClipboard..ctor() in XLToolbox\Export\WorkingClipboard.cs:line 47
   at XLToolbox.Export.Exporter.ExportSelection(Preset preset, Double widthInPoints, Double heightInPoints, String fileName) in XLToolbox\Export\Exporter.cs:line 237
   at XLToolbox.Export.Exporter.ExportSelection(SingleExportSettings settings) in XLToolbox\Export\Exporter.cs:line 77
   at XLToolbox.Export.ViewModels.SingleExportSettingsViewModel.DoExport() in XLToolbox\Export\ViewModels\SingleExportSettingsViewModel.cs:line 201
   at XLToolbox.Export.ViewModels.SingleExportSettingsViewModel.DoConfirmFileName(FileNameMessageContent messageContent) in XLToolbox\Export\ViewModels\SingleExportSettingsViewModel.cs:line 268
   at XLToolbox.Export.ViewModels.SingleExportSettingsViewModel.<DoChooseFileName>b__17(FileNameMessageContent content) in XLToolbox\Export\ViewModels\SingleExportSettingsViewModel.cs:line 243
   at Bovender.Mvvm.Messaging.Message`1.<>c__DisplayClass2.<Send>b__0()
   at Bovender.Mvvm.Actions.FileDialogActionBase.Invoke(Object parameter)
   at System.Windows.Interactivity.TriggerBase.InvokeActions(Object parameter)
   at System.Windows.Interactivity.EventTriggerBase.OnEvent(EventArgs eventArgs)
   at System.Windows.Interactivity.EventTriggerBase.OnEventImpl(Object sender, EventArgs eventArgs)
   at Bovender.Mvvm.Messaging.Message`1.Send(T messageContent, Action`1 respond)
   at XLToolbox.Export.ViewModels.SingleExportSettingsViewModel.DoChooseFileName() in XLToolbox\Export\ViewModels\SingleExportSettingsViewModel.cs:line 238
   at XLToolbox.Export.ViewModels.SingleExportSettingsViewModel.<get_ChooseFileNameCommand>b__6(Object param) in XLToolbox\Export\ViewModels\SingleExportSettingsViewModel.cs:line 139
   at Bovender.Mvvm.DelegatingCommand.Execute(Object parameter)

XLToolbox log file contents:


2016-06-16 14:57:27.0661|INFO|XLToolbox.Versioning.SemanticVersion|Current version: 7.0.0-beta.6
2016-06-16 14:57:27.0850|INFO|Bovender.UserSettings.UserSettingsBase|Loaded user settings from file 'C:\Users\MJGroup\AppData\Roaming\Daniel's XL Toolbox\settings.yml'
2016-06-16 14:57:49.6591|INFO|XLToolbox.Dispatcher|*** Execute ExportSelectionLast ***
2016-06-16 14:57:49.6591|INFO|XLToolbox.Export.QuickExporter|ExportSelection
2016-06-16 14:57:49.6746|INFO|XLToolbox.Export.QuickExporter|Preset.FromLastUsed: Png, 600 dpi, RGB, White canvas
2016-06-16 14:57:49.6901|INFO|Bovender.Unmanaged.DllManager|Complete path: 'C:\Users\MJGroup\AppData\Roaming\XLToolbox\lib\Win32\lcms2.dll'
2016-06-16 14:57:49.6996|INFO|Bovender.Unmanaged.DllManager|Complete path: 'C:\Users\MJGroup\AppData\Roaming\XLToolbox\lib\Win32\lcms2.dll'
2016-06-16 14:57:49.6996|INFO|XLToolbox.Export.ViewModels.SingleExportSettingsViewModel|DoChooseFileName
2016-06-16 14:57:49.7191|INFO|Bovender.Mvvm.Actions.ChooseFileSaveAction|ChooseFileSaveAction.GetDialog
2016-06-16 14:57:55.2736|INFO|XLToolbox.Export.ViewModels.SingleExportSettingsViewModel|DoConfirmFileName
2016-06-16 14:57:55.2786|INFO|XLToolbox.Export.ViewModels.SingleExportSettingsViewModel|Not confirmed
2016-06-16 14:57:57.8346|INFO|XLToolbox.Dispatcher|*** Execute ExportSelection ***
2016-06-16 14:57:57.8536|INFO|Bovender.Unmanaged.DllManager|Complete path: 'C:\Users\MJGroup\AppData\Roaming\XLToolbox\lib\Win32\lcms2.dll'
2016-06-16 14:57:57.8536|INFO|Bovender.Unmanaged.DllManager|Complete path: 'C:\Users\MJGroup\AppData\Roaming\XLToolbox\lib\Win32\lcms2.dll'
2016-06-16 14:58:03.4393|INFO|XLToolbox.Export.ViewModels.SingleExportSettingsViewModel|DoChooseFileName
2016-06-16 14:58:03.4473|INFO|Bovender.Mvvm.Actions.ChooseFileSaveAction|ChooseFileSaveAction.GetDialog
2016-06-16 14:58:06.3629|INFO|XLToolbox.Export.ViewModels.SingleExportSettingsViewModel|DoConfirmFileName
2016-06-16 14:58:06.3629|INFO|XLToolbox.Export.ViewModels.SingleExportSettingsViewModel|Confirmed
2016-06-16 14:58:06.3758|INFO|XLToolbox.Export.ViewModels.SingleExportSettingsViewModel|DoExport
2016-06-16 14:58:06.4349|INFO|XLToolbox.Export.ViewModels.SingleExportSettingsViewModel|Send process message
2016-06-16 14:58:06.4349|INFO|Bovender.Unmanaged.DllManager|Complete path: 'C:\Users\MJGroup\AppData\Roaming\XLToolbox\lib\Win32\freeimage.dll'
2016-06-16 14:58:06.4349|INFO|XLToolbox.Export.ViewModels.SingleExportSettingsViewModel|Export selection
2016-06-16 14:58:06.4508|INFO|XLToolbox.Export.Exporter|ExportSelection
2016-06-16 14:58:06.4508|INFO|XLToolbox.Export.Exporter|ExportSelection(preset, widthInPoints, heightInPoints, filename)
2016-06-16 14:58:06.4508|INFO|XLToolbox.Excel.ViewModels.SelectionViewModel|CopyToClipboard
2016-06-16 14:58:07.4839|FATAL|XLToolboxForExcel.ThisAddIn|Central exception hander callback: Bovender.ExceptionHandler.ManageExceptionEventArgs
bovender commented 8 years ago

Hi,

thank you very much for reporting this. After your initial but report, I have modified the code so that users get an error message that looks less like a crash and more like a... problem. Because it is a problem: In order to export a chart, the Toolbox copies that chart to the clipboard, then accesses the clipboard to get the chart in a particular format (enhanced metafile). Getting the chart from the clipboard involves asking the operating system for clipboard access. If access is denied (as in your case), some other program is blocking the clipboard, and there is no way to persuade the operating sytsem into letting us access the clipboard as well.

I have now implemented a strategy where the clipboard is accessed repeatedly and with increasing delays between attempts, hoping to increase the chance that the clipboard will eventually be released. This will be in the upcoming update (maybe even this weekend, let's see).

However I suspect that in your case whatever blocks the clipboard will keep blocking it. It would be helpful to know what it is that blocks it. The operating system won't tell. Do you have some sort of clipboard manager running by any chance?

Kind regards

Daniel