Outlook Explorer Object Giving 'NULL' Attachment Selection - c#

I want a selected attachments from below window.
I have used Explorer.AttachmentSelection method. But its not giving me any selection.
How to achieve it?

The AttachmentSelection object contains a read-only collection of attachments that are selected in an item that is in the active inspector or the active explorer. Use the ActiveExplorer method of the Application class which returns the topmost Explorer object on the desktop. An Explorer that represents the topmost explorer on the desktop is returned. You may get Nothing or Null if no explorer is active. So, you may get null if no attachments is selected in the view.
I'd suggest click on any attachment in the view and validate how the code is working. You should get the attachment instance selected in the Outlook view.

You actually need to select an attachment in the preview pane (so that "Back to message" button becomes visible) for Explorer.AttachmentSelection collection to contain anything.

Related

How to check before/after properties for sub group of item in sharepoint

working with SharePoint, on the info path form I have a group, which then has a sub group. There can then be any amount of attachment controls on this sub group.
When the form is submitted I am sending the attachments to be uploaded somewhere else. Issue is, when I submit the form, these attachments get sent every time regardless if they are new are not. I currently have the code to handle the uploads in the ItemUpdated(SPItemEventProperties properties) method. I've done some reading and I know I will have to change it so that I am making this call from the ItemUpdating method instead. But from there I am unsure what is the best way to check for only 'new' attachments to be sent.
Any suggestions? New to SharePoint development so I can try and clarify if some things don't make sense.
In general you will always receive all attachments within the EventReceiver. Now you have to check in your EventReceivers ItemUpdating Event which items are new. You have to check the AfterProperties (which you are sending by your form) and the properties.ListItem (BeforeProperties and AfterProperties in Sharepoint Event Receivers).
First i would load all attachment from the form (AfterProperties) to a collection and then the attachment from the item which already exist in the list which you are trying to update. These attachment of the currently existing item you also load to a collection. Then you can check through LINQ for example if the attachments from you form exist in the item or which do not and then add only the new ones!

how to copy the text from textbox and paste on outlook message body

I tried to develop an Outlook add-in to ask users for information by showing a Windows Form with several TextBox controls. The text (includes name, phone, email address etc) user input will be added in the Outlook mail body as signature.
Just wonder that how can I get all the data user entered and paste them on the Outlook mail body? Can i just copy them all on the clipboard and paste into the body? Still cannot find a proper method to achieve this, could you give me some suggestions?
You can defined public methods and properties on your Windows form for getting the values an user entered.
The Outlook object model provides three main ways for working item bodies:
Body - a string representing the clear-text body of the Outlook item.
HTMLBody - a string representing the HTML body of the specified item.
Word editor - the Microsoft Word Document Object Model of the message being displayed. The WordEditor property of the Inspector class returns an instance of the Document class from the Word object model which you can use to set up the message body.
You can read more about all these ways in the Chapter 17: Working with Item Bodies. It us up to you which way is to choose to customize the signature in the message body.
To get the active inspector window use the ActiveInspector method of the Application class. The method returns the topmost Inspector object on the desktop. The CurrentItem property returns an Object (it will be a mail item in your case) representing the current item being displayed in the inspector.

How to access MailItems within the Email List pane?

I'm working on an Outlook 2013 plugin that needs to access the emails currently displayed in the email list pane.
I already searched around a lot but I could only find ways to list emails within the current selected folder:
Outlook.MAPIFolder curFolder = this.Application.ActiveExplorer().CurrentFolder;
Outlook.Items mailItems = curFolder.Items;
MailItem item = mailItems.GetFirst();
This would work fine if the user didn't apply any search filters; but if a filter is applied via the instant search bar this code would produce the same list of MailItems as if the filter wasn't applied.
I thought of two ways of potentially solving this but couldn't find any resources online that worked for either.
1) Preferably, get direct read access to the MailItem list currently rendered within the email list pane.
2) Alternatively, read the value in the instant search text-box and apply that to the currently selected folder using the Items.Find() command.
Any guidance or explanations would be greatly appreciated; thanks in advance.
The Outlook object model doesn't provide any direct access to the filter line or items shown in Outlook.
But the Explorer class provides the CurrentView property which returns an object representing the current view. The View class provides the Filter property which is applied to the current view.
Sub ResetView()
Dim v as Outlook.View
' Save a reference to the current view object
Set v = Application.ActiveExplorer.CurrentView
' v.Filter
End Sub
So, you can apply the filter to the Items collection and get the same set of items.

How can I get the full text of the active window in an SSMS addin?

I'm attempting to get the text of the active window in SSMS via an addin developed through VS2012. I can see the EnvDTE.Window.Selection property contains some information on the selected text, but I also want to be able to access the full text.
Anyone know how this is possible?
Does anyone also know how you can set the text of the active window, both selected and full text?
Thanks
Found the answers:
You can set the text by simply assigning the Text property. Be warned that it gets a little weird with some formatting it automatically does.
You can just do a SelectAll call and then access the Text property to get all of the text on the active window.
The type of object returned by the Selection property is a TextSelection object.

Formfields.BookMarks.get_Item().Checkbox.Value doesn't work (automation word)

I'm trying unsuccessfully to change the value of a word Checkbox (from developer tab) via automation in C#. I've tried different ways but the only one I always find when I search on internet is :
find the name of the checkbox by clicking on properties of the checkbox when you are in developer mode
object oCheckbox = "Checkbox_name"
document_name.FormFields.get_Item(ref oCheckbox).CheckBox.Value = true/false;
But whenever I execute the code I get the following error (the request member of the collection does not exist) who means that there's no checkbox named "Checkbox_name" in my document if I understand correctly.
I also tried to Bookmark the checkbox with the same name and to execute :
document_name.BookMarks.get_Item(ref oCheckbox).CheckBox.Value but it doesn't work too...
If you inserted a checkbox by clicking on the checkbox shown in the developer tab, then I assume you're using Word 2007 or later.
And, if that's the case, then what you inserted was not a form field, but a content control. Therefore if you enter the following into the immediate window in the VBA editor:
?ActiveDocument.Content.FormFields.Count
...it will print "0". Whereas if you try:
?ActiveDocument.Content.ContentControls.Count
...it should print some number greater than zero, depending on how many of these you inserted.
To insert an old-style form-field checkbox, click the folder-with-tools icon right next to the checkbox icon - this drops down more types of controls, including "Legacy Forms" and "ActiveX Controls". There is a checkbox in each group, but it's the first group ("Legacy Forms") that will create the checkbox that shows up in the FormFields collection.
I would suggest using the content control if possible, since the old-style form fields may not be supported forever.

Categories