I am building a PowerPoint 2010 C# add-in using Visual Studio 2010. One of the functions of the add-in is to add a shape to the current slide. Once the shape is added to the slide though, I need to prevent it from being copied. That is where I am running into issues. I have looked at all the application level events and am not seeing any sort of beforeCopy or beforePaste type of events.
The only option I can think of right now is to add a keydown event listener to listen for “ctrl+c” and block that if my shape is selected and then create a custom right click menu (not even sure if I can yet) to remove the “Copy” option if my shape is selected. There has to be simpler option though.
Anyone have any ideas how I would prevent a user from copying a shape?
The commands executed by built-in ribbon buttons Microsoft Office can be disabled or re-routed. Microsoft calls this “Repurposing”, an introduction can be found here.
So another approach could be to “repurpose” the built-in Copy button with something like this. (Needs to be returned by GetCustomUI to customize the ribbon, see the link above.) This modifies the action executed by the Copy button and the callback method that determines whether the button is enabled or not.
Implement
copyActionto returncancelDefault = truewhen your shape is selected so it will not be copied.Implement
copyEnabledto returnfalseif your shape is selected. Remember to invalidate the button on selection change events.Actually, one of both approaches should be sufficient. I guess
onActionis easier to implement.