public static string GenerateShortcutTargetPath() { string path = OutlookSupportFunction.GetOutlookApplicationPath() + "OUTLOOK.EXE"; return(path); }
private static List <Element> ConvertXML(string dirPath, XmlDocument xmlDoc) { List <Element> elementList = new List <Element>(); XmlNode xmlRootNode = xmlDoc.GetElementsByTagName(XML_ROOT)[0]; foreach (XmlNode xmlElement in xmlRootNode.ChildNodes) { try { Element element = new Element(); element.ID = new Guid(xmlElement.Attributes[XML_ELEMENT_GUID].Value); element.NoteText = xmlElement.Attributes[XML_ELEMENT_NOTETEXT].Value; element.Position = Int32.Parse(xmlElement.Attributes[XML_ELEMENT_POSITION].Value); element.IsExpanded = !Boolean.Parse(xmlElement.Attributes[XML_ELEMENT_ISCOLLAPSED].Value); element.Status = ElementStatus.Normal; switch (xmlElement.Name) { case XML_HEADING: element.Type = ElementType.Heading; element.AssociationURI = HeadingNameConverter.ConvertFromHeadingNameToFolderName(element); element.AssociationType = ElementAssociationType.Folder; element.FontColor = ElementColor.DarkBlue.ToString(); if (element.IsExpanded) { element.LevelOfSynchronization = 1; } else { element.LevelOfSynchronization = 0; } break; case XML_NOTE: case XML_LINK: case XML_MAIL: case XML_WORD: case XML_EXCEL: case XML_PPT: default: element.Type = ElementType.Note; element.LevelOfSynchronization = 0; break; } ; if (xmlElement.Attributes[XML_ELEMENT_ASSOCIATIONURI] != null) { element.AssociationURI = xmlElement.Attributes[XML_ELEMENT_ASSOCIATIONURI].Value; } if (xmlElement.Attributes[XML_ELEMENT_ASSOCIATIONTYPE] != null) { switch (xmlElement.Attributes[XML_ELEMENT_ASSOCIATIONTYPE].Value) { case XML_ELEMENT_ASSOCIATIONTYPE_FOLDERSHORTCUT: element.AssociationType = ElementAssociationType.FolderShortcut; break; case XML_ELEMENT_ASSOCIATIONTYPE_FILESHORTCUT: element.AssociationType = ElementAssociationType.FileShortcut; break; case XML_ELEMENT_ASSOCIATIONTYPE_WEB: element.AssociationType = ElementAssociationType.Web; break; case XML_ELEMENT_ASSOCIATIONTYPE_FILE: case XML_ELEMENT_ASSOCIATIONTYPE_NONE: default: element.AssociationType = ElementAssociationType.File; break; } ; } else { if (xmlElement.Name == XML_WORD || xmlElement.Name == XML_EXCEL || xmlElement.Name == XML_PPT) { element.AssociationType = ElementAssociationType.File; } } // In-place expansion will be converted to Note with folder shortcut if (xmlElement.Attributes[XML_ELEMENT_FOLDERLINK] != null) { element.Type = ElementType.Heading; element.AssociationURI = xmlElement.Attributes[XML_ELEMENT_ASSOCIATIONURI].Value; element.IsExpanded = false; element.AssociationType = ElementAssociationType.FolderShortcut; element.LevelOfSynchronization = 1; } // Email if (xmlElement.Name == XML_MAIL) { string shortcutName = ShortcutNameConverter.GenerateShortcutNameFromEmailSubject(element.NoteText, dirPath); string shortcutPath = dirPath + shortcutName; IWshRuntimeLibrary.WshShellClass wshShell = new IWshRuntimeLibrary.WshShellClass(); IWshRuntimeLibrary.IWshShortcut shortcut = (IWshRuntimeLibrary.IWshShortcut)wshShell.CreateShortcut(shortcutPath); string targetPath = OutlookSupportFunction.GenerateShortcutTargetPath(); shortcut.TargetPath = targetPath; shortcut.Arguments = "/select outlook:" + xmlElement.Attributes[XML_MAIL_ENTRYID].Value; shortcut.Description = targetPath; shortcut.Save(); element.AssociationType = ElementAssociationType.Email; element.AssociationURI = shortcutName; } elementList.Add(element); } catch (Exception ex) { continue; } } elementList.Sort(new SortByPosition()); return(elementList); }