diff --git a/docs/changes.txt b/docs/changes.txt index bb79b65387..d1769863ed 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -178,7 +178,9 @@ Changes in behaviour not resulting in compilation errors, please read this! - wxMSW-specific wxAutomationObject::GetInstance() method now creates a new instance if needed instead of failing if the application providing the requested ProgID is not running. Pass wxAutomationInstance_UseExistingOnly - flag to it to revert to the old behaviour. + flag to it to revert to the old behaviour. It is also possible to use the + wxAutomationInstance_SilentIfNone flag to prevent the error message if no + currently running instances of this object are available. Changes in behaviour which may result in compilation errors diff --git a/include/wx/msw/ole/automtn.h b/include/wx/msw/ole/automtn.h index 63b9414d29..beae01b33e 100644 --- a/include/wx/msw/ole/automtn.h +++ b/include/wx/msw/ole/automtn.h @@ -33,7 +33,11 @@ enum wxAutomationInstanceFlags wxAutomationInstance_UseExistingOnly = 0, // Create a new instance if there are no existing ones. - wxAutomationInstance_CreateIfNeeded = 1 + wxAutomationInstance_CreateIfNeeded = 1, + + // Do not log errors if we failed to get the existing instance because none + // is available. + wxAutomationInstance_SilentIfNone = 2 }; /* diff --git a/interface/wx/msw/ole/automtn.h b/interface/wx/msw/ole/automtn.h index c351d20e88..916bc1b80d 100644 --- a/interface/wx/msw/ole/automtn.h +++ b/interface/wx/msw/ole/automtn.h @@ -31,7 +31,15 @@ enum wxAutomationInstanceFlags instance failed, we should call wxAutomationObject::CreateInstance() to create a new one. */ - wxAutomationInstance_CreateIfNeeded = 1 + wxAutomationInstance_CreateIfNeeded = 1, + + /** + Do not show an error message if no existing instance is currently + running. + + All other errors will still be reported as usual. + */ + wxAutomationInstance_SilentIfNone = 2 }; @@ -134,6 +142,10 @@ public: If attaching to an existing object failed and @a flags includes wxAutomationInstance_CreateIfNeeded flag, a new object will be created. + Otherwise this function will normally log an error message which may be + undesirable if the object may or may not exist. The + wxAutomationInstance_SilentIfNone flag can be used to prevent the error + from being logged in this case. Returns @true if a pointer was successfully retrieved, @false otherwise. diff --git a/src/msw/ole/automtn.cpp b/src/msw/ole/automtn.cpp index dce44ebc5a..12a46ffcad 100644 --- a/src/msw/ole/automtn.cpp +++ b/src/msw/ole/automtn.cpp @@ -545,8 +545,15 @@ bool wxAutomationObject::GetInstance(const wxString& progId, int flags) const } else { - wxLogSysError(hr, - _("Cannot get an active instance of \"%s\""), progId); + // Log an error except if we're supposed to fail silently when the + // error is that no current instance exists. + if ( hr != MK_E_UNAVAILABLE || + !(flags & wxAutomationInstance_SilentIfNone) ) + { + wxLogSysError(hr, + _("Cannot get an active instance of \"%s\""), + progId); + } } return false;