Liebe myCSharp-Benutzer,
Mein Problem:
Der Drag & Drop von einer E-Mail aus Outlook 2010 funktioniert auf einem PC ohne Visual Studio nicht. Auf meinem Arbeitsrechner funktioniert alles supi.
Eine Exception (siehe Anhang) bekomme ich hier:
private void frmTest_DragDrop(object sender, DragEventArgs e)
{
try
{
EMAIL(e);
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
die Methode "EMAIL()":
private void EMAIL(DragEventArgs e)
{
try
{
Microsoft.Office.Interop.Outlook.Application oApp = new Microsoft.Office.Interop.Outlook.Application();
for (int i = 1; i <= oApp.ActiveExplorer().Selection.Count; i++)
{
Object temp = oApp.ActiveExplorer().Selection[i];
if (temp is Microsoft.Office.Interop.Outlook.MailItem)
{
Microsoft.Office.Interop.Outlook.MailItem mailItem = (temp as Microsoft.Office.Interop.Outlook.MailItem);
string subject = mailItem.Subject.Replace(":", "");
//Gewünschte Properties auslesen
string strMsg = "";
strMsg += mailItem.EntryID + Environment.NewLine;
strMsg += mailItem.Subject + Environment.NewLine;
strMsg += mailItem.Body + Environment.NewLine;
label1.Text = strMsg;
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
}
Ich schätze mal, dass auf dem PC irgendwas fehlt. Nur was und wie schaffe ich es das es Funktioniert.
Mit internetten Grüßen
BuTTers
Bei der Googlesuche findet man den Fehler bei Excel interop MissingMethodException.
Hier wird empfohlen das Zielframework von 4.5 auf 4.0 zu stellen... Ich weiß allerdings nicht in wie weit dich das bei deiner Anwendung einschränkt...
++Rekursion ++
(lat. , die) siehe Rekursion
Hallo BuTTers,
grundsätzlich gilt für Fehler, die nur auf bestimmten Rechnern auftreten: [FAQ] Programm läuft in anderer Umgebung nicht (richtig).
herbivore
Servus, evtl. fehlt dir einfach das VSTO 4.0 (Visual Studio Tools for Office 4.0). Einfach auf dem Zielrechner installieren.
Unsere Kunden werden dazu gezwungen die VSTO 4.0, .NET 4.0 und Office 2007 PIA Redist zu installieren, wenn die es nicht auf den Rechnern haben.
Aber deine Fehlermeldung sieht mehr danach aus, dass die angesprochene DLL eine Funktion nicht beinhaltet, die auf dem Entwicklungsrechner ist, also auf .NET Framework 4.0 umsteigen.
Aber warum schaust du überhaupt nach, welche Email selektiert ist.
Schau dir das DragEventArgs e genauer an. Es besitzt ein Property mit dem Namen Data (von Type System.Windows.Forms.IDataObject), wo du die nötigen Informationen raus lesen kannst, wie die Datei heißt, die du verschiebst und zusätzlich hast du den kompletten Stream der Datei, so dass unabhängig von Outlook die Datei komplett rekonstruieren kannst, also mit Stream Interfaces speichern.
Der direkte Zugriff über die COM Interface von Outlook ist oft anfällig für Fehler und bringt meistens einen zum verzweifeln, da es an guter Dokumentation & Beispielen sowohl im Netz, als auch an Büchern fehlen.
----ehm............