Initial Commit of the PDM project (ready for DWS migration)

This commit is contained in:
will
2026-04-20 08:42:38 -05:00
commit dda7b664e7
2721 changed files with 442772 additions and 0 deletions

View File

@@ -0,0 +1,234 @@
<html xmlns:v="urn:schemas-microsoft-com:vml"
xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:w="urn:schemas-microsoft-com:office:word"
xmlns="http://www.w3.org/TR/REC-html40">
<head>
<title>Creating Add-ins (C#)</title>
<meta http-equiv="Content-Language" content="en-us">
<meta name=MS-HKWD content="C# add-ins, debug ">
<meta name=MS-HKWD content="Add-ins, C#">
<meta name=MS-HKWD content="Add-ins">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<link rel="stylesheet" type="text/css" href="ApiHelp.css">
</head>
<h1><span style="font-weight: normal; font-size: 7.5pt;">SOLIDWORKS PDM Professional API Help</span></h1>
<h1>Creating Add-ins (C#)</h1>
<body bgcolor=white lang=SV link=blue vlink=purple style='tab-interval:65.2pt'>
<div class=Section1>
<p><span lang=EN-US style='font-family:Verdana'>This topic shows how to create a
debug add-in using Visual C# in Microsoft Visual Studio. <br>
<br>
</span><span lang="en-us"><b><span style="font-family: Verdana">NOTE: </span></b></span>
<span lang=EN-US style='font-family:Verdana;
mso-ansi-language:EN-US'>Because SOLIDWORKS PDM Professional cannot force a reload of
add-ins if they are written in .NET, all client machines must be restarted to ensure that the latest version of the add-in is used.<o:p></o:p></span></p>
<ol class="kadov-P" style="line-height: 150%; font-family: Verdana; font-size: 8pt; margin-bottom: 15">
<li class="kadov-P"><font face="Verdana" style="font-size: 8pt">
<span lang=EN-US style='mso-ansi-language:EN-US'>Start Microsoft Visual
Studio or another version that supports debugging.<br>
&nbsp;</span></font></li>
<li class="kadov-P"><span lang="en-us"><font face="Verdana">Click <b>File &gt;
New &gt; Project &gt; Visual C# &gt; Windows<span lang="sv"> Desktop</span> &gt; Class Library</b></span><b>
(.NET Framework)</b><span lang="en-us">.<br>
&nbsp;</span></font></li>
<li class="kadov-P"><span lang="en-gb"><font face="Verdana">In the <b>.NET Framework</b> dropdown at the top of the
New Project dialog, keep the default version (recommended) or select
<span lang="sv">.NET Framework 4.5 or later</span>. See <a href="Using_NET_Framework_in_Addins.htm">Using .NET
Framework for Add-in Applications</a> for more information.</font></span><span lang="en-us"><font face="Verdana"><br>
&nbsp;</font></span></li>
<li class="kadov-P"><font face="Verdana" style="font-size: 8pt">
<span lang=EN-US style='mso-ansi-language:EN-US'>Type the name of your
project in <b>Name</b>.<br>
&nbsp;</span></font></li>
<li class="kadov-P"><span lang="en-us"><font face="Verdana">Click <b>
Browse</b> and navigate to the folder where to create your project.<br>
&nbsp;</font></span></li>
<li class="kadov-P"><span lang="en-us"><font face="Verdana">Click <b>OK</b>.<br>
<br>
<b>Class1.cs</b> containing empty class, Class1, is created.<br>
&nbsp;</font></span></li>
<li class="kadov-P">Right-click the project name in the Solution Explorer and click
<b>Add &gt; Reference</b>.<br>&nbsp;<ol class="kadov-P" style="line-height: 150%; font-family: Verdana; font-size: 8pt; margin-bottom: 15">
<li>Click <b>Browse </b>in the left-hand panel, navigate to and select
<strong>EPDM.Interop.epdm.dll</strong>, and click <strong>OK</strong>.<br></li>
<li><span lang="en-us">Right-click <b>E</b></span><b>pdm.Interop.epdm</b><span lang="en-us"> in the Solution Explorer,
select <b>Properties</b>, and set <b>Embed Interop Types</b> to <b>False</b>
to handle methods that pass arrays of structures.</span><br>&nbsp;</li>
<li>Click <b>Assemblies &gt; Framework</b> in the left-hand panel,
select
<b>System.Windows.Forms</b>, and click <strong>OK</strong>.<br>&nbsp;</li>
<li>Click <b>Close</b>.</li>
</ol></li>
<li class="kadov-P">Right-click the project name in the Solution Explorer and
click <b>Properties.</b><span lang=EN-US style='mso-ansi-language:EN-US'><br>&nbsp;</span><ol class="kadov-P" style="line-height: 150%; font-family: Verdana; font-size: 8pt; margin-bottom: 15">
<li><span lang=EN-US style='mso-ansi-language:EN-US'>Click <b>Application &gt; Assembly Information</b>.<br>
&nbsp;</span></li>
<li><span lang="en-us">De-select</span><span lang=EN-US style='mso-ansi-language:EN-US'>
<b>Make assembly COM-Visible</b>.<br>
&nbsp;</span></li>
<li><span lang="en-us">On the </span>Build<span lang="en-us"> tab, </span>
select <strong>AnyCPU</strong> for the target platform, de-select
<strong>Prefer 32-bit</strong> and <span lang="en-us">select <b>Register for COM
interop</b>.</span></li>
</ol></li>
<li><span lang="en-us">Make this </span>
<span lang=EN-US style='mso-ansi-language:EN-US'>a Debug Add-in:<br>&nbsp;</span><ol style="font-family: Verdana; font-size: 8pt">
<li><span lang="en-us">Click the <b>Debug</b> tab.<br>&nbsp;</span></li>
<li><span lang="en-us">Click </span>
<span lang=EN-US style='mso-ansi-language:EN-US'><b>Start external program
</b>and<b> </b>type
<b>C:\Windows\System32\notepad.exe </b>in the text field.</span></li>
</ol>
<p>&nbsp;</li>
<li><span lang="en-us">If creating this add-in on a 64-bit computer, edit
</span><span lang=EN-US style='mso-ansi-language:EN-US'>
<i style='mso-bidi-font-style:
normal'>project_path</i><span style='mso-bidi-font-style:
normal; '><i>\</i></span></span><span style='mso-bidi-font-style:
normal; mso-ansi-language:EN-US' lang="EN-US"><i>project_name\project_name\</i></span><span lang="en-us"><i>project_name</i>.<b>csproj</b>
in Notepad:<br>&nbsp;</span><ol style="font-family: Verdana; font-size: 8pt">
<li><span lang="en-us">Insert the following line below <b>&lt;PropertyGroup
Condition=&quot; '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' &quot;&gt;</b> and
below&nbsp; <b>&lt;PropertyGroup Condition=&quot; '$(Configuration)|$(Platform)' ==
'Release|AnyCPU' &quot;&gt;</b>.<br><br><font face="Courier New" size="2">&lt;PlatformTarget&gt;AnyCPU&lt;/PlatformTarget&gt;<br>&nbsp;</font></span></li>
<li><span lang="en-us">Save the file and exit Notepad.</span></li>
</ol>&nbsp;</li>
<li class="kadov-P"><font face="Verdana">Double-click <b>Class1.cs</b> in the Solution Explorer
to open the code window.<br>&nbsp;</font></li>
<li class="kadov-P">At the top of the code window, type:<br><br>
<font color="#0000FF" size="2" face="Courier New">using</font><font face="Courier New"><font size="2"> System.Windows.Forms;<br>
</font>
<span style="color:blue;"><font size="2">using</font></span><font size="2">&nbsp;System.Runtime.InteropServices;<br>
</font></font><font color="#0000FF" size="2" face="Courier New">using</font><font face="Courier New"><span
style='mso-bidi-font-style:normal; mso-ansi-language:EN-US' lang="EN-US"><font size="2">
E<span lang="sv">PDM.Interop.epdm</span>;</font></span></font><span lang=EN-US style='mso-ansi-language:EN-US'><br>&nbsp;</span></li>
<li>
<p class=section1 style='margin:0in;margin-bottom:.0001pt'>
<font face="Verdana">Replace<b>: </b></font></p></li>
<pre style="font-family: Courier New; font-size: 13; color: black; background: white"><span style="color:blue;">public</span>&nbsp;<span style="color:blue;">class</span>&nbsp;<span style="color:#2b91af;">Class1</span></pre>
<p class=section1 style='margin:0in;margin-bottom:.0001pt'>
<font face="Verdana"><b>&nbsp;</b>with:</font></p>
<p class=section1 style='margin:0in;margin-bottom:.0001pt'>
<font face="Verdana"><br></font><font face="Courier New" size="2">[<span style="color:#2b91af;">Guid</span>(<span style="color:#a31515;">&quot;&quot;</span>),
<span style="color:#2b91af;">ComVisible</span>(<span style="color: #0000FF">t</span><span style="color:blue;">rue</span>)]</font></p>
<p style="font-family: Courier New; font-size: 13; color: black; background: white" class="APICODE">
<span style="color:blue;">public</span>&nbsp;<span style="color:blue;">class</span>&nbsp;<span style="color:#2b91af;">Class1</span>&nbsp;:&nbsp;<span style="color:#2b91af;">IEdmAddIn5</span><li>To populate the GUID
attribute above, click <b>Tools &gt; Create GUID</b> in the IDE, select GUID
Format 5, click <b>Copy</b>, and click <b>Exit</b>. Populate
<font face="Courier New" size="2">[<span style="color:#2b91af;">Guid</span>(<span style="color:#a31515;">&quot;&quot;</span>),
...]</font> with the copied string.<br>&nbsp;</li>
<li><font face="Verdana"><span style="font-size: 8pt" lang="en-us">Implement</span></font><span lang=EN-US style='mso-ansi-language:EN-US'><span style="font-size: 8pt"><font face="Verdana">
<a href="EPDM.Interop.epdm~EPDM.Interop.epdm.IEdmAddin5~GetAddInInfo.html">IEdmAddIn</a></font></span><span
style='mso-bidi-font-style:normal'><font face="Verdana"><span style="font-size: 8pt"><a href="EPDM.Interop.epdm~EPDM.Interop.epdm.IEdmAddin5~GetAddInInfo.html">5::GetAddInInfo</a>
<span lang="sv">by adding the following to Class1</span>:<br>&nbsp;</span></font></span></span><p style="font-family: Courier New; font-size: 13; color: black; background: white" class="APICODE">
<span style="color:blue;">&nbsp;&nbsp;&nbsp; public</span>&nbsp;<span style="color:blue;">void</span>&nbsp;GetAddInInfo(<span style="color:blue;">ref</span>&nbsp;<span style="color:#2b91af;">EdmAddInInfo</span>&nbsp;poInfo,&nbsp;<span style="color:#2b91af;">IEdmVault5</span>&nbsp;poVault,&nbsp;<span style="color:#2b91af;">IEdmCmdMgr5</span>&nbsp;poCmdMgr)<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: green">//Specify
information&nbsp;to display in&nbsp;the&nbsp;add-in's Properties&nbsp;dialog&nbsp;box</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;poInfo.mbsAddInName&nbsp;=&nbsp;<span style="color:#a31515;">&quot;C#&nbsp;Add-in&quot;</span>;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;poInfo.mbsCompany&nbsp;=&nbsp;<span style="color:#a31515;">&quot;My&nbsp;Company&quot;</span>;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;poInfo.mbsDescription&nbsp;=&nbsp;<span style="color:#a31515;">&quot;Menu&nbsp;add-in&nbsp;that&nbsp;shows&nbsp;a&nbsp;message&nbsp;box.&quot;</span>;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;poInfo.mlAddInVersion&nbsp;=&nbsp;1;<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; background-position: 0 0">//Specify
the minimum required version of S</span><span style="color: green">olidWorks&nbsp;PDM
Professional</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;poInfo.mlRequiredVersionMajor&nbsp;=&nbsp;6;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;poInfo.mlRequiredVersionMinor&nbsp;=&nbsp;4;<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green;">//&nbsp;Register&nbsp;a&nbsp;menu&nbsp;command</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;poCmdMgr.AddCmd(1,&nbsp;<span style="color:#a31515;">&quot;C#&nbsp;Add-in&quot;</span>,&nbsp;(<span style="color:blue;">int</span>)<span style="color:#2b91af;">EdmMenuFlags</span>.EdmMenu_Nothing);<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;}</li>
<li><span lang="en-us">Implement
<a href="EPDM.Interop.epdm~EPDM.Interop.epdm.IEdmAddIn5~OnCmd.html">IEdmAddIn5::</a></span><span lang=EN-US style='mso-ansi-language:EN-US'><span
style='mso-bidi-font-style:normal'><a href="EPDM.Interop.epdm~EPDM.Interop.epdm.IEdmAddIn5~OnCmd.html">OnCmd</a>
<span lang="sv">by adding the following to Class1</span>:</span></span></li><blockquote>
<p style="font-family: Courier New; font-size: 13; color: black; background: white" class="APICODE">
<span style="color:blue;">public</span>&nbsp;<span style="color:blue;">void</span>&nbsp;OnCmd(<span style="color:blue;">ref</span>&nbsp;<span style="color:#2b91af;">EdmCmd</span>&nbsp;poCmd,&nbsp;<span style="color:blue;">ref</span>&nbsp;<span style="color:#2b91af;">EdmCmdData</span>[]&nbsp;ppoData)<br>
{<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green;">//&nbsp;Handle&nbsp;the&nbsp;menu&nbsp;command</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">if</span>&nbsp;(poCmd.meCmdType&nbsp;==&nbsp;<span style="color:#2b91af;">EdmCmdType</span>.EdmCmd_Menu)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">if</span>&nbsp;(poCmd.mlCmdID&nbsp;==&nbsp;1)
{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.Windows.Forms.<span style="color:#2b91af;">MessageBox</span>.Show(<span style="color:#a31515;">&quot;C#&nbsp;Add-in&quot;</span>);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
&nbsp;}</p>
</blockquote>
<li class="kadov-P">Implement your own window handle wrapper by
right-clicking the project name in the Solution Explorer and clicking <b>Add &gt; Class</b></span><span lang="en-us">:<br>&nbsp;</span><ol style="font-family: Verdana; font-size: 8pt">
<li><span lang="en-us">Type <b>WindowHandle.cs</b> in <b>Name</b>.<br>&nbsp;</span></li>
<li><span lang="en-us">Click <b>Add</b>.<br>&nbsp;</span></li>
<li><span lang="en-us">Replace the code in the code window with the
following code.</span></li>
</li>
</ol>
<blockquote>
<blockquote>
<p style="font-family: Courier New; font-size: 13; color: black; background: white" class="APICODE">
<span style="color:blue;">using</span>&nbsp;System;<br>
<span style="color:blue;">using</span>&nbsp;System.Collections.Generic;<br>
<span style="color:blue;">using</span>&nbsp;System.Text;<br>
<span style="color:blue;">using</span>&nbsp;System.Windows.Forms;<br>&nbsp;<br>
<span style="color:blue;">namespace</span>&nbsp;Addin_CSharp<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green;">//Wrapper&nbsp;class&nbsp;to&nbsp;use&nbsp;SOLIDWORKS&nbsp;PDM&nbsp;Professional&nbsp;as&nbsp;the&nbsp;parent&nbsp;window</span><br>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">class</span>&nbsp;<span style="color:#2b91af;">WindowHandle</span>&nbsp;:&nbsp;<span style="color:#2b91af;">IWin32Window</span><br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">private</span>&nbsp;<span style="color:#2b91af;">IntPtr</span>&nbsp;mHwnd;<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">public</span>&nbsp;WindowHandle(<span style="color:blue;">int</span>&nbsp;hWnd)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mHwnd&nbsp;=&nbsp;<span style="color:blue;">new</span>&nbsp;<span style="color:#2b91af;">IntPtr</span>(hWnd);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">public</span>&nbsp;<span style="color:#2b91af;">IntPtr</span>&nbsp;Handle<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">get</span>&nbsp;{&nbsp;<span style="color:blue;">return</span>&nbsp;mHwnd;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>}</p>
</blockquote>
<p><span lang="en-gb">Your add-in uses the new wrapper in the menu
command handler to
show the message box by calling <font face="Courier New" size="2">System.Windows.Forms.MessageBox.Show</font> in Class1::OnCmd in
<b>Class1.cs</b>.</span></p>
</blockquote>
<li><span lang=EN-US style='mso-ansi-language:EN-US'>Click <b>Build &gt; Build
Solution</b> to build the add-in.<br>&nbsp;</span></li>
<li><span lang="en-us">I</span><span lang=EN-US style='mso-ansi-language:EN-US'>nstall
the add-in for debugging through the SOLIDWORKS PDM Professional
Administration tool: <br>&nbsp;</span><ol style="font-family: Verdana; font-size: 8pt">
<li><span lang="en-us">Open</span><span lang=EN-US style='mso-ansi-language:EN-US'> the SOLIDWORKS
PDM Professional Administration tool.<br>&nbsp;</span></li>
<li><span lang=EN-US style='mso-ansi-language:EN-US'>Expand the vault where
you want to install this add-in and log in as Admin.<br>&nbsp;</span></li>
<li><span lang="en-us">Right-click <b>Add-ins</b> and select <b>Debug
Add-ins</b>.<br>&nbsp;</span></li>
<li><span lang="en-us">Click <b>Add Add-in</b>, browse to </span>
<span lang=EN-US style='mso-ansi-language:EN-US'>
<i style='mso-bidi-font-style:
normal'>project_path</i><span style='mso-bidi-font-style:
normal; '><i>\</i></span></span><span style='mso-bidi-font-style:
normal; mso-ansi-language:EN-US' lang="EN-US"><i>project_name\project_name</i><b>\bin\Debug</b>,
click <i>project_name</i><b>.dll</b>, and click <b>Open</b>.<br><br>Your add-in's name, path, and class ID should appear in
the <b>Add-ins installed
for debugging on this machine </b>list.<br>&nbsp;</span></li>
<li><span lang="en-us">Click <b>OK</b>.</span><span lang=EN-US style='mso-ansi-language:EN-US'><br>&nbsp;</span></li>
</ol></li>
<li>In Microsoft Visual Studio, click <b>Debug &gt; Start Debugging</b>
or press F5.<br>&nbsp;</li>
<li>Open Notepad and click <b>File &gt; Open</b>.<br>&nbsp;</li>
<li>In the Open dialog, click the name of the vault where you installed this add-in.<br>&nbsp;</li>
<li>Right-click inside the vault view and click <b>C#
Add-in</b>.<br><br>Displays the message, <b>C# Add-in</b>.<br>&nbsp;</li>
<li>Click <b>OK</b> to close the message box.<br>&nbsp;</li>
<li>Click <b>Cancel</b>.<br>&nbsp;</li>
<li>Close Notepad.<h2><b style='mso-bidi-font-weight:normal'>
<span lang=EN-US
style='font-family:Verdana;mso-ansi-language:EN-US'>
<span style="font-size: 8pt">Complete
Source Code</span><o:p></o:p></span></b></h2>
<blockquote>
<h4><span style="font-family: Verdana; font-weight: 700" lang="en-gb">
<font color="#008000">//Class1.cs</font></span></h4>
<p style="font-family: Courier New; font-size: 13; color: black; background: white" class="APICODE">
<br>
<span style="color:blue;">using</span>&nbsp;System;<br>
<span style="color:blue;">using</span>&nbsp;System.Collections;<br>
<span style="color:blue;">using</span>&nbsp;System.Collections.Generic;<br>
<span style="color:blue;">using</span>&nbsp;System.Data;<br>
<span style="color:blue;">using</span>&nbsp;System.Diagnostics;<br>
<span style="color:blue;">using</span>&nbsp;System.Windows.Forms;<br>
<span style="color:blue;">using</span>&nbsp;System.Runtime.InteropServices;<br>
<span style="color:blue;">using</span>&nbsp;EPDM.Interop.epdm;<br>&nbsp;<br>[<font face="Courier New" size="2"><span style="color:#2b91af;">Guid</span>(<span style="color:#a31515;">&quot;&quot;</span>),
<span style="color:#2b91af;">ComVisible</span>(<span style="color: #0000FF">t</span><span style="color:blue;">rue</span>)]&nbsp;&nbsp;&nbsp;
<font color="#008000">// See step 14 above to create the GUID</font></font><br>
<span style="color:blue;">public</span>&nbsp;<span style="color:blue;">class</span>&nbsp;<span style="color:#2b91af;">Class1</span>&nbsp;:&nbsp;<span style="color:#2b91af;">IEdmAddIn5</span><br>{<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">public</span>&nbsp;<span style="color:blue;">void</span>&nbsp;GetAddInInfo(<span style="color:blue;">ref</span>&nbsp;<span style="color:#2b91af;">EdmAddInInfo</span>&nbsp;poInfo,&nbsp;<span style="color:#2b91af;">IEdmVault5</span>&nbsp;poVault,&nbsp;<span style="color:#2b91af;">IEdmCmdMgr5</span>&nbsp;poCmdMgr)<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;poInfo.mbsAddInName&nbsp;=&nbsp;<span style="color:#a31515;">&quot;C#&nbsp;Add-in&quot;</span>;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;poInfo.mbsCompany&nbsp;=&nbsp;<span style="color:#a31515;">&quot;My&nbsp;Company&quot;</span>;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;poInfo.mbsDescription&nbsp;=&nbsp;<span style="color:#a31515;">&quot;Menu&nbsp;add-in&nbsp;that&nbsp;shows&nbsp;a&nbsp;message&nbsp;box.&quot;</span>;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;poInfo.mlAddInVersion&nbsp;=&nbsp;1;<br>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;poInfo.mlRequiredVersionMajor&nbsp;=&nbsp;6;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;poInfo.mlRequiredVersionMinor&nbsp;=&nbsp;4;<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;poCmdMgr.AddCmd(1,&nbsp;<span style="color:#a31515;">&quot;C#&nbsp;Add-in&quot;</span>,&nbsp;(<span style="color:blue;">int</span>)<span style="color:#2b91af;">EdmMenuFlags</span>.EdmMenu_Nothing);<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;</p>
<p style="font-family: Courier New; font-size: 13; color: black; background: white" class="APICODE">
<span style="color:blue;">&nbsp;&nbsp;&nbsp; public</span>&nbsp;<span style="color:blue;">void</span>&nbsp;OnCmd(<span style="color:blue;">ref</span>&nbsp;<span style="color:#2b91af;">EdmCmd</span>&nbsp;poCmd,&nbsp;<span style="color:blue;">ref</span>&nbsp;<span style="color:#2b91af;">EdmCmdData</span>[]&nbsp;ppoData)<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">if</span>&nbsp;(poCmd.meCmdType&nbsp;==&nbsp;<span style="color:#2b91af;">EdmCmdType</span>.EdmCmd_Menu)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">if</span>&nbsp;(poCmd.mlCmdID&nbsp;==&nbsp;1)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.Windows.Forms.<span style="color:#2b91af;">MessageBox</span>.Show(<span style="color:#a31515;">&quot;C#&nbsp;Add-in&quot;</span>);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>}</p>
<h4 style="font-family: Courier New; font-size: 13; background: white">
<font color="#008000">//WindowHandle.cs</font></h4>
<p style="font-family: Courier New; font-size: 13; color: black; background: white" class="APICODE">
<span style="color:blue;">using</span>&nbsp;System;<br>
<span style="color:blue;">using</span>&nbsp;System.Collections.Generic;<br>
<span style="color:blue;">using</span>&nbsp;System.Text;<br>
<span style="color:blue;">using</span>&nbsp;System.Windows.Forms;<br>&nbsp;<br>
<span style="color:blue;">namespace</span>&nbsp;Addin_CSharp<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">class</span>&nbsp;<span style="color:#2b91af;">WindowHandle</span>&nbsp;:&nbsp;<span style="color:#2b91af;">IWin32Window</span><br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">private</span>&nbsp;<span style="color:#2b91af;">IntPtr</span>&nbsp;mHwnd;<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">public</span>&nbsp;WindowHandle(<span style="color:blue;">int</span>&nbsp;hWnd)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mHwnd&nbsp;=&nbsp;<span style="color:blue;">new</span>&nbsp;<span style="color:#2b91af;">IntPtr</span>(hWnd);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">public</span>&nbsp;<span style="color:#2b91af;">IntPtr</span>&nbsp;Handle<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">get</span>&nbsp;{&nbsp;<span style="color:blue;">return</span>&nbsp;mHwnd;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>}</p>
</blockquote></li>
</div>
</body>
</html>