175 lines
21 KiB
HTML
175 lines
21 KiB
HTML
<html>
|
|
|
|
<head>
|
|
<title>Display Menu of Add-ins Commands 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>Display Menu of Commands Example (VB.NET)</h1>
|
|
<p><a name="Top"></a>This example shows how to display a menu of commands, including commands registered by any SOLIDWORKS PDM Professional add-ins and the Administrate Add-ins command.</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="MenuCommands.gif" width="220" height="198"></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;">' Preconditions:</span><br>
|
|
<span style="color:green;">' 1. Start Microsoft Visual Studio.</span><br>
|
|
<span style="color:green;">' a. Click <b>File > New > Project > Visual Basic > Console Application</b>.</span><br>
|
|
<span style="color:green;">' b. Type <b>MenuVBNET</b> in <b>Name</b>.</span><br>
|
|
<span style="color:green;">' c. Click <b>Browse</b> and navigate to the folder where to create the project. </span><br>
|
|
<span style="color:green;">' d. Click <b>OK</b>.</span><br>
|
|
<span style="color:green;">' e. Replace the code in <b>Module1.vb</b> with <a href="#Module1">this code</a>.</span><br>
|
|
<span style="color:green;">' 2. Add <b>EPDM.Interop.epdm.dll</b> as a reference (right-click the project</span><br>
|
|
<span style="color:green;">' name in the Solution Explorer, click <b>Add Reference</b>, click </span><br>
|
|
<span style="color:green;">' <b>Assemblies > Framework</b> in the left-side panel, browse to the top folder of </span><br>
|
|
<span style="color:green;">' your SOLIDWORKS PDM Professional installation, locate and click </span><br>
|
|
<span style="color:green;">' <b>EPDM.Interop.epdm.dll</b>, click <b>Open</b>, and click <b>Add</b>).<br>
|
|
' 3. Add <b>System.Windows.Forms</b> as a reference (click <b>System.Windows.Forms<br>
|
|
</b>' in the Name column, click <b>Add</b>, and click <b>Close</b>).</span><br>
|
|
<span style="color:green;">' 4. Right-click <b>EPDM.Interop.epdm</b> in <b>References</b>, click <b>Properties</b>, and set </span><br>
|
|
<span style="color:green;">' <b>Embed Interop Types</b> to <b>False</b> to handle methods that pass arrays of </span><br>
|
|
<span style="color:green;">' structures.<br>
|
|
' 5. Replace <i>ACME_LAB</i> with the name of a valid vault view.</span><br>
|
|
<span style="color:green;">' 6. Click <b>Debug > Start Debugging</b> or press F5.</span><br>
|
|
<span style="color:green;">'<br>
|
|
' Postconditions: </span><br>
|
|
<span style="color: green">' 1. Displays the command window.</span><br>
|
|
<span style="color: green">' a. Click anywhere on the desktop.</span><br>
|
|
<span style="color: green">' b. Displays the menu in the upper-left corner of the desktop.</span><br>
|
|
<span style="color: green">' c. Click <b>First Command</b> in the menu.</span><br>
|
|
<span style="color: green">' d. Click <b>OK</b> to close the message box.</span><br>
|
|
<span style="color: green">' e. Click the command window and press any key.</span><br>
|
|
<span style="color: green">' f. Closes the command window and exits the application.</span><br>
|
|
<span style="color: green">' 2. Click <b>Debug > Start Debugging</b> or press F5 again.</span><br>
|
|
<span style="color: green">' a. Displays the command window.</span><br>
|
|
<span style="color: green">' b. Click anywhere on the desktop.</span><br>
|
|
<span style="color: green">' c. Displays the menu in the upper-left corner of the desktop.</span><br>
|
|
<span style="color: green">' d. Click the <b>Administrate Add-ins</b> in the menu.</span><br>
|
|
<span style="color: green">' 1. Displays the Administrate Add-ins dialog box.</span><br>
|
|
<span style="color: green">' 2. Click <b>Cancel</b> to close the dialog box.</span><br>
|
|
<span style="color: green">' e. Click the command window and press any key.</span><br>
|
|
<span style="color: green">' f. Closes the command window and exits the 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>
|
|
<span style="color:blue;">Imports</span> EPDM.Interop.epdm<br>
|
|
<span style="color:blue;">Imports</span> System.Windows.Forms<br>
|
|
<br>
|
|
|
|
<span style="color:blue;">Module</span> <span style="color:#2b91af;">Module1</span><br>
|
|
<br>
|
|
<span style="color:blue;">Dim</span> vault <span style="color:blue;">As</span> <span style="color:#2b91af;">EdmVault5</span><br>
|
|
<span style="color:blue;">Dim</span> frmParent <span style="color:blue;">As</span> <span style="color:#2b91af;">Form</span><br>
|
|
<br>
|
|
<br>
|
|
<span style="color:blue;">Sub</span> Main()<br>
|
|
<span style="color:blue;">Try</span><br>
|
|
<span style="color:green;">'Create a vault interface</span><br>
|
|
vault = <span style="color:blue;">New</span> <span style="color:#2b91af;">EdmVault5</span>()<br>
|
|
<br>
|
|
<span style="color:green;">'Log into vault</span><br>
|
|
vault.<b>LoginAuto</b>(<span style="color:#a31515;">"</span><span style="color: #A31515"><i>ACME_LAB</i></span><span style="color:#a31515;">"</span>, 0)<br>
|
|
<br>
|
|
<span style="color:green;">'Show menu</span><br>
|
|
ShowMenu(vault)<br>
|
|
<br>
|
|
<span style="color:blue;">Catch</span> ex <span style="color:blue;">As</span> System.Runtime.InteropServices.<span style="color:#2b91af;">COMException</span><br>
|
|
MsgBox(<span style="color:#a31515;">"HRESULT = 0x"</span> + ex.ErrorCode.ToString(<span style="color:#a31515;">"X"</span>) + <span style="color:#a31515;">" "</span> + ex.Message)<br>
|
|
<span style="color:blue;">Catch</span> ex <span style="color:blue;">As</span> <span style="color:#2b91af;">Exception</span><br>
|
|
MsgBox(ex.Message)<br>
|
|
<span style="color:blue;">End</span> <span style="color:blue;">Try</span><br>
|
|
<br>
|
|
<span style="color:#2b91af;">Console</span>.WriteLine()<br>
|
|
<span style="color:#2b91af;">Console</span>.WriteLine(<span style="color:#a31515;">"Press any key to exit."</span>)<br>
|
|
<span style="color:#2b91af;">Console</span>.ReadKey()<br>
|
|
<br>
|
|
<span style="color:blue;">End</span> <span style="color:blue;">Sub</span><br>
|
|
<br>
|
|
<span style="color:blue;">Private</span> <span style="color:blue;">Sub</span> ShowMenu(<span style="color:blue;">ByVal</span> vault <span style="color:blue;">As</span> <span style="color:#2b91af;">IEdmVault12</span>)<br>
|
|
<span style="color:green;">'Create a context-sensitive menu <br>
|
|
'using Windows InsertMenu function</span><br>
|
|
<span style="color:blue;">Dim</span> mnu <span style="color:blue;">As</span> System.Windows.Forms.<span style="color:#2b91af;">ContextMenu</span><br>
|
|
mnu = <span style="color:blue;">New</span> System.Windows.Forms.<span style="color:#2b91af;">ContextMenu</span><br>
|
|
<br>
|
|
InsertMenu(mnu.Handle, 0, 0, 100, <span style="color:#a31515;">"First Command"</span>)<br>
|
|
InsertMenu(mnu.Handle, 0, 0, 101, <span style="color:#a31515;">"Second Command"</span>)<br>
|
|
InsertMenu(mnu.Handle, 0, 0, 102, <span style="color:#a31515;">"Third Command"</span>)<br>
|
|
<br>
|
|
<span style="color:green;">'Create a selection list with all files in the root folder</span><br>
|
|
<span style="color:blue;">Dim</span> selList <span style="color:blue;">As</span> <span style="color:#2b91af;">IEdmSelectionList6</span><br>
|
|
selList = <span style="color:blue;">New</span> <span style="color:#2b91af;">EdmSelectionList5</span><br>
|
|
<br>
|
|
<span style="color:blue;">Dim</span> folder <span style="color:blue;">As</span> <span style="color:#2b91af;">IEdmFolder6</span><br>
|
|
folder = vault.<b>RootFolder</b><br>
|
|
<span style="color:blue;">Dim</span> pos <span style="color:blue;">As</span> <span style="color:#2b91af;">IEdmPos5</span><br>
|
|
pos = folder.<b>GetFirstFilePosition</b>()<br>
|
|
<span style="color:blue;">While</span> <span style="color:blue;">Not</span> pos.<b>IsNull</b><br>
|
|
<span style="color:blue;">Dim</span> file <span style="color:blue;">As</span> <span style="color:#2b91af;">IEdmFile8</span><br>
|
|
file = folder.<b>GetNextFile</b>(pos)<br>
|
|
<span style="color:blue;">Dim</span> obj <span style="color:blue;">As</span> <span style="color:#2b91af;">EdmSelectionObject</span><br>
|
|
obj.mbsPath = file.<b>GetLocalPath</b>(folder.ID)<br>
|
|
obj.meType = file.<b>ObjectType</b><br>
|
|
obj.mlID = file.<b>ID</b><br>
|
|
obj.mlProjectID = folder.<b>ID</b><br>
|
|
selList.<b>AddTail2</b>(obj)<br>
|
|
<span style="color:blue;">End</span> <span style="color:blue;">While</span><br>
|
|
<br>
|
|
<span style="color:green;">'Add menu items for registered add-ins and add <br>
|
|
'the Administrate Add-ins command</span><br>
|
|
<span style="color:blue;">Dim</span> count <span style="color:blue;">As</span> <span style="color:blue;">Integer</span><br>
|
|
count = 0<br>
|
|
<span style="color:blue;">Dim</span> startID <span style="color:blue;">As</span> <span style="color:blue;">Integer</span><br>
|
|
startID = 200<br>
|
|
<span style="color:blue;">Dim</span> menuCallback <span style="color:blue;">As</span> <span style="color:#2b91af;">IEdmMenu7</span><br>
|
|
menuCallback = vault.<b>CreatePluginMenu2</b>(mnu.Handle.ToInt32(), 3, startID, selList, <span style="color:#2b91af;">CreateMenuFlags</span>.Cmf_ContextMenu + <span style="color:#2b91af;">CreateMenuFlags</span>.Cmf_IncludeAdminReactors, count)<br>
|
|
<br>
|
|
<span style="color:green;">'Display the menu using Windows TrackPopupMenu function</span><br>
|
|
<span style="color:blue;">Dim</span> TPM_RETURNCMD <span style="color:blue;">As</span> <span style="color:blue;">Integer</span><br>
|
|
TPM_RETURNCMD = 256<br>
|
|
<span style="color:blue;">Dim</span> cmdID <span style="color:blue;">As</span> <span style="color:blue;">Integer</span><br>
|
|
frmParent = <span style="color:blue;">New</span> <span style="color:#2b91af;">Form</span><br>
|
|
cmdID = TrackPopupMenu(mnu.Handle, TPM_RETURNCMD, frmParent.Left, frmParent.Top, 0, frmParent.Handle, 0)<br>
|
|
<br>
|
|
<span style="color:green;">'Run the selected command</span><br>
|
|
<span style="color:blue;">Select</span> <span style="color:blue;">Case</span> cmdID<br>
|
|
<span style="color:blue;">Case</span> 100<br>
|
|
MsgBox(<span style="color:#a31515;">"First command"</span>)<br>
|
|
<span style="color:blue;">Case</span> 101<br>
|
|
MsgBox(<span style="color:#a31515;">"Second command"</span>)<br>
|
|
<span style="color:blue;">Case</span> 102<br>
|
|
MsgBox(<span style="color:#a31515;">"Third command"</span>)<br>
|
|
<span style="color:blue;">Case Else</span><br>
|
|
menuCallback.<b>OnMenuItem2</b>(cmdID, mnu.Handle.ToInt32(), vault.<b>RootFolderID</b>, selList)<br>
|
|
<span style="color:blue;">End</span> <span style="color:blue;">Select</span><br>
|
|
<span style="color:blue;">End</span> <span style="color:blue;">Sub</span><br>
|
|
<br>
|
|
<span style="color:blue;">Private</span> <span style="color:blue;">Declare</span> <span style="color:blue;">Function</span> InsertMenu <span style="color:blue;">Lib</span> <span style="color:#a31515;">"user32"</span> <span style="color:blue;">Alias</span> <span style="color:#a31515;">"InsertMenuA"</span> _<br>
|
|
(<span style="color:blue;">ByVal</span> hMenu <span style="color:blue;">As</span> System.<span style="color:#2b91af;">IntPtr</span>, _<br>
|
|
<span style="color:blue;">ByVal</span> uPosition <span style="color:blue;">As</span> <span style="color:blue;">Integer</span>, _<br>
|
|
<span style="color:blue;">ByVal</span> uFlags <span style="color:blue;">As</span> <span style="color:blue;">Integer</span>, _<br>
|
|
<span style="color:blue;">ByVal</span> uIDNewItem <span style="color:blue;">As</span> System.<span style="color:#2b91af;">IntPtr</span>, _<br>
|
|
<span style="color:blue;">ByVal</span> lpNewItem <span style="color:blue;">As</span> <span style="color:blue;">String</span>) <span style="color:blue;">As</span> <span style="color:blue;">Boolean</span><br>
|
|
<br>
|
|
<span style="color:blue;">Private</span> <span style="color:blue;">Declare</span> <span style="color:blue;">Function</span> TrackPopupMenu <span style="color:blue;">Lib</span> <span style="color:#a31515;">"user32"</span> <span style="color:blue;">Alias</span> <span style="color:#a31515;">"TrackPopupMenu"</span> _<br>
|
|
(<span style="color:blue;">ByVal</span> hMenu <span style="color:blue;">As</span> <span style="color:#2b91af;">IntPtr</span>, _<br>
|
|
<span style="color:blue;">ByVal</span> uFlags <span style="color:blue;">As</span> <span style="color:blue;">Integer</span>, _<br>
|
|
<span style="color:blue;">ByVal</span> x <span style="color:blue;">As</span> <span style="color:blue;">Integer</span>, _<br>
|
|
<span style="color:blue;">ByVal</span> y <span style="color:blue;">As</span> <span style="color:blue;">Integer</span>, _<br>
|
|
<span style="color:blue;">ByVal</span> nReserved <span style="color:blue;">As</span> <span style="color:blue;">Integer</span>, _<br>
|
|
<span style="color:blue;">ByVal</span> hWnd <span style="color:blue;">As</span> <span style="color:#2b91af;">IntPtr</span>, _<br>
|
|
<span style="color:blue;">ByVal</span> prcRect <span style="color:blue;">As</span> <span style="color:#2b91af;">IntPtr</span>) <span style="color:blue;">As</span> <span style="color:blue;">Integer</span><br>
|
|
<br>
|
|
|
|
<span style="color:blue;">End</span> <span style="color:blue;">Module</span></p>
|
|
|
|
</body>
|
|
|
|
</html>
|