The purpose of this article is creating an Add-In for Word that automates logging printscreens.
This add-in was designed to facilitate the creation of manuals, registration testing and other tasks where it is used very printscreen.
First create a Word 2007 Add-in solution, like this:
Creating the Code Add-In
After solution create, let's create a button:
// // Any source code blocks look like this // private void ThisAddIn_Startup(object sender, System.EventArgs e) { CheckIfMenuBarExists(); AddMenuBar(); } // // Checks whether there is a button with id equal to 200 // private void CheckIfMenuBarExists() { try { Office.CommandBarButton foundMenu = (Office.CommandBarButton) this.Application.CommandBars.ActiveMenuBar.FindControl( Office.MsoControlType.msoControlButton, System.Type.Missing, 200, true, true); if (foundMenu != null) { foundMenu.Delete(true); } } catch (Exception ex) { MessageBox.Show(ex.Message); } } // // Add button with caption 'Monitor PrintScreen' // private void AddMenuBar() { try { Office.CommandBar menubar = (Office.CommandBar)Application.CommandBars.ActiveMenuBar; // Add the menu. menuCommand = (Office.CommandBarButton)menubar.Controls.Add( Office.MsoControlType.msoControlButton, missing, missing, missing, true); menuCommand.Style = MsoButtonStyle.msoButtonIconAndWrapCaptionBelow; menuCommand.Caption = "Monitor PrintScreen"; menuCommand.Tag = "200"; menuCommand.FaceId = 65; menuCommand.Click += new _CommandBarButtonEvents_ClickEventHandler(menuCommand_Click); } catch (Exception e) { MessageBox.Show(e.Message); } }
[DllImport("User32.dll", CharSet = CharSet.Auto)] public static extern IntPtr SetClipboardViewer(IntPtr hWndNewViewer); [DllImport("User32.dll", CharSet = CharSet.Auto)] public static extern bool ChangeClipboardChain(IntPtr hWndRemove, IntPtr hWndNewNext); private const int WM_DRAWCLIPBOARD = 0x0308;// WM_DRAWCLIPBOARD message private IntPtr _clipboardViewerNext; public delegate void ClipboardHandler(object sender, ClipboardArgs e); public event ClipboardHandler OnNewClipboard; public ClipboardManager() { InitializeComponent(); } public void Start() { _clipboardViewerNext = SetClipboardViewer(this.Handle); } public void Stop() { ChangeClipboardChain(this.Handle, _clipboardViewerNext); } protected override void WndProc(ref Message m) { base.WndProc(ref m); if (m.Msg == WM_DRAWCLIPBOARD) { IDataObject iData = Clipboard.GetDataObject(); if (iData.GetDataPresent(DataFormats.Bitmap)) { Bitmap image = (Bitmap)iData.GetData(DataFormats.Bitmap); if (OnNewClipboard != null) { OnNewClipboard(this, new ClipboardArgs(image)); } } } } public class ClipboardArgs { public ClipboardArgs(Bitmap image) { this.Image = image; } public Bitmap Image { get; set; } }
void manager_OnNewClipboard(object sender, ClipboardArgs e) { Application.ActiveDocument.Content.Paragraphs.Add( Globals.ThisAddIn.Application.Selection.Range); Globals.ThisAddIn.Application.Selection.Paste(); Application.ActiveDocument.Content.Paragraphs.Add( Globals.ThisAddIn.Application.Selection.Range); Globals.ThisAddIn.Application.Selection.MoveDown(WdUnits.wdParagraph, 2, Type.Missing); }
After clicking the button, all the print screens will be included in the Word document.
In this article learn how to create: