PB Add-in Development Breadcrumbs

Discussion created by israelsebw on Nov 25, 2013
Latest reply on Dec 3, 2013 by CalebH

Hey everyone!


I am new to PI SDK development, and for that matter development in general.


I am making this post to combine in one place several other posts that helped me to get an add-in up and running.


Here we go:


My system spec.'s Windows 7 x64, PB, Visual Studio 2012



  • First thing, we need to download the add-in templates: These are found in the download center in the extras section:
  • Once you have the templates copied to the ...\My Documents\Visual Studio XXXX\Templates\ProjectTemplates or other path of choice, then you can begin a project



My first step was to open a template (I chose the Docking Window add-in template) and get it to compile, and allow me to debug. I am not yet focused on making any changes to the template code


  • With a unique GUID you now need to build the project and register  "YourAssemblyName.dll" using RegAsm.exe. I did this using the developer commant prompt, navigating to the Procbook directory (where I built the project) and typing "regasm YourAssemblyName.dll".
  • In order to get the code to run in PB it is necessary to Link the add-in to PB through the registry. You will need to run the "AddinReg.reg" file included with the template. I did this manually. 


  • If you are running an x64 PC like me, then you need to make sure the you also add the add-in to the x64 part of the registry. I found this information on this post:
  • Remember that every one of these steps are important. Unfortunately I discovered the unique GUID one last and until then could not get the add-in to show up in PB. It was pretty frustrating. As always after you know the correct steps it is obvious why it didn't work. 

Venturing a bit further:


Now that I was able to build the add-in and bring it up in debug mode I decided to venture a bit further. The default add-in has text inside the dock window. I wanted to add a different activeX control.


The bottleneck was this line of code:




 I had to go find the "ProcID" of the activeX object that I wanted to add. This proved to be a bit more difficult than it seems. In the end these were the steps I followed:

  • Locate the activeX control that I wanted to add using the control browser in PB


  •  My control in this case: msdatgrd.ocx. I searched "msdatgrd.ocs CLSID" on the web and came up with the CLSID {CDE57A43-8B86-11D0-B3C6-00A0C90AEA82}. I prefer to put the ProgID since it is a plain english (or at least trying to be) representation so I searched in the registry for the CLSID and found the "CurVer" in this case was equal to "MSDataGridLib.DataGrid.1" I presume this can be done in an easier way but I don't know what it is.

This is all of my progress so far. If anyone has better solutions or other threads they would like to refer to that would be great. I would like to know how I could have done this better or in a more streamlined way. I'll continue to post as I make more progress.


Hopefully this can be helpful for someone coming down the road after me.