PROBLEM: When pasting from the clipboard, many programs automatically choose RTF or HTML formats over plain-text; and apps which do have a "Paste as Text" option don't typically have a hotkey assignment to make the operation quick. I'd like to globally change that behavior, by having a small tray app that has a global keyboard hook, which responds to a certain key combination as follows... + If the clipboard contains plain-text data (it usually does, see below), destroy any HTML or RTF data items, so that only the plain-text data will remain on the clipboard. This will solve 90% of the cases. + If it's reasonably easy to do, if the clipboard contains RTF data or HTML data, but NO plain-text data, strip the formatting, and generate a plain-text item before discarding the RTF and HTML. NOTE: I understand that windows has certain built-in converters for this, which I can see exposed through .NET's [login to view URL](), and the IDataObject interface's GetDataPresent method. If this functionality is not readily available, and if stripping the formatting codes is overly complex, I'll consider dropping this feature for the right bid. After conversion, the tool must re-issue a standard paste hotkey combination so that the receiving app can respond normally. Two global hotkeys should be supported... SHIFT-CTRL-V (which issues a CTRL-V after conversion) SHIFT-CTRL-INS (which issues a SHIFT-INS after conversion) I may need to change the hotkeys later, so please comment this section of the code, or consider using a registry entry. I have examined clipboard contents of the different apps I typically copy from, and ALL of them already generate a text item on the clipboard (in addition to RTF, HTML, and in the case of Excel, a Bitmap). However, I'm expecting that certain non-MS apps may not generate plain-text nodes, unless the clipboard itself now does this. Here is the list of clipboard formats that each app generates during a copy... "Source App","Text","HTML","Rtf","Bitmap" "Outlook Express Email (any)","YES","YES","YES","NO" "Outlook Email (Text)","YES","NO","YES","NO" "Outlook Email (HTML)","YES","YES","YES","NO" "MSIE 6","YES","YES","YES","NO" "Notepad","YES","NO","NO","NO" "Property Sheets","YES","NO","NO","NO" "Word","YES","YES","YES","NO" "Excel","YES","YES","YES","YES" "[login to view URL]","YES","NO","YES","NO"
## Deliverables
1) Complete and fully-functional working program(s) in executable form as well as complete source code of all work done. 2) Complete ownership and distribution copyrights to all work purchased. This app needs to run on NT-family systems, including 2000, XP Workstation, and Server 2003.
## Platform
C++ is acceptable if using a Microsoft compiler. Would prefer C#, but I understand that .NET can't support global hooks... [login to view URL]