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