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,181 @@
<html>
<head>
<title>Get Menu Command Items Example (VB.NET)</title>
<meta http-equiv="Content-Language" content="en-us">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<link rel="stylesheet" type="text/css" href="ApiHelp.css">
</head>
<meta name=MS-HKWD content="VB.NET examples,menus">
<meta name=MS-HKWD content="VB.NET examples,add-ins">
<body>
<h1><font size="1"><span style="font-weight: 400">SOLIDWORKS PDM Professional API Help</span></h1>
<h1>Get Menu Command Items Example (VB.NET)</h1>
<p><a name="Top"></a>This example shows how to get add-in menu command items.</p>
<p><b>NOTE</b>: If using the primary interop assembly
provided with SOLIDWORKS PDM Professional, see
<a href="Using_NET_Framework_in_Applications.htm">Using .NET Framework 4.0 in
Stand-alone Applications</a>.</p>
<p><img border="0" src="AddinMenuItems.gif" width="189" height="201"></p>
<p style="font-family: Courier New; font-size: 13; color: black; background: white" class="APICODE"><span style="color:green;">'--------------------------------------------------------------------------------------</span><br>
<span style="color:green;">'&nbsp;Preconditions:</span><br>
<span style="color:green;">'&nbsp;1.&nbsp;Start&nbsp;Microsoft&nbsp;Visual&nbsp;Studio.</span><br>
<span style="color:green;">'&nbsp;&nbsp;&nbsp;&nbsp;a.&nbsp;Click&nbsp;<b>File&nbsp;&gt;&nbsp;New&nbsp;&gt;&nbsp;Project&nbsp;&gt;&nbsp;Visual&nbsp;Basic&nbsp;&gt;&nbsp;Console&nbsp;Application</b>.</span><br>
<span style="color:green;">'&nbsp;&nbsp;&nbsp;&nbsp;b.&nbsp;Type&nbsp;<b>MenuVBNET</b>&nbsp;in&nbsp;<b>Name</b>.</span><br>
<span style="color:green;">'&nbsp;&nbsp;&nbsp;&nbsp;c.&nbsp;Click&nbsp;<b>Browse</b>&nbsp;and&nbsp;navigate&nbsp;to&nbsp;the&nbsp;folder&nbsp;where&nbsp;to&nbsp;create&nbsp;the&nbsp;project.&nbsp;</span><br>
<span style="color:green;">'&nbsp;&nbsp;&nbsp;&nbsp;d.&nbsp;Click&nbsp;<b>OK</b>.</span><br>
<span style="color:green;">'&nbsp;&nbsp;&nbsp;&nbsp;e.&nbsp;Replace&nbsp;the&nbsp;code&nbsp;in&nbsp;<b>Module1.vb</b>&nbsp;with&nbsp;<a href="#Module1">this&nbsp;code</a>.</span><br>
<span style="color:green;">'&nbsp;2.&nbsp;Add&nbsp;<b>EPDM.Interop.epdm.dll</b>&nbsp;as&nbsp;a&nbsp;reference&nbsp;(right-click&nbsp;the&nbsp;project</span><br>
<span style="color:green;">'&nbsp;&nbsp;&nbsp;&nbsp;name&nbsp;in&nbsp;the&nbsp;Solution&nbsp;Explorer,&nbsp;click&nbsp;<b>Add&nbsp;Reference</b>,&nbsp;click&nbsp;</span><br>
<span style="color:green;">'&nbsp;&nbsp;&nbsp;&nbsp;<b>Assemblies&nbsp;&gt;&nbsp;Framework</b>&nbsp;in&nbsp;the&nbsp;left-side&nbsp;panel,&nbsp;browse&nbsp;to&nbsp;the&nbsp;top&nbsp;folder&nbsp;of&nbsp;</span><br>
<span style="color:green;">'&nbsp;&nbsp;&nbsp;&nbsp;your&nbsp;SOLIDWORKS&nbsp;PDM&nbsp;Professional&nbsp;installation,&nbsp;locate&nbsp;and&nbsp;click&nbsp;</span><br>
<span style="color:green;">'&nbsp;&nbsp;&nbsp;&nbsp;<b>EPDM.Interop.epdm.dll</b>,&nbsp;click&nbsp;<b>Open</b>,&nbsp;and click&nbsp;<b>Add</b>).<br>
'&nbsp;3. Add <b>System.Windows.Forms</b> as a reference (click <b>System.Windows.Forms<br>
</b>'&nbsp;&nbsp;&nbsp;&nbsp;in the Name column, click <b>Add</b>, and click <b>Close</b>).</span><br>
<span style="color:green;">'&nbsp;4.&nbsp;Right-click&nbsp;<b>EPDM.Interop.epdm</b>&nbsp;in&nbsp;<b>References</b>,&nbsp;click&nbsp;<b>Properties</b>,&nbsp;and&nbsp;set&nbsp;</span><br>
<span style="color:green;">'&nbsp;&nbsp;&nbsp;&nbsp;<b>Embed&nbsp;Interop&nbsp;Types</b>&nbsp;to&nbsp;<b>False</b>&nbsp;to&nbsp;handle&nbsp;methods&nbsp;that&nbsp;pass&nbsp;arrays&nbsp;of&nbsp;</span><br>
<span style="color:green;">'&nbsp;&nbsp;&nbsp;&nbsp;structures.<br>
'&nbsp;5. Replace <i>ACME_LAB</i> with the name of a valid vault view.</span><br>
<span style="color:green;">'&nbsp;6.&nbsp;Click&nbsp;<b>Debug&nbsp;&gt;&nbsp;Start&nbsp;Debugging</b>&nbsp;or&nbsp;press&nbsp;F5.</span><br>
<span style="color:green;">'<br>
'&nbsp;Postconditions:&nbsp;</span><br>
<span style="color: green">'&nbsp;1.&nbsp;Displays&nbsp;the&nbsp;command&nbsp;window.<br>
' 2. Displays a message box for each add-in menu command item. <br>
'&nbsp;3.&nbsp;Click <b>OK</b> to close each message box.</span><br>
<span style="color: green">'&nbsp;4. Displays&nbsp;the&nbsp;menu&nbsp;in&nbsp;the&nbsp;upper-left&nbsp;corner&nbsp;of&nbsp;the&nbsp;desktop.</span><br>
<span style="color: green">'&nbsp;5. Click&nbsp;<b>First&nbsp;Command</b>&nbsp;in&nbsp;the&nbsp;menu.</span><br>
<span style="color: green">'&nbsp;6. Click&nbsp;<b>OK</b>&nbsp;to&nbsp;close&nbsp;the&nbsp;message&nbsp;box.</span><br>
<span style="color: green">'&nbsp;7. Click&nbsp;the&nbsp;command&nbsp;window&nbsp;and&nbsp;press&nbsp;any&nbsp;key.</span><br>
<span style="color: green">'&nbsp;8. Closes&nbsp;the&nbsp;command&nbsp;window&nbsp;and&nbsp;exits&nbsp;the&nbsp;application.</span><br>
<span style="color: green">'--------------------------------------------------------------------------------------</span></p>
<p style="font-family: Courier New; font-size: 13; color: black; background: white" class="APICODE"><span style="color: #008000"><a name="Module1"></a>'Module1.vb</span><br>
&nbsp;</p>
<p style="font-family: Courier New; font-size: 13; color: black; background: white" class="APICODE">
<span style="color:blue;">Imports</span>&nbsp;EPDM.Interop.epdm<br>
<span style="color:blue;">Imports</span>&nbsp;System.Windows.Forms<br>
&nbsp;<br>
<span style="color:blue;">Module</span>&nbsp;<span style="color:#2b91af;">Module1</span><br>
&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">Dim</span>&nbsp;vault&nbsp;<span style="color:blue;">As</span>&nbsp;<span style="color:#2b91af;">EdmVault5</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">Dim</span>&nbsp;frmParent&nbsp;<span style="color:blue;">As</span>&nbsp;<span style="color:#2b91af;">Form</span><br>
&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">Sub</span>&nbsp;Main()<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">Try</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green;">'Create&nbsp;a&nbsp;vault&nbsp;interface</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vault&nbsp;=&nbsp;<span style="color:blue;">New</span>&nbsp;<span style="color:#2b91af;">EdmVault5</span>()<br>
&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green;">'Log&nbsp;into&nbsp;vault</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vault.<b>LoginAuto</b>(<span style="color:#a31515;">&quot;<i>ACME_LAB</i>&quot;</span>,&nbsp;0)<br>
&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green;">'Show&nbsp;menu</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ShowMenu(vault)<br>
&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">Catch</span>&nbsp;ex&nbsp;<span style="color:blue;">As</span>&nbsp;System.Runtime.InteropServices.<span style="color:#2b91af;">COMException</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MsgBox(<span style="color:#a31515;">&quot;HRESULT&nbsp;=&nbsp;0x&quot;</span>&nbsp;+&nbsp;ex.ErrorCode.ToString(<span style="color:#a31515;">&quot;X&quot;</span>)&nbsp;+&nbsp;<span style="color:#a31515;">&quot;&nbsp;&quot;</span>&nbsp;+&nbsp;ex.Message)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">Catch</span>&nbsp;ex&nbsp;<span style="color:blue;">As</span>&nbsp;<span style="color:#2b91af;">Exception</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MsgBox(ex.Message)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">End</span>&nbsp;<span style="color:blue;">Try</span><br>
&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#2b91af;">Console</span>.WriteLine()<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#2b91af;">Console</span>.WriteLine(<span style="color:#a31515;">&quot;Press&nbsp;any&nbsp;key&nbsp;to&nbsp;exit.&quot;</span>)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#2b91af;">Console</span>.ReadKey()<br>
&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">End</span>&nbsp;<span style="color:blue;">Sub</span><br>
&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">Private</span>&nbsp;<span style="color:blue;">Sub</span>&nbsp;ShowMenu(<span style="color:blue;">ByVal</span>&nbsp;vault&nbsp;<span style="color:blue;">As</span>&nbsp;<span style="color:#2b91af;">IEdmVault12</span>)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green;">'Create&nbsp;a&nbsp;context-sensitive&nbsp;menu&nbsp;</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green;">'using&nbsp;Windows&nbsp;InsertMenu&nbsp;function</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">Dim</span>&nbsp;mnu&nbsp;<span style="color:blue;">As</span>&nbsp;System.Windows.Forms.<span style="color:#2b91af;">ContextMenu</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mnu&nbsp;=&nbsp;<span style="color:blue;">New</span>&nbsp;System.Windows.Forms.<span style="color:#2b91af;">ContextMenu</span><br>
&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;InsertMenu(mnu.Handle,&nbsp;0,&nbsp;0,&nbsp;100,&nbsp;<span style="color:#a31515;">&quot;First&nbsp;Command&quot;</span>)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;InsertMenu(mnu.Handle,&nbsp;0,&nbsp;0,&nbsp;101,&nbsp;<span style="color:#a31515;">&quot;Second&nbsp;Command&quot;</span>)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;InsertMenu(mnu.Handle,&nbsp;0,&nbsp;0,&nbsp;102,&nbsp;<span style="color:#a31515;">&quot;Third&nbsp;Command&quot;</span>)<br>
&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green;">'Create&nbsp;a&nbsp;selection&nbsp;list&nbsp;with&nbsp;all&nbsp;files&nbsp;in&nbsp;the&nbsp;root&nbsp;folder</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">Dim</span>&nbsp;selList&nbsp;<span style="color:blue;">As</span>&nbsp;<span style="color:#2b91af;">IEdmSelectionList6</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;selList&nbsp;=&nbsp;<span style="color:blue;">New</span>&nbsp;<span style="color:#2b91af;">EdmSelectionList5</span><br>
&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">Dim</span>&nbsp;folder&nbsp;<span style="color:blue;">As</span>&nbsp;<span style="color:#2b91af;">IEdmFolder6</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;folder&nbsp;=&nbsp;vault.<b>RootFolder</b><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">Dim</span>&nbsp;pos&nbsp;<span style="color:blue;">As</span>&nbsp;<span style="color:#2b91af;">IEdmPos5</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pos&nbsp;=&nbsp;folder.<b>GetFirstFilePosition</b>()<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">While</span>&nbsp;<span style="color:blue;">Not</span>&nbsp;pos.<b>IsNull</b><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">Dim</span>&nbsp;file&nbsp;<span style="color:blue;">As</span>&nbsp;<span style="color:#2b91af;">IEdmFile8</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;file&nbsp;=&nbsp;folder.<b>GetNextFile</b>(pos)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">Dim</span>&nbsp;obj&nbsp;<span style="color:blue;">As</span>&nbsp;<span style="color:#2b91af;">EdmSelectionObject</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;obj.<b>mbsPath</b>&nbsp;=&nbsp;file.<b>GetLocalPath</b>(folder.<b>ID</b>)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;obj.<b>meType</b>&nbsp;=&nbsp;file.<b>ObjectType</b><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;obj.<b>mlID</b>&nbsp;=&nbsp;file.<b>ID</b><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;obj.<b>mlProjectID</b>&nbsp;=&nbsp;folder.<b>ID</b><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;selList.<b>AddTail2</b>(obj)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">End</span>&nbsp;<span style="color:blue;">While</span><br>
&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green;">'Add&nbsp;menu&nbsp;items&nbsp;for&nbsp;registered&nbsp;add-ins&nbsp;</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">Dim</span>&nbsp;count&nbsp;<span style="color:blue;">As</span>&nbsp;<span style="color:blue;">Integer</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;count&nbsp;=&nbsp;0<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">Dim</span>&nbsp;startID&nbsp;<span style="color:blue;">As</span>&nbsp;<span style="color:blue;">Integer</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;startID&nbsp;=&nbsp;200<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">Dim</span>&nbsp;menuCallback&nbsp;<span style="color:blue;">As</span>&nbsp;<span style="color:#2b91af;">IEdmMenu6</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">Dim</span>&nbsp;ppoRetItems()&nbsp;<span style="color:blue;">As</span>&nbsp;<span style="color:#2b91af;">EdmCmdInfo</span>&nbsp;=&nbsp;<span style="color:blue;">Nothing</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;menuCallback&nbsp;=&nbsp;vault.<b>CreatePluginMenu2</b>(mnu.Handle.ToInt32(),&nbsp;3,&nbsp;startID,&nbsp;selList,&nbsp;<span style="color:#2b91af;">CreateMenuFlags</span>.Cmf_ContextMenu,&nbsp;count)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;menuCallback.<b>GetItems</b>(<span style="color:#2b91af;">EdmMenuFlags</span>.EdmMenu_Nothing,&nbsp;ppoRetItems)<br>
&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">Dim</span>&nbsp;str&nbsp;<span style="color:blue;">As</span>&nbsp;<span style="color:blue;">String</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">For</span>&nbsp;<span style="color:blue;">Each</span>&nbsp;item&nbsp;<span style="color:blue;">As</span>&nbsp;<span style="color:#2b91af;">EdmCmdInfo</span>&nbsp;<span style="color:blue;">In</span>&nbsp;ppoRetItems<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;str&nbsp;=&nbsp;<span style="color:#a31515;">&quot;Add-in&nbsp;menu&nbsp;command&nbsp;item:&nbsp;&quot;</span>&nbsp;&amp;&nbsp;vbLf<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;str&nbsp;=&nbsp;str&nbsp;&amp;&nbsp;<span style="color:#a31515;">&quot;Command&nbsp;ID:&nbsp;&quot;</span>&nbsp;&amp;&nbsp;item.<b>mlCmdID</b>&nbsp;&amp;&nbsp;vbLf<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;str&nbsp;=&nbsp;str&nbsp;&amp;&nbsp;<span style="color:#a31515;">&quot;Command&nbsp;string:&nbsp;&quot;</span>&nbsp;&amp;&nbsp;item.<b>mbsCmdStr</b>&nbsp;&amp;&nbsp;vbLf<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;str&nbsp;=&nbsp;str&nbsp;&amp;&nbsp;<span style="color:#a31515;">&quot;Tooltip:&nbsp;&quot;</span>&nbsp;&amp;&nbsp;item.<b>mbsTooltip</b>&nbsp;&amp;&nbsp;vbLf<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;str&nbsp;=&nbsp;str&nbsp;&amp;&nbsp;<span style="color:#a31515;">&quot;Status&nbsp;bar&nbsp;help:&nbsp;&quot;</span>&nbsp;&amp;&nbsp;item.<b>mbsStatusBarHelp</b>&nbsp;&amp;&nbsp;vbLf<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;str&nbsp;=&nbsp;str&nbsp;&amp;&nbsp;<span style="color:#a31515;">&quot;EdmMenuFlags:&nbsp;&quot;</span>&nbsp;&amp;&nbsp;item.<b>mlEdmMenuFlags</b><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MsgBox(str)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">Next</span><br>
&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green;">'Display&nbsp;the&nbsp;menu&nbsp;using&nbsp;Windows&nbsp;TrackPopupMenu&nbsp;function</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">Dim</span>&nbsp;TPM_RETURNCMD&nbsp;<span style="color:blue;">As</span>&nbsp;<span style="color:blue;">Integer</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TPM_RETURNCMD&nbsp;=&nbsp;256<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">Dim</span>&nbsp;cmdID&nbsp;<span style="color:blue;">As</span>&nbsp;<span style="color:blue;">Integer</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;frmParent&nbsp;=&nbsp;<span style="color:blue;">New</span>&nbsp;<span style="color:#2b91af;">Form</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cmdID&nbsp;=&nbsp;TrackPopupMenu(mnu.Handle,&nbsp;TPM_RETURNCMD,&nbsp;frmParent.Left,&nbsp;frmParent.Top,&nbsp;0,&nbsp;frmParent.Handle,&nbsp;0)<br>
&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green;">'Run&nbsp;the&nbsp;selected&nbsp;command</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">Select</span>&nbsp;<span style="color:blue;">Case</span>&nbsp;cmdID<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">Case</span>&nbsp;100<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MsgBox(<span style="color:#a31515;">&quot;First&nbsp;command&quot;</span>)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">Case</span>&nbsp;101<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MsgBox(<span style="color:#a31515;">&quot;Second&nbsp;command&quot;</span>)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">Case</span>&nbsp;102<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MsgBox(<span style="color:#a31515;">&quot;Third&nbsp;command&quot;</span>)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">Case&nbsp;Else</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MsgBox(cmdID)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">End</span>&nbsp;<span style="color:blue;">Select</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">End</span>&nbsp;<span style="color:blue;">Sub</span><br>
&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">Private</span>&nbsp;<span style="color:blue;">Declare</span>&nbsp;<span style="color:blue;">Function</span>&nbsp;InsertMenu&nbsp;<span style="color:blue;">Lib</span>&nbsp;<span style="color:#a31515;">&quot;user32&quot;</span>&nbsp;<span style="color:blue;">Alias</span>&nbsp;<span style="color:#a31515;">&quot;InsertMenuA&quot;</span>&nbsp;_<br>
&nbsp;&nbsp;&nbsp;&nbsp;(<span style="color:blue;">ByVal</span>&nbsp;hMenu&nbsp;<span style="color:blue;">As</span>&nbsp;System.<span style="color:#2b91af;">IntPtr</span>,&nbsp;_<br>
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">ByVal</span>&nbsp;uPosition&nbsp;<span style="color:blue;">As</span>&nbsp;<span style="color:blue;">Integer</span>,&nbsp;_<br>
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">ByVal</span>&nbsp;uFlags&nbsp;<span style="color:blue;">As</span>&nbsp;<span style="color:blue;">Integer</span>,&nbsp;_<br>
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">ByVal</span>&nbsp;uIDNewItem&nbsp;<span style="color:blue;">As</span>&nbsp;System.<span style="color:#2b91af;">IntPtr</span>,&nbsp;_<br>
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">ByVal</span>&nbsp;lpNewItem&nbsp;<span style="color:blue;">As</span>&nbsp;<span style="color:blue;">String</span>)&nbsp;<span style="color:blue;">As</span>&nbsp;<span style="color:blue;">Boolean</span><br>
&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">Private</span>&nbsp;<span style="color:blue;">Declare</span>&nbsp;<span style="color:blue;">Function</span>&nbsp;TrackPopupMenu&nbsp;<span style="color:blue;">Lib</span>&nbsp;<span style="color:#a31515;">&quot;user32&quot;</span>&nbsp;<span style="color:blue;">Alias</span>&nbsp;<span style="color:#a31515;">&quot;TrackPopupMenu&quot;</span>&nbsp;_<br>
&nbsp;&nbsp;&nbsp;&nbsp;(<span style="color:blue;">ByVal</span>&nbsp;hMenu&nbsp;<span style="color:blue;">As</span>&nbsp;<span style="color:#2b91af;">IntPtr</span>,&nbsp;_<br>
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">ByVal</span>&nbsp;uFlags&nbsp;<span style="color:blue;">As</span>&nbsp;<span style="color:blue;">Integer</span>,&nbsp;_<br>
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">ByVal</span>&nbsp;x&nbsp;<span style="color:blue;">As</span>&nbsp;<span style="color:blue;">Integer</span>,&nbsp;_<br>
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">ByVal</span>&nbsp;y&nbsp;<span style="color:blue;">As</span>&nbsp;<span style="color:blue;">Integer</span>,&nbsp;_<br>
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">ByVal</span>&nbsp;nReserved&nbsp;<span style="color:blue;">As</span>&nbsp;<span style="color:blue;">Integer</span>,&nbsp;_<br>
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">ByVal</span>&nbsp;hWnd&nbsp;<span style="color:blue;">As</span>&nbsp;<span style="color:#2b91af;">IntPtr</span>,&nbsp;_<br>
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">ByVal</span>&nbsp;prcRect&nbsp;<span style="color:blue;">As</span>&nbsp;<span style="color:#2b91af;">IntPtr</span>)&nbsp;<span style="color:blue;">As</span>&nbsp;<span style="color:blue;">Integer</span><br>
&nbsp;<br>
<span style="color:blue;">End</span>&nbsp;<span style="color:blue;">Module</span></p>
</font>
<p style="font-family: Courier New; font-size: 13; color: black; background: white url('')" align="center">
<a href="#Top">Back to top</a></p>
</body>
</html>