Files
pdm/documentation/api_extracted/Schedule_Task_Addin_Example_VBNET.htm

384 lines
42 KiB
HTML

<html>
<head>
<title>Create a Task that Finds Approved Files 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">
<style type="text/css">
.auto-style1 {
font-size: x-small;
}
.auto-style3 {
font-size: x-small;
}
.auto-style2 {
color: #2B91AF;
}
</style>
</head>
<meta name=MS-HKWD content="Add-ins, VB.NET">
<meta name=MS-HKWD content="VB.NET add-ins">
<meta name=MS-HKWD content="VB.NET add-ins,tasks">
<meta name=MS-HKWD content="VB.NET add-ins,hooks">
<meta name=MS-HKWD content="VB.NET add-ins,workflows">
<meta name=MS-HKWD content="VB.NET add-ins,states">
<meta name=MS-HKWD content="VB.NET add-ins,searches">
<meta name=MS-HKWD content="VB.NET add-ins,notifications">
<body>
<h1><font size="1"><span style="font-weight: 400">SOLIDWORKS PDM Professional API Help</span></h1>
<h1>Create a Task that Finds Approved Files Example (VB.NET)</h1>
<p>This example shows how to create a task add-in that notifies the logged-in
user as to which files in
the vault are in the Approved state.</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;2.&nbsp;Click&nbsp;<b>File&nbsp;&gt;&nbsp;New&nbsp;&gt;&nbsp;Project&nbsp;&gt;&nbsp;Visual&nbsp;Basic&nbsp;&gt;&nbsp;Class&nbsp;Library
(.NET Framework)</b>.</span><br>
<span style="color:green;">
'&nbsp;3. Select&nbsp;<b>.NET&nbsp;Framework&nbsp;4.5 </b>or
later&nbsp;in&nbsp;the&nbsp;dropdown.</span><br>
<span style="color:green;">'&nbsp;4. Type&nbsp;<b>TaskAddinExample</b>&nbsp;in&nbsp;<b>Name</b>.</span><br>
<span style="color:green;">'&nbsp;5. 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.</span><br>
<span style="color:green;">'&nbsp;6. Click&nbsp;<b>OK</b>.&nbsp;</span><br>
<span style="color:green;">
'&nbsp;7.&nbsp;Right-click&nbsp;the&nbsp;project&nbsp;name&nbsp;in&nbsp;the Solution&nbsp;Explorer&nbsp;and&nbsp;click&nbsp;<b>Add&nbsp;Reference</b>.&nbsp;<br>
' 8. In&nbsp;the&nbsp;Add&nbsp;Reference&nbsp;dialog:&nbsp;&nbsp;&nbsp;</span><br>
<span style="color:green;">'&nbsp;&nbsp;&nbsp;&nbsp;a.&nbsp;Add&nbsp;the
SOLIDWORKS&nbsp;PDM&nbsp;Professional <font size="2"><span style="color:green;">
interop assembly</span></font>&nbsp;as&nbsp;a&nbsp;reference&nbsp;<font size="2"><span style="color:green;">(click&nbsp;<strong>Browse</strong>&nbsp;in&nbsp;the</span><br>
<span style="color: #008000">//</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;left-side&nbsp;panel,&nbsp;click
<strong>EPDM.Interop.epdm.dll</strong>,&nbsp;<br>
//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; and click&nbsp;<strong>OK</strong>).</font></span><br>
<span style="color: #008000">'</span><span style="color:green;">&nbsp;&nbsp;&nbsp;&nbsp;b.&nbsp;Add&nbsp;<b>System.Windows.Forms</b>&nbsp;as&nbsp;a&nbsp;reference&nbsp;(click&nbsp;<b>Assemblies
&gt; Framework</b>&nbsp;in&nbsp;the</span><br>
<span style="color: #008000">'</span><span style="color:green;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;left-side&nbsp;panel,&nbsp;click&nbsp;<b>System.Windows.Forms</b>,&nbsp;and&nbsp;click&nbsp;<b>Add</b>).</span><br>
<span style="color: #008000">'</span><span style="color:green;">&nbsp;&nbsp;&nbsp;&nbsp;c.&nbsp;Click&nbsp;<b>Close</b>.<br>
' 9. Right-click the project name in the Solution Explorer and click <b>
Properties</b>.<br>
'10. In the Properties window:<br>
'&nbsp;&nbsp;&nbsp; a. On the Application tab, click<b> Assembly Information</b>.<br>
'&nbsp;&nbsp;&nbsp; b. De-select <b>Make assembly COM-Visible</b>.<br>
'&nbsp;&nbsp;&nbsp; c. On the Compile tab, <font size="1" class="auto-style1">
<span style="color:green;">select <strong>Any CPU</strong>, de-select <strong>
Prefer 32-bit</strong>, and select <b>Register for COM interop</b></span></font>.<br>
'11. Save the project.<br>
'12. Copy the code below to <b>Class1.vb</b>.<br>
'13. </span><font size="2"><font color="#008000">To populate the GUID
attribute, click <b>Tools &gt; Create GUID</b> in the IDE, <br>
'&nbsp;&nbsp;&nbsp; select GUID Format
6, click <b>Copy</b>, and click <b>Exit</b>. Replace
&lt;</font><span style="color:#008000;">Guid</span><font color="#008000">(</font><span style="color:#008000;">&quot;&quot;</span><font color="#008000">)&gt;
with the <br>
'&nbsp;&nbsp;&nbsp; copied string.</font></font><br>
<span style="color:green;">'14.&nbsp;Click <b>Build &gt; Build Solution</b>.</span><br>
<span style="color:green;">'</span><br>
<span style="color:green;">'&nbsp;Postconditions:<br>
'&nbsp; 1. Open&nbsp;the&nbsp;SOLIDWORKS PDM Professional&nbsp;Administration&nbsp;tool,&nbsp;expand&nbsp;a&nbsp;<i>vault_name</i>&nbsp;node,&nbsp;<br>
'&nbsp;&nbsp;&nbsp;&nbsp; and&nbsp;log&nbsp;in&nbsp;as&nbsp;Admin.</span><br>
<span style="color:green;">'&nbsp; 2.&nbsp;Ensure&nbsp;that&nbsp;Default&nbsp;Workflow&nbsp;with&nbsp;an
Approved state exists&nbsp;<br>
'&nbsp;&nbsp;&nbsp;&nbsp; under&nbsp;<i>vault_name</i>&nbsp;<b>&gt;&nbsp;Workflows</b>.</span><br>
<span style="color:green;">'&nbsp; 3.&nbsp;</span><span style="color:green;">Under
<i>vault_name</i>, right-click <b>Add-ins</b>&nbsp;and&nbsp;click&nbsp;<b>New&nbsp;Add-in</b>.<br>
'&nbsp;&nbsp;&nbsp;&nbsp; a. Navigate to the </span>
<span style="color:green;"><b>bin\Debug </b></span><span style="color:green;">directory of your built
project.</span><br>
<span style="color:green;">'&nbsp;&nbsp;&nbsp;&nbsp; b.&nbsp;Click&nbsp;<b>EPDM.Interop.epdm.dll</b>&nbsp;and&nbsp;<b>TaskAddinExample.dll</b>.<br>
'&nbsp;&nbsp;&nbsp;&nbsp; c. Click&nbsp;<b>Open</b>.</span><br>
<span style="color:green;">'&nbsp;&nbsp;&nbsp;&nbsp; d.&nbsp;Click&nbsp;<b>OK</b>.</span><br>
<span style="color:green;">'&nbsp; 4.&nbsp;Click&nbsp;<b>OK</b>&nbsp;after
reading&nbsp;the&nbsp;SOLIDWORKS&nbsp;PDM&nbsp;Professional&nbsp;warning&nbsp;dialog.<br>
</span>
<span style="color:green;">'&nbsp; 5.&nbsp;In the taskbar notification area:<br>
'&nbsp;&nbsp;&nbsp;&nbsp; a. Click the SOLIDWORKS PDM icon.<br>
'&nbsp;&nbsp;&nbsp;&nbsp; b. Click <b>Task Host Configuration</b>.<br>
'&nbsp;&nbsp;&nbsp;&nbsp; c. Select <i>vault_name</i> in the <b>File Vault</b>
dropdown.<br>
'&nbsp;&nbsp;&nbsp;&nbsp; d. Select <b>Permit</b> next to the add-in you
installed in step 3.<br>
'&nbsp;&nbsp;&nbsp;&nbsp; e. Click <b>OK</b>.</span><br>
<span style="color:green;">'&nbsp; 6.&nbsp;In the Administration tool under <i>vault_name, </i>
right-click<b> Tasks </b>and click&nbsp;<b>New&nbsp;Task</b>.</span><br>
<span style="color:green;">'&nbsp;&nbsp;&nbsp;&nbsp; a.&nbsp;Type</span><span style="color: green">&nbsp;<b>Approved&nbsp;Files&nbsp;Task</b>&nbsp;in&nbsp;the&nbsp;upper-left&nbsp;text&nbsp;box.</span><br>
<span style="color:green;">'&nbsp;&nbsp;&nbsp;&nbsp; b.&nbsp;Select&nbsp;the&nbsp;<b>VB.NET&nbsp;Task&nbsp;Add-in</b>&nbsp;from&nbsp;the&nbsp;<b>Add-in</b>&nbsp;dropdown.</span><br>
<span style="color:green;">'&nbsp;&nbsp;&nbsp;
&nbsp;c.&nbsp;When&nbsp;the&nbsp;attach&nbsp;debugger&nbsp;message&nbsp;box&nbsp;appears:</span><br>
<span style="color:green;">'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;1.&nbsp;In&nbsp;the&nbsp;IDE,&nbsp;click&nbsp;<b>Debug&nbsp;&gt;&nbsp;Attach&nbsp;to&nbsp;Process&nbsp;&gt;&nbsp;ConisioAdmin.exe</b>.</span><br>
<span style="color:green;">'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;2.&nbsp;Click&nbsp;<b>Attach</b>.</span><br>
<span style="color:green;">'&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;3.&nbsp;Click&nbsp;<b>OK</b>&nbsp;to&nbsp;close&nbsp;the&nbsp;message&nbsp;box.</span><br>
<span style="color:green;">'&nbsp;&nbsp;&nbsp;&nbsp; d.&nbsp;Click&nbsp;<b>Next</b>.</span><br>
<span style="color:green;">'&nbsp;&nbsp;&nbsp; &nbsp;e.&nbsp;On&nbsp;the&nbsp;Execution&nbsp;Method&nbsp;properties&nbsp;page,&nbsp;select&nbsp;the
local&nbsp;computer.</span><br>
<span style="color:green;">'&nbsp;&nbsp;&nbsp;&nbsp; f.&nbsp;Click&nbsp;<b>Next</b>.</span><br>
<span style="color:green;">'&nbsp;&nbsp;&nbsp;&nbsp; g.&nbsp;On&nbsp;the&nbsp;Scheduling&nbsp;properties&nbsp;page,&nbsp;select&nbsp;<b>This&nbsp;task&nbsp;is&nbsp;not&nbsp;scheduled</b>.</span><br>
<span style="color:green;">'&nbsp;&nbsp;&nbsp;&nbsp; h.&nbsp;Click&nbsp;<b>Next</b>.</span><br>
<span style="color:green;">'&nbsp;&nbsp;&nbsp;&nbsp; i.&nbsp;On&nbsp;the&nbsp;Permissions&nbsp;property&nbsp;page,&nbsp;select&nbsp;<b>Admin</b>.</span><br>
<span style="color:green;">'&nbsp;&nbsp;&nbsp;&nbsp; j.&nbsp;Click&nbsp;<b>Next</b>.</span><br>
<span style="color:green;">'&nbsp;&nbsp;&nbsp; &nbsp;k.&nbsp;On&nbsp;the&nbsp;Success&nbsp;Notification&nbsp;property&nbsp;page:</span><br>
<span style="color:green;">'&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;1.&nbsp;Select&nbsp;<b>Notify&nbsp;the&nbsp;user&nbsp;who&nbsp;launched&nbsp;the&nbsp;task</b>.</span><br>
<span style="color:green;">'&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;2.&nbsp;In&nbsp;the&nbsp;<b>Subject</b>&nbsp;field,&nbsp;type&nbsp;<b>Success</b>.</span><br>
<span style="color:green;">'&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;3.&nbsp;In&nbsp;the&nbsp;<b>Text</b>&nbsp;field,&nbsp;type&nbsp;<b>The&nbsp;task&nbsp;successfully&nbsp;completed&nbsp;at</b>,
type a space,
<br>
'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; click&nbsp;<b>&gt;</b>,&nbsp;and&nbsp;click&nbsp;<b>Current Time</b>.</span><br>
<span style="color:green;">'&nbsp;&nbsp;&nbsp; &nbsp;l.&nbsp;Click&nbsp;<b>OK</b>&nbsp;to&nbsp;close&nbsp;the&nbsp;New&nbsp;Task&nbsp;dialog.</span><br>
<span style="color:green;">'&nbsp; 7.&nbsp;Expand&nbsp;<i>vault_name</i>&nbsp;<b>&gt;&nbsp;Tasks</b>&nbsp;and&nbsp;double-click&nbsp;<b>Task&nbsp;List</b>.</span><br>
<span style="color:green;">'&nbsp; 8.&nbsp;Click&nbsp;<b>Add&nbsp;Task</b>.&nbsp;<br>
'&nbsp;&nbsp;9. In&nbsp;the&nbsp;Add&nbsp;Task&nbsp;dialog:</span><br>
<span style="color:green;">'&nbsp;&nbsp;
&nbsp;&nbsp;a.&nbsp;Select&nbsp;<b>Approved&nbsp;Files&nbsp;Task</b>&nbsp;from&nbsp;the&nbsp;dropdown.</span><br>
<span style="color:green;">'&nbsp;&nbsp;&nbsp; &nbsp;b.&nbsp;Click&nbsp;<b>OK</b>.</span><br>
<span style="color:green;">'&nbsp;10.&nbsp;When&nbsp;the&nbsp;attach&nbsp;debugger&nbsp;message&nbsp;box&nbsp;appears:</span><br>
<span style="color:green;">'&nbsp;&nbsp; &nbsp;&nbsp;a.&nbsp;In&nbsp;the&nbsp;IDE,&nbsp;click&nbsp;<b>Debug&nbsp;&gt;&nbsp;Attach&nbsp;to&nbsp;Process&nbsp;&gt;&nbsp;TaskExecutor.exe</b>.</span><br>
<span style="color:green;">'&nbsp;&nbsp;&nbsp; &nbsp;b.&nbsp;Click&nbsp;<b>Attach</b>.</span><br>
<span style="color:green;">'&nbsp;&nbsp;&nbsp; &nbsp;c.&nbsp;Click&nbsp;<b>OK</b>&nbsp;to&nbsp;close&nbsp;the&nbsp;message&nbsp;box.</span><br>
<span style="color:green;">'&nbsp;11.&nbsp;The&nbsp;task&nbsp;appears&nbsp;in&nbsp;the&nbsp;<b>Pending tasks</b>&nbsp;list.&nbsp;Observe&nbsp;the&nbsp;task&nbsp;status.</span><br>
<span style="color:green;">
'&nbsp;12.&nbsp;When&nbsp;the&nbsp;task&nbsp;completes,&nbsp;the&nbsp;task moves
to the <b>Completed tasks</b><br>
'&nbsp;&nbsp;&nbsp;&nbsp; list. The logged-in&nbsp;user&nbsp;receives&nbsp;a&nbsp;notification&nbsp;with&nbsp;the&nbsp;list&nbsp;of&nbsp;approved&nbsp;files.</span><br>
<span style="color:green;">
'---------------------------------------------------------------------------------------</span><br>
&nbsp;<br>
<span style="color:blue;">Imports</span>&nbsp;EPDM.Interop.epdm<br>
<span style="color:blue;">Imports</span>&nbsp;System.Runtime.InteropServices<br>
<br>
&lt;<span style="color:#2b91af;">Guid</span>(<span style="color:#a31515;">&quot;&quot;</span>)&gt;<br>
&lt;<span style="color:#2b91af;">ComVisible</span>(<span style="color:blue;">True</span>)&gt;<br>
<span style="color:blue;">Public</span>&nbsp;<span style="color:blue;">Class</span>&nbsp;<span style="color:#2b91af;">TaskAddinExample</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">Implements</span>&nbsp;<span style="color:#2b91af;">IEdmAddIn5</span><br>
&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">Public</span>&nbsp;<span style="color:blue;">Sub</span>&nbsp;GetAddInInfo(&nbsp;_<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">ByRef</span>&nbsp;poInfo&nbsp;<span style="color:blue;">As</span>&nbsp;<span style="color:#2b91af;">EdmAddInInfo</span>,&nbsp;_<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">ByVal</span>&nbsp;poVault&nbsp;<span style="color:blue;">As</span>&nbsp;<span style="color:#2b91af;">IEdmVault5</span>,&nbsp;_<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">ByVal</span>&nbsp;poCmdMgr&nbsp;<span style="color:blue;">As</span>&nbsp;<span style="color:#2b91af;">IEdmCmdMgr5</span>)&nbsp;_<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">Implements</span>&nbsp;<span style="color:#2b91af;">IEdmAddIn5</span>.<b>GetAddInInfo</b><br>
&nbsp;<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;poInfo.<b>mbsAddInName</b>&nbsp;=&nbsp;_<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#a31515;">&quot;VB.NET&nbsp;Task&nbsp;Add-In&quot;</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;poInfo.<b>mbsCompany</b>&nbsp;=&nbsp;<span style="color:#a31515;">&quot;Dassault&nbsp;Systemes&quot;</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;poInfo.<b>mbsDescription</b>&nbsp;=&nbsp;_<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#a31515;">&quot;Exercise&nbsp;demonstrating&nbsp;a&nbsp;task&nbsp;that&nbsp;lists&nbsp;&quot;</span>&nbsp;_<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+&nbsp;<span style="color:#a31515;">&quot;files&nbsp;in&nbsp;the&nbsp;Approved&nbsp;state.&quot;</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;poInfo.<b>mlAddInVersion</b>&nbsp;=&nbsp;1<br>
&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green;">'Minimum&nbsp;SOLIDWORKS&nbsp;PDM&nbsp;Professional&nbsp;version</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green;">'needed&nbsp;for&nbsp;VB.Net&nbsp;Task&nbsp;Add-Ins&nbsp;is&nbsp;10.0</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;poInfo.<b>mlRequiredVersionMajor</b>&nbsp;=&nbsp;10<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;poInfo.<b>mlRequiredVersionMinor</b>&nbsp;=&nbsp;0<br>
&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green;">'Register&nbsp;this&nbsp;add-in&nbsp;as&nbsp;a&nbsp;task&nbsp;add-in</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;poCmdMgr.<b>AddHook</b>(<span style="color:#2b91af;">EdmCmdType</span>.<b>EdmCmd_TaskRun</b>)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green;">'Register&nbsp;this&nbsp;add-in&nbsp;to&nbsp;be&nbsp;called&nbsp;when</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green;">'selected&nbsp;as&nbsp;a&nbsp;task&nbsp;in&nbsp;the&nbsp;Administration&nbsp;tool</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;poCmdMgr.<b>AddHook</b>(<span style="color:#2b91af;">EdmCmdType</span>.<b>EdmCmd_TaskSetup</b>)<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;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;_<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ex.ErrorCode.ToString(<span style="color:#a31515;">&quot;X&quot;</span>)&nbsp;+&nbsp;vbCrLf&nbsp;+&nbsp;_<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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;&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;">Public</span>&nbsp;<span style="color:blue;">Sub</span>&nbsp;OnCmd(<span style="color:blue;">ByRef</span>&nbsp;poCmd&nbsp;<span style="color:blue;">As</span>&nbsp;<span style="color:#2b91af;">EdmCmd</span>,&nbsp;_<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font size="1"><span style="color:blue;" class="auto-style3">ByRef</span><span class="auto-style3">&nbsp;ppoData&nbsp;<span style="color:blue;">As</span>&nbsp;<span class="auto-style2">EdmCmdData</span>[]</span></font>)&nbsp;_<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">Implements</span>&nbsp;<span style="color:#2b91af;">IEdmAddIn5</span>.<b>OnCmd</b><br>
&nbsp;<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;PauseToAttachProcess(poCmd.<b>meCmdType</b>.ToString())<br>
&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">Select</span>&nbsp;<span style="color:blue;">Case</span>&nbsp;poCmd.<b>meCmdType</b><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">Case</span>&nbsp;<span style="color:#2b91af;">EdmCmdType</span>.<b>EdmCmd_TaskRun</b><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OnTaskRun(poCmd,&nbsp;ppoData)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">Case</span>&nbsp;<span style="color:#2b91af;">EdmCmdType</span>.<b>EdmCmd_TaskSetup</b><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OnTaskSetup(poCmd,&nbsp;ppoData)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&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;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">Catch</span>&nbsp;ex&nbsp;<span style="color:blue;">As</span>&nbsp;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;_<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ex.ErrorCode.ToString(<span style="color:#a31515;">&quot;X&quot;</span>)&nbsp;+&nbsp;vbCrLf&nbsp;+&nbsp;_<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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;&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;OnTaskRun(<span style="color:blue;">ByRef</span>&nbsp;poCmd&nbsp;<span style="color:blue;">As</span>&nbsp;<span style="color:#2b91af;">EdmCmd</span>,&nbsp;_<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font size="1"><span style="color:blue;" class="auto-style3">ByRef</span><span class="auto-style3">&nbsp;ppoData&nbsp;<span style="color:blue;">As</span>&nbsp;<span class="auto-style2">EdmCmdData</span>[]</span></font>)<br>
&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green;">'Get&nbsp;the&nbsp;task&nbsp;instance&nbsp;interface</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">Dim</span>&nbsp;inst&nbsp;<span style="color:blue;">As</span>&nbsp;<span style="color:#2b91af;">IEdmTaskInstance</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;inst&nbsp;=&nbsp;poCmd.<b>mpoExtra</b><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;">'Keep&nbsp;the&nbsp;task&nbsp;list&nbsp;status&nbsp;up&nbsp;to&nbsp;date</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;inst.<b>SetStatus</b>&nbsp;_<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(<span style="color:#2b91af;">EdmTaskStatus</span>.<b>EdmTaskStat_Running</b>)<br>
&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green;">'Format&nbsp;a&nbsp;message&nbsp;that&nbsp;will&nbsp;be&nbsp;displayed</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green;">'in&nbsp;the&nbsp;task&nbsp;list</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;inst.<b>SetProgressRange</b>(10,&nbsp;1,&nbsp;<span style="color:#a31515;">&quot;Task&nbsp;is&nbsp;running.&quot;</span>)<br>
&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">Dim</span>&nbsp;Items&nbsp;<span style="color:blue;">As</span>&nbsp;<span style="color:#2b91af;">List</span>(<span style="color:blue;">Of</span>&nbsp;<span style="color:#2b91af;">EdmSelItem2</span>)&nbsp;=&nbsp;_<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">New</span>&nbsp;<span style="color:#2b91af;">List</span>(<span style="color:blue;">Of</span>&nbsp;<span style="color:#2b91af;">EdmSelItem2</span>)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;inst.<b>SetProgressPos</b>(4,&nbsp;<span style="color:#a31515;">&quot;Task&nbsp;is&nbsp;searching.&quot;</span>)<br>
&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">Dim</span>&nbsp;Search&nbsp;<span style="color:blue;">As</span>&nbsp;<span style="color:#2b91af;">IEdmSearch6</span>&nbsp;=&nbsp;_<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;poCmd.<b>mpoVault</b>.<b>CreateSearch</b>()<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">If</span>&nbsp;Search&nbsp;<span style="color:blue;">Is</span>&nbsp;<span style="color:blue;">Nothing</span>&nbsp;<span style="color:blue;">Then</span>&nbsp;<span style="color:blue;">Return</span><br>
&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
<p style="font-family: Courier New; font-size: 13; color: black; background: white" class="APICODE">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Search.<b>SetToken</b>(&nbsp;_<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#2b91af;">EdmSearchToken</span>.<b>Edmstok_FindFiles</b>,&nbsp;<span style="color:blue;">True</span>)</p>
<p style="font-family: Courier New; font-size: 13; color: black; background: white" class="APICODE">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<span class="auto-style1">Search.</span><strong><span class="auto-style1">SetToken</span></strong><font size="1">(<span style="color:#2b91af;" class="auto-style1">EdmSearchToken</span>.</font><strong><span class="auto-style1">Edmstok_AllVersions</span></strong><font size="1"><span class="auto-style1">,
</span><span style="color:blue;"><span class="auto-style1">True</span>)</span></font><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Search.<b>SetToken</b>(&nbsp;_<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#2b91af;">EdmSearchToken</span>.<b>Edmstok_WorkflowName</b>,&nbsp;_<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#a31515;">&quot;Default&nbsp;Workflow&quot;</span>)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Search.<b>SetToken</b>(&nbsp;_<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#2b91af;">EdmSearchToken</span>.<b>Edmstok_StateName</b>,&nbsp;<span style="color:#a31515;">&quot;Approved&quot;</span>)<br>
&nbsp;</p>
<p style="font-family: Courier New; font-size: 13; color: black; background: white" class="APICODE">
<font color="#008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
'Uncomment and modify the following lines to look for files <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'that have a
card variable with values in a specific range</font></p>
<p style="font-family: Courier New; font-size: 13; color: black; background: white" class="APICODE">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<font color="#008000">'Dim varName1 As Object = &quot;<i>Card_Variable_ID_or_Name</i>&quot;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'Dim varValue1
As Object = &quot;<i>Card_Variable_Value_1</i>&quot;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'Dim varOp1
as Integer = <i>EdmVarOp_NumberGreaterThan</i><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'Dim varValue2
As Object = &quot;<i>Card_Variable_Value_2</i>&quot;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'Dim varOp2
as Integer = <i>EdmVarOp_NumberLessThan<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </i>'Search.<b>BeginAND</b><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'Search.<b>AddVariable2</b>(varName1,
varValue1, varOp1)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
'Search.<b>AddVariable2</b>(varName1,
varValue2, varOp2)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'Search.<b>EndAND</b></font><br>
&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">Dim</span>&nbsp;SearchResult&nbsp;<span style="color:blue;">As</span>&nbsp;<span style="color:#2b91af;">IEdmSearchResult5</span>&nbsp;=&nbsp;_<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Search.<b>GetFirstResult</b>()<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">While</span>&nbsp;<span style="color:blue;">Not</span>&nbsp;SearchResult&nbsp;<span style="color:blue;">Is</span>&nbsp;<span style="color:blue;">Nothing</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">Dim</span>&nbsp;SelItem&nbsp;<span style="color:blue;">As</span>&nbsp;<span style="color:#2b91af;">EdmSelItem2</span>&nbsp;=&nbsp;<span style="color:blue;">New</span>&nbsp;<span style="color:#2b91af;">EdmSelItem2</span>()<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SelItem.<b>mlID</b>&nbsp;=&nbsp;SearchResult.<b>ID</b><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SelItem.<b>mlParentID</b>&nbsp;=&nbsp;SearchResult.<b>ParentFolderID</b><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SelItem.<b>meType</b>&nbsp;=&nbsp;SearchResult.<b>ObjectType</b><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SelItem.<b>mlVersion</b>&nbsp;=&nbsp;SearchResult.<b>Version</b><br>
&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Items.Add(SelItem)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SearchResult&nbsp;=&nbsp;Search.<b>GetNextResult</b>()<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">End</span>&nbsp;<span style="color:blue;">While</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;inst.<b>SetProgressPos</b>(7,&nbsp;<span style="color:#a31515;">&quot;Task&nbsp;finished&nbsp;searching.&quot;</span>)<br>
&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">Dim</span>&nbsp;NotificationArray(Items.Count&nbsp;-&nbsp;1)&nbsp;_<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">As</span>&nbsp;<span style="color:#2b91af;">EdmSelItem2</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Items.CopyTo(NotificationArray)<br>
&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">Dim</span>&nbsp;ProgresssMsg&nbsp;<span style="color:blue;">As</span>&nbsp;<span style="color:blue;">String</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">If</span>&nbsp;(Items.Count&nbsp;&gt;&nbsp;0)&nbsp;<span style="color:blue;">Then</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ProgresssMsg&nbsp;=&nbsp;<span style="color:#a31515;">&quot;Found&nbsp;&quot;</span>&nbsp;+&nbsp;_<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Items.Count.ToString()&nbsp;+&nbsp;<span style="color:#a31515;">&quot;&nbsp;files.&quot;</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">Else</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ProgresssMsg&nbsp;=&nbsp;(<span style="color:#a31515;">&quot;No&nbsp;files&nbsp;found.&quot;</span>)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">End</span>&nbsp;<span style="color:blue;">If</span><br>
&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;inst.<b>SetProgressPos</b>(10,&nbsp;ProgresssMsg)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;inst.<b>SetStatus</b>(&nbsp;_<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#2b91af;">EdmTaskStatus</span>.<b>EdmTaskStat_DoneOK</b>,&nbsp;0,&nbsp;<span style="color:#a31515;">&quot;&quot;</span>,&nbsp;_<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NotificationArray,&nbsp;ProgresssMsg)<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;Runtime.InteropServices.<span style="color:#2b91af;">COMException</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;inst.<b>SetStatus</b>&nbsp;_<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(<span style="color:#2b91af;">EdmTaskStatus</span>.<b>EdmTaskStat_DoneFailed</b>,&nbsp;_<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ex.ErrorCode,&nbsp;<span style="color:#a31515;">&quot;The&nbsp;test&nbsp;task&nbsp;failed!&quot;</span>)<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;inst.<b>SetStatus</b>&nbsp;_<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(<span style="color:#2b91af;">EdmTaskStatus</span>.<b>EdmTaskStat_DoneFailed</b>,&nbsp;_<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0,&nbsp;<span style="color:#a31515;">&quot;Non&nbsp;COM&nbsp;test&nbsp;task&nbsp;failure!&quot;</span>)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">End</span>&nbsp;<span style="color:blue;">Try</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;">Sub</span>&nbsp;OnTaskSetup(<span style="color:blue;">ByRef</span>&nbsp;poCmd&nbsp;<span style="color:blue;">As</span>&nbsp;<span style="color:#2b91af;">EdmCmd</span>,&nbsp;_<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font size="1"><span style="color:blue;" class="auto-style3">ByRef</span><span class="auto-style3">&nbsp;ppoData&nbsp;<span style="color:blue;">As</span>&nbsp;<span class="auto-style2">EdmCmdData</span>[]</span></font>)<br>
&nbsp;<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;">'Get&nbsp;the&nbsp;property&nbsp;interface&nbsp;used&nbsp;to</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green;">'access&nbsp;the&nbsp;framework</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">Dim</span>&nbsp;props&nbsp;<span style="color:blue;">As</span>&nbsp;<span style="color:#2b91af;">IEdmTaskProperties</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;props&nbsp;=&nbsp;poCmd.<b>mpoExtra</b><br>
&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green;">'Set&nbsp;the&nbsp;property&nbsp;flag&nbsp;that&nbsp;says&nbsp;you&nbsp;want&nbsp;a</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green;">'menu&nbsp;item&nbsp;for&nbsp;the&nbsp;user&nbsp;to&nbsp;launch&nbsp;the&nbsp;task</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green;">'and&nbsp;a&nbsp;flag&nbsp;to&nbsp;support&nbsp;scheduling</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;props.<b>TaskFlags</b>&nbsp;=&nbsp;_<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#2b91af;">EdmTaskFlag</span>.<b>EdmTask_SupportsInitExec</b>&nbsp;+&nbsp;_<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#2b91af;">EdmTaskFlag</span>.<b>EdmTask_SupportsScheduling</b><br>
&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green;">'Set&nbsp;up&nbsp;the&nbsp;menu&nbsp;commands&nbsp;to&nbsp;launch&nbsp;this&nbsp;task</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">Dim</span>&nbsp;cmds(0)&nbsp;<span style="color:blue;">As</span>&nbsp;<span style="color:#2b91af;">EdmTaskMenuCmd</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cmds(0).<b>mbsMenuString</b>&nbsp;=&nbsp;<span style="color:#a31515;">&quot;List&nbsp;Approved&nbsp;files&nbsp;task&quot;</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cmds(0).<b>mbsStatusBarHelp</b>&nbsp;=&nbsp;_<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#a31515;">&quot;This&nbsp;command&nbsp;runs&nbsp;the&nbsp;task&nbsp;add-in&nbsp;to&nbsp;get&nbsp;the&quot;</span>&nbsp;+&nbsp;_<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#a31515;">&quot;&nbsp;names&nbsp;of&nbsp;the&nbsp;files&nbsp;in&nbsp;the&nbsp;Approved&nbsp;state.&quot;</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cmds(0).<b>mlCmdID</b>&nbsp;=&nbsp;1<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cmds(0).<b>mlEdmMenuFlags</b>&nbsp;=&nbsp;_<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#2b91af;">EdmMenuFlags</span>.<b>EdmMenu_Nothing</b><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;props.<b>SetMenuCmds</b>(cmds)<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;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;_<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ex.ErrorCode.ToString(<span style="color:#a31515;">&quot;X&quot;</span>)&nbsp;+&nbsp;vbCrLf&nbsp;+&nbsp;_<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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;&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;PauseToAttachProcess(&nbsp;_<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">ByVal</span>&nbsp;callbackType&nbsp;<span style="color:blue;">As</span>&nbsp;<span style="color:blue;">String</span>)<br>
&nbsp;<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;">'If&nbsp;the&nbsp;debugger&nbsp;isn't&nbsp;already&nbsp;attached&nbsp;to&nbsp;a</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green;">'process,&nbsp;</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">If</span>&nbsp;<span style="color:blue;">Not</span>&nbsp;<span style="color:#2b91af;">Debugger</span>.IsAttached()&nbsp;<span style="color:blue;">Then</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green;">'Launch&nbsp;the&nbsp;debug&nbsp;dialog</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green;">'Debugger.Launch()</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green;">'or</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green;">'use&nbsp;a&nbsp;MsgBox&nbsp;dialog&nbsp;to&nbsp;pause&nbsp;execution</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green;">'and&nbsp;allow&nbsp;the&nbsp;user&nbsp;time&nbsp;to&nbsp;attach&nbsp;it</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MsgBox(<span style="color:#a31515;">&quot;Attach&nbsp;debugger&nbsp;to&nbsp;process&nbsp;&quot;&quot;&quot;</span>&nbsp;+&nbsp;_<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#2b91af;">Process</span>.GetCurrentProcess.ProcessName()&nbsp;+&nbsp;_<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#a31515;">&quot;&quot;&quot;&nbsp;for&nbsp;callback&nbsp;&quot;&quot;&quot;</span>&nbsp;+&nbsp;callbackType&nbsp;+&nbsp;_<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#a31515;">&quot;&quot;&quot;&nbsp;before&nbsp;clicking&nbsp;OK.&quot;</span>)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">End</span>&nbsp;<span style="color:blue;">If</span><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;<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;&nbsp;&nbsp;&nbsp;<span style="color:blue;">End</span>&nbsp;<span style="color:blue;">Sub</span><br>
&nbsp;<br>
<span style="color:blue;">End</span>&nbsp;<span style="color:blue;">Class</span><br>
&nbsp;</p>
<pre style="font-family: Courier New; font-size: 13; color: black; background: white">&nbsp;</pre>
<p class="APICODE">&nbsp;</p>
<p class=APICODE>&nbsp;</p>
<p>&nbsp;</p>
</body>
</html>