Fix Outlook COM connection: use Activator and clear error message
- Try GetActiveObject first, then Activator.CreateInstance as fallback - Use Type.GetTypeFromProgID for version-independent COM activation - Clear error message explaining possible causes including New Outlook - NuGet Interop v15 is fine - it's the assembly version, works with all Outlook versions (2013-2024) via COM interface compatibility Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
235960f450
commit
9aa6ccb224
|
|
@ -26,21 +26,36 @@ namespace StarfaceOutlookSync.Services
|
||||||
{
|
{
|
||||||
if (_outlookApp != null) return _outlookApp;
|
if (_outlookApp != null) return _outlookApp;
|
||||||
|
|
||||||
|
// Versuch 1: Laufende Outlook-Instanz finden
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
// Versuche laufende Outlook-Instanz zu finden
|
|
||||||
_outlookApp = (Outlook.Application)GetActiveComObject("Outlook.Application");
|
_outlookApp = (Outlook.Application)GetActiveComObject("Outlook.Application");
|
||||||
_weStartedOutlook = false;
|
_weStartedOutlook = false;
|
||||||
}
|
|
||||||
catch
|
|
||||||
{
|
|
||||||
// Outlook starten falls nicht laufend
|
|
||||||
_outlookApp = new Outlook.Application();
|
|
||||||
_weStartedOutlook = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
return _outlookApp;
|
return _outlookApp;
|
||||||
}
|
}
|
||||||
|
catch { }
|
||||||
|
|
||||||
|
// Versuch 2: Outlook per COM starten
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var outlookType = Type.GetTypeFromProgID("Outlook.Application");
|
||||||
|
if (outlookType != null)
|
||||||
|
{
|
||||||
|
_outlookApp = (Outlook.Application)Activator.CreateInstance(outlookType);
|
||||||
|
_weStartedOutlook = true;
|
||||||
|
return _outlookApp;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch { }
|
||||||
|
|
||||||
|
throw new InvalidOperationException(
|
||||||
|
"Outlook Classic konnte nicht gefunden werden.\n\n" +
|
||||||
|
"Moegliche Ursachen:\n" +
|
||||||
|
"- Outlook Classic ist nicht installiert\n" +
|
||||||
|
"- Outlook Classic ist nicht gestartet\n" +
|
||||||
|
"- Das neue Outlook wird verwendet (wird noch nicht unterstuetzt)\n\n" +
|
||||||
|
"Bitte Outlook Classic starten und erneut versuchen.");
|
||||||
|
}
|
||||||
|
|
||||||
public List<string> GetContactFolderPaths()
|
public List<string> GetContactFolderPaths()
|
||||||
{
|
{
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue