Project

General

Profile

Statistics
| Revision:

vdfsplat / AppSrc / vdfdebug.pkg @ 56

History | View | Annotate | Download (55.5 KB)

1
//TH-Header
2
//*****************************************************************************************
3
// Copyright (c)  2013 Antwise Solutions
4
// All rights reserved.
5
//
6
// $FileName    : cDebuggerEngine
7
// $ProjectName : Splat ! Vdf Debugger
8
// $Authors     : Wil van Antwerpen
9
// $Created     : 12.14.2013  23:42
10
// $Type        : GPLv2
11
//
12
// Contents:
13
// Visual DataFlex COM proxy classes generated from vdfdbg.dll
14
// These have then been hand edited to support multiple versions in one
15
// executable.
16
// Otherwise we would have need an executable for each vdf version.
17
//
18
// An alternative approach would have been to use the create function and
19
// class name as variables, but then it would not have been possible to subclass
20
// the debugger engine.
21
//
22
// Please note that the ActiveX components are the property of Data Access
23
// Worldwide and that you will need to have a fully licensed copy of the
24
// development environment installed on your machine for this to work.
25
//
26
//
27
//*****************************************************************************************
28
//TH-RevisionStart
29
//TH-RevisionEnd
30
Use FlexCom20.pkg
31

    
32
Define CS_SPLATFATALCAPTION for "Fatal VdfSplat Debug Error"
33

    
34

    
35
// WindowType property - Tells what kind of variables will be displayed in the window
36
Define OLEdbgVariableWindows for Integer
37
    Define OLEDBGVARIABLEWINDOW_LOCAL for 0
38
    Define OLEDBGVARIABLEWINDOW_GLOBAL for 1
39

    
40
// CLSID:
41
// IDebuggerEngine Interface
42
Class cComIDebuggerEngine is a Mixin
43

    
44
    // Starts debugging the specified program
45
    Procedure ComStartProgram String llcmdLine Variant llwebApp Variant llurl
46
        Handle hDispatchDriver
47
        Get phDispatchDriver to hDispatchDriver
48
        Send PrepareParams to hDispatchDriver 3
49
        Send DefineParam to hDispatchDriver OLE_VT_BSTR llcmdLine
50
        Send DefineParam to hDispatchDriver OLE_VT_VARIANT llwebApp
51
        Send DefineParam to hDispatchDriver OLE_VT_VARIANT llurl
52
        Send InvokeComMethod to hDispatchDriver 1 OLE_VT_VOID
53
    End_Procedure
54
    
55
    // DF18.1 version of ComStartProgram, we use different name instead of overload as that technique
56
    // has been declared obsolete.
57
    //
58
    // Starts debugging the specified program
59
    Procedure ComStartProgram181 String llcmdLine Boolean llnoDebugHeap Variant llwebApp Variant llurl
60
        Handle hDispatchDriver
61
        Get phDispatchDriver to hDispatchDriver
62
        Send PrepareParams to hDispatchDriver 4
63
        Send DefineParam to hDispatchDriver OLE_VT_BSTR llcmdLine
64
        Send DefineParam to hDispatchDriver OLE_VT_BOOL llnoDebugHeap
65
        Send DefineParam to hDispatchDriver OLE_VT_VARIANT llwebApp
66
        Send DefineParam to hDispatchDriver OLE_VT_VARIANT llurl
67
        Send InvokeComMethod to hDispatchDriver 1 OLE_VT_VOID
68
    End_Procedure
69

    
70
    // Stops current debugging session
71
    Procedure ComStopProgram
72
        Handle hDispatchDriver
73
        Get phDispatchDriver to hDispatchDriver
74
        Send InvokeComMethod to hDispatchDriver 2 OLE_VT_VOID
75
    End_Procedure
76

    
77
    // Resumes execution of the debuggee process
78
    Procedure ComContinue
79
        Handle hDispatchDriver
80
        Get phDispatchDriver to hDispatchDriver
81
        Send InvokeComMethod to hDispatchDriver 3 OLE_VT_VOID
82
    End_Procedure
83

    
84
    // Steps into the next line of code
85
    Procedure ComStepInto
86
        Handle hDispatchDriver
87
        Get phDispatchDriver to hDispatchDriver
88
        Send InvokeComMethod to hDispatchDriver 4 OLE_VT_VOID
89
    End_Procedure
90

    
91
    // Steps over the next line of code
92
    Procedure ComStepOver
93
        Handle hDispatchDriver
94
        Get phDispatchDriver to hDispatchDriver
95
        Send InvokeComMethod to hDispatchDriver 5 OLE_VT_VOID
96
    End_Procedure
97

    
98
    // Steps out of the current function call
99
    Procedure ComStepOut
100
        Handle hDispatchDriver
101
        Get phDispatchDriver to hDispatchDriver
102
        Send InvokeComMethod to hDispatchDriver 6 OLE_VT_VOID
103
    End_Procedure
104

    
105
    // Breaks execution
106
    Procedure ComPause
107
        Handle hDispatchDriver
108
        Get phDispatchDriver to hDispatchDriver
109
        Send InvokeComMethod to hDispatchDriver 7 OLE_VT_VOID
110
    End_Procedure
111

    
112
    // Sets the specified breakpoint
113
    Function ComSetBreakPoint String llfile UInteger ByRef llline Returns Boolean
114
        Handle hDispatchDriver
115
        Boolean retVal
116
        Get phDispatchDriver to hDispatchDriver
117
        Send PrepareParams to hDispatchDriver 2
118
        Send DefineParam to hDispatchDriver OLE_VT_BSTR llfile
119
        Send DefineParam to hDispatchDriver (OLE_VT_BYREF ior OLE_VT_UI4) llline
120
        Get InvokeComMethod of hDispatchDriver 8 OLE_VT_BOOL to retVal
121
        Function_Return retVal
122
    End_Function
123

    
124
    // Removes the specified breakpoint
125
    Function ComRemoveBreakPoint String llfile UInteger llline Returns Boolean
126
        Handle hDispatchDriver
127
        Boolean retVal
128
        Get phDispatchDriver to hDispatchDriver
129
        Send PrepareParams to hDispatchDriver 2
130
        Send DefineParam to hDispatchDriver OLE_VT_BSTR llfile
131
        Send DefineParam to hDispatchDriver OLE_VT_UI4 llline
132
        Get InvokeComMethod of hDispatchDriver 9 OLE_VT_BOOL to retVal
133
        Function_Return retVal
134
    End_Function
135

    
136
    // Selects the active callstack entry
137
    Procedure ComSelectActiveQueueLevel Integer llqueueLevel
138
        Handle hDispatchDriver
139
        Get phDispatchDriver to hDispatchDriver
140
        Send PrepareParams to hDispatchDriver 1
141
        Send DefineParam to hDispatchDriver OLE_VT_I4 llqueueLevel
142
        Send InvokeComMethod to hDispatchDriver 10 OLE_VT_VOID
143
    End_Procedure
144

    
145
    // Evaluates the specified expression
146
    Function ComEval String llexpr String ByRef llresult Returns Boolean
147
        Handle hDispatchDriver
148
        Boolean retVal
149
        Get phDispatchDriver to hDispatchDriver
150
        Send PrepareParams to hDispatchDriver 2
151
        Send DefineParam to hDispatchDriver OLE_VT_BSTR llexpr
152
        Send DefineParam to hDispatchDriver (OLE_VT_BYREF ior OLE_VT_BSTR) llresult
153
        Get InvokeComMethod of hDispatchDriver 11 OLE_VT_BOOL to retVal
154
        Function_Return retVal
155
    End_Function
156

    
157
    // Triggers event OnUpdateView
158
    Procedure ComUpdateViews
159
        Handle hDispatchDriver
160
        Get phDispatchDriver to hDispatchDriver
161
        Send InvokeComMethod to hDispatchDriver 12 OLE_VT_VOID
162
    End_Procedure
163

    
164
    // Evaluates the specified expression asynchronously
165
    Procedure ComAsyncEval OLE_HANDLE llhWndListener Integer llexprID String llexpression
166
        Handle hDispatchDriver
167
        Get phDispatchDriver to hDispatchDriver
168
        Send PrepareParams to hDispatchDriver 3
169
        Send DefineParam to hDispatchDriver OLE_VT_I4 llhWndListener
170
        Send DefineParam to hDispatchDriver OLE_VT_I4 llexprID
171
        Send DefineParam to hDispatchDriver OLE_VT_BSTR llexpression
172
        Send InvokeComMethod to hDispatchDriver 13 OLE_VT_VOID
173
    End_Procedure
174

    
175
    // Resumes execution up to the specified line
176
    Procedure ComRunToLine String llfile UInteger llline
177
        Handle hDispatchDriver
178
        Get phDispatchDriver to hDispatchDriver
179
        Send PrepareParams to hDispatchDriver 2
180
        Send DefineParam to hDispatchDriver OLE_VT_BSTR llfile
181
        Send DefineParam to hDispatchDriver OLE_VT_UI4 llline
182
        Send InvokeComMethod to hDispatchDriver 14 OLE_VT_VOID
183
    End_Procedure
184

    
185
    // Returns the source line from the specified command number
186
    Function ComGetSourceLineFromCommand Integer llcmd Integer ByRef llline Returns String
187
        Handle hDispatchDriver
188
        String retVal
189
        Get phDispatchDriver to hDispatchDriver
190
        Send PrepareParams to hDispatchDriver 2
191
        Send DefineParam to hDispatchDriver OLE_VT_I4 llcmd
192
        Send DefineParam to hDispatchDriver (OLE_VT_BYREF ior OLE_VT_I4) llline
193
        Get InvokeComMethod of hDispatchDriver 15 OLE_VT_BSTR to retVal
194
        Function_Return retVal
195
    End_Function
196

    
197
    // Returns array of all messages in program
198
    Function ComGetAllMessages Returns String[]
199
        Handle hDispatchDriver
200
        String[] retVal
201
        Get phDispatchDriver to hDispatchDriver
202
        Get InvokeComMethod of hDispatchDriver 16 (OLE_VT_ARRAY ior OLE_VT_BSTR) to retVal
203
        Function_Return retVal
204
    End_Function
205

    
206
    // Returns whether the specified source file is part of the debuggee program
207
    Function ComIsValidSourceFile String llfile Returns Boolean
208
        Handle hDispatchDriver
209
        Boolean retVal
210
        Get phDispatchDriver to hDispatchDriver
211
        Send PrepareParams to hDispatchDriver 1
212
        Send DefineParam to hDispatchDriver OLE_VT_BSTR llfile
213
        Get InvokeComMethod of hDispatchDriver 17 OLE_VT_BOOL to retVal
214
        Function_Return retVal
215
    End_Function
216

    
217
    // Returns the instruction address of the specified source file and line number
218
    Function ComGetCommandFromSourceLine String llfile UInteger llline Returns Integer
219
        Handle hDispatchDriver
220
        Integer retVal
221
        Get phDispatchDriver to hDispatchDriver
222
        Send PrepareParams to hDispatchDriver 2
223
        Send DefineParam to hDispatchDriver OLE_VT_BSTR llfile
224
        Send DefineParam to hDispatchDriver OLE_VT_UI4 llline
225
        Get InvokeComMethod of hDispatchDriver 18 OLE_VT_I4 to retVal
226
        Function_Return retVal
227
    End_Function
228

    
229
    // Requests the runtime to reallocate the specified buffer
230
    Function ComReallocProgramBuffer Char ByRef llpData Integer llsize Returns Char
231
        Handle hDispatchDriver
232
        Char retVal
233
        Get phDispatchDriver to hDispatchDriver
234
        Send PrepareParams to hDispatchDriver 2
235
        Send DefineParam to hDispatchDriver (OLE_VT_BYREF ior OLE_VT_I1) llpData
236
        Send DefineParam to hDispatchDriver OLE_VT_I4 llsize
237
        Get InvokeComMethod of hDispatchDriver 19 (OLE_VT_BYREF ior OLE_VT_I1) to retVal
238
        Function_Return retVal
239
    End_Function
240
    
241
    // Introduced in vdf14.1
242
    // Returns a list of attachable processes
243
    Function ComGetAttachableProcesses Returns UInteger[]
244
        Handle hDispatchDriver
245
        UInteger[] retVal
246
        Get phDispatchDriver to hDispatchDriver
247
        Get InvokeComMethod of hDispatchDriver 20 (OLE_VT_ARRAY ior OLE_VT_UI4) to retVal
248
        Function_Return retVal
249
    End_Function
250

    
251
    // Introduced in vdf14.1
252
    // Attaches and starts debugging the specified process
253
    Procedure ComAttachProcess UInteger llpid
254
        Handle hDispatchDriver
255
        Get phDispatchDriver to hDispatchDriver
256
        Send PrepareParams to hDispatchDriver 1
257
        Send DefineParam to hDispatchDriver OLE_VT_UI4 llpid
258
        Send InvokeComMethod to hDispatchDriver 21 OLE_VT_VOID
259
    End_Procedure
260

    
261
    // Introduced in vdf15.0
262
    // Sets the specified conditional breakpoint expression
263
    Function ComSetBreakPointCondition String llfile UInteger ByRef llline String llexpr Returns Boolean
264
        Handle hDispatchDriver
265
        Boolean retVal
266
        Get phDispatchDriver to hDispatchDriver
267
        Send PrepareParams to hDispatchDriver 3
268
        Send DefineParam to hDispatchDriver OLE_VT_BSTR llfile
269
        Send DefineParam to hDispatchDriver (OLE_VT_BYREF ior OLE_VT_UI4) llline
270
        Send DefineParam to hDispatchDriver OLE_VT_BSTR llexpr
271
        Get InvokeComMethod of hDispatchDriver 22 OLE_VT_BOOL to retVal
272
        Function_Return retVal
273
    End_Function
274

    
275
    // Introduced in vdf15.0
276
    // Attempts to adjust the current instruction pointer to the specified file and line
277
    Function ComSetNextInstruction String llfile UInteger llline Returns Boolean
278
        Handle hDispatchDriver
279
        Boolean retVal
280
        Get phDispatchDriver to hDispatchDriver
281
        Send PrepareParams to hDispatchDriver 2
282
        Send DefineParam to hDispatchDriver OLE_VT_BSTR llfile
283
        Send DefineParam to hDispatchDriver OLE_VT_UI4 llline
284
        Get InvokeComMethod of hDispatchDriver 23 OLE_VT_BOOL to retVal
285
        Function_Return retVal
286
    End_Function
287
    
288
End_Class
289

    
290
// CLSID:
291
// _IDebuggerEngineEvents Interface
292
Class cCom_IDebuggerEngineEvents is a Mixin
293

    
294
    // Occurs after program has been successfully initialized
295
    { MethodType=Event }
296
    Procedure OnComProgramInit
297
    End_Procedure
298

    
299
    // Occurs after the program exits
300
    { MethodType=Event }
301
    Procedure OnComProgramExit
302
    End_Procedure
303

    
304
    // Occurs if there is an error starting the program
305
    { MethodType=Event }
306
    Procedure OnComProgramStartupError String llerrorMessage
307
    End_Procedure
308

    
309
    // Occurs if there is an error initializing the program
310
    { MethodType=Event }
311
    Procedure OnComProgramInitError String llerrorMessage
312
    End_Procedure
313

    
314
    // Occurs when the program execution is paused
315
    { MethodType=Event }
316
    Procedure OnComProgramPaused String llfile UInteger llline Boolean lllimitedBreakMode
317
    End_Procedure
318

    
319
    // Occurs when the program execution resumes
320
    { MethodType=Event }
321
    Procedure OnComProgramContinue
322
    End_Procedure
323

    
324
    // Occurs after a change requiring views to be refreshed
325
    { MethodType=Event }
326
    Procedure OnComUpdateView String llfile UInteger llline
327
    End_Procedure
328

    
329
    // Occurs when a new message is executed
330
    { MethodType=Event }
331
    Procedure OnComNewMessage Integer llbSteppin
332
    End_Procedure
333

    
334
    // Occurs if an unhandled program exception is detected
335
    { MethodType=Event }
336
    Procedure OnComUnhandledProgramException String lldescription
337
    End_Procedure
338

    
339
    // Occurs if there is an incoming request for another web app session. You can abandon the current session and switch to the new session or deny the new session and continue debugging the current session
340
    { MethodType=Event }
341
    Procedure OnComAcceptWebAppSession Boolean ByRef llacceptNewSession
342
    End_Procedure
343

    
344
    // Occurs if there is a fatal web app error
345
    { MethodType=Event }
346
    Procedure OnComWebAppError String lldescription
347
    End_Procedure
348

    
349
    // Occurs when a new webapp event log entry is added
350
    { MethodType=Event }
351
    Procedure OnComWebAppLog Integer lleventId String lltext
352
    End_Procedure
353

    
354
    // Introduced in vdf15.0
355
    // Occurs if there was an error evaluating a conditional breakpoint
356
    { MethodType=Event }
357
    Procedure OnComBreakPointError String lltext
358
    End_Procedure
359
    
360

    
361
    { Visibility=Private }
362
    Procedure RegisterComEvents
363
        Integer iRuntimeVersion
364
        
365
        Get piRuntimeVersion To iRuntimeVersion
366
        Send RegisterComEvent 1 msg_OnComProgramInit
367
        Send RegisterComEvent 2 msg_OnComProgramExit
368
        Send RegisterComEvent 3 msg_OnComProgramStartupError
369
        Send RegisterComEvent 4 msg_OnComProgramInitError
370
        Send RegisterComEvent 5 msg_OnComProgramPaused
371
        Send RegisterComEvent 6 msg_OnComProgramContinue
372
        Send RegisterComEvent 7 msg_OnComUpdateView
373
        Send RegisterComEvent 8 msg_OnComNewMessage
374
        Send RegisterComEvent 9 msg_OnComUnhandledProgramException
375
        Send RegisterComEvent 10 msg_OnComAcceptWebAppSession
376
        Send RegisterComEvent 11 msg_OnComWebAppError
377
        Send RegisterComEvent 12 msg_OnComWebAppLog
378
        If (iRuntimeVersion >= 150) Begin
379
          Send RegisterComEvent 13 msg_OnComBreakPointError
380
        End
381
    End_Procedure
382
End_Class
383

    
384
// CoClass
385
// ProgID: VDFDebugger.DebuggerEngine.xx.yy
386
// CLSID:
387
// DebuggerEngine Class
388
Class cComCDebuggerEngine is a cComAutomationObject
389
    Import_Class_Protocol cComIDebuggerEngine
390
    Import_Class_Protocol cCom_IDebuggerEngineEvents
391

    
392
    Procedure Construct_Object
393
        Property Integer piRuntimeVersion      0
394
        
395
        Send Construct_Runtime_Object
396

    
397
        Forward Send Construct_Object
398

    
399
        Set peAutoCreate to acNoAutoCreate
400
    End_Procedure
401
    
402
    Procedure Construct_Runtime_Object
403
      Integer iRuntimeVersion
404
      
405
      Send DetermineRuntimeVersion
406
      Get piRuntimeVersion To iRuntimeVersion
407
      If (iRuntimeVersion>0) Begin
408
        Case Begin
409
          Case (iRuntimeVersion=121)
410
            Set psProgID  to "{5D1787AA-8784-44C1-9DC9-23691B555BC5}"
411
            Set psEventId to "{095A09B6-44D2-47A7-831D-FAC23B90E647}"
412
            Case Break
413
          Case (iRuntimeVersion=140)
414
            Set psProgID  to "{C42F9C95-1C4D-4B82-AC23-E2987C133C89}"
415
            Set psEventId to "{BACC0261-865D-4461-A4D0-DD1DAAD76DCF}"
416
            Case Break
417
          Case (iRuntimeVersion=141)
418
            Set psProgID  to "{D4E8A085-6BCB-401E-8935-53B0BC3DE1F7}"
419
            Set psEventId to "{42057C20-ACDD-437A-B2F7-0A5022F1D907}"
420
            Case Break
421
          Case (iRuntimeVersion=150)
422
            Set psProgID  to "{B05C6BA2-22E1-4F33-9CC0-1FCF4238C150}"
423
            Set psEventId to "{BF31B3B2-D914-4E62-9D37-23723833FF8A}"
424
            Case Break
425
          Case (iRuntimeVersion=151)
426
            Set psProgID  to "{D0F02260-D707-4DD7-940E-C35EB389D16B}"
427
            Set psEventId to "{9590FEB3-ABD2-4763-AFDB-A218196A9C6F}"
428
            Case Break
429
          Case (iRuntimeVersion=160)
430
            Set psProgID  to "{B7ED76CF-D6F8-4528-8275-2F3F792E008B}"
431
            Set psEventId to "{0EBB5A76-0143-45A7-884E-0E252A11795E}"
432
            Case Break
433
          Case (iRuntimeVersion=161)
434
            Set psProgID  to "{5B894619-D007-4A25-9786-FE0CD2C414BA}"
435
            Set psEventId to "{264BB78F-E976-4BD6-A217-8D10D2AF718D}"
436
            Case Break
437
          Case (iRuntimeVersion=170)
438
            Set psProgID  to "{06CDD06C-BDCC-4EC7-AC76-6D05677E2B18}"
439
            Set psEventId to "{6B877F88-533E-451A-867F-DC19C4384288}"
440
            Case Break
441
          Case (iRuntimeVersion=171)
442
            Set psProgID  to "{EC61BA89-1E93-4218-84CD-BF60813C296D}"
443
            Set psEventId to "{3E68B693-41EF-4DBB-AF45-0593F5396501}"
444
            Case Break
445
          Case (iRuntimeVersion=180)
446
            Set psProgID  to "{BA11DE00-6B72-40D4-AC0D-E5FFAAF0B8CC}"
447
            Set psEventId to "{216D2FA6-C7EF-4A89-87BA-8AB5E2D71000}"
448
            Case Break
449
          Case (iRuntimeVersion=181)
450
            Set psProgID  to "{171F96C0-5821-4944-A9AD-A181370171B5}"
451
            Set psEventId to "{BB17ACB2-A5A0-49EE-AFDE-D47A13D0F8DA}"
452
            Case Break
453
          Case (iRuntimeVersion=182)
454
            Set psProgID  to "{2F6ADD84-7CE0-46B3-B3DA-681CC5A95A83}"
455
            Set psEventId to "{56C51041-E9CB-4A2D-8FFF-31B0676B2292}"
456
            Case Break
457
          Case (iRuntimeVersion=190)
458
            Set psProgID  to "{B947F0F4-13FF-499B-854E-BDE229EF6B0C}"
459
            Set psEventId to "{CD4D543E-6821-4F48-BB51-7180EA842021}"
460
            Case Break
461
          Case Else
462
            Send Stop_Box ("The debug component for VDF"*trim(iRuntimeVersion)*"has not yet been defined.") CS_SPLATFATALCAPTION
463
            Abort
464
        Case End
465
      End
466
      Else Begin
467
        Send Stop_Box "Could not determine runtime version of passed application." CS_SPLATFATALCAPTION
468
        Abort
469
      End
470
    End_Procedure // Construct_Runtime_Object
471
    
472
    Procedure DetermineRuntimeVersion
473
    End_Procedure // DetermineRuntimeVersion
474
End_Class
475

    
476
// CLSID:
477
// ICallStack Interface
478
Class cComICallStack is a Mixin
479

    
480
    // property MessageColumnWidth
481
    { MethodType=Property DesignTime=False }
482
    Function ComMessageColumnWidth Returns Integer
483
        Handle hDispatchDriver
484
        Integer retVal
485
        Get phDispatchDriver to hDispatchDriver
486
        Get InvokeComMethod of hDispatchDriver 1 OLE_VT_I4 to retVal
487
        Function_Return retVal
488
    End_Function
489

    
490
    // property MessageColumnWidth
491
    { MethodType=Property DesignTime=False }
492
    Procedure Set ComMessageColumnWidth Integer value
493
        Handle hDispatchDriver
494
        Get phDispatchDriver to hDispatchDriver
495
        Send PrepareParams to hDispatchDriver 1
496
        Set ComProperty of hDispatchDriver 1 OLE_VT_I4 to value
497
    End_Procedure
498

    
499
    // property ObjectColumnWidth
500
    { MethodType=Property DesignTime=False }
501
    Function ComObjectColumnWidth Returns Integer
502
        Handle hDispatchDriver
503
        Integer retVal
504
        Get phDispatchDriver to hDispatchDriver
505
        Get InvokeComMethod of hDispatchDriver 2 OLE_VT_I4 to retVal
506
        Function_Return retVal
507
    End_Function
508

    
509
    // property ObjectColumnWidth
510
    { MethodType=Property DesignTime=False }
511
    Procedure Set ComObjectColumnWidth Integer value
512
        Handle hDispatchDriver
513
        Get phDispatchDriver to hDispatchDriver
514
        Send PrepareParams to hDispatchDriver 1
515
        Set ComProperty of hDispatchDriver 2 OLE_VT_I4 to value
516
    End_Procedure
517
End_Class
518

    
519
// CLSID:
520
// _ICallStackEvents Interface
521
Class cCom_ICallStackEvents is a Mixin
522

    
523
    { Visibility=Private }
524
    Procedure RegisterComEvents
525
    End_Procedure
526
End_Class
527

    
528
// CoClass
529
// ProgID: VDFDebugger.CallStack.xx.yy
530
// CLSID:
531
// CallStack Class
532
Class cComCCallStack is a cComActiveXControl
533
    Import_Class_Protocol cComICallStack
534
    Import_Class_Protocol cCom_ICallStackEvents
535

    
536
    Procedure Construct_Object
537
        Property Integer piRuntimeVersion      0
538
        
539
        Send Construct_Runtime_Object
540

    
541
        Forward Send Construct_Object
542
        
543
        Set peAutoCreate to acDeferredAutoCreate
544
    End_Procedure
545
    
546
    Procedure Construct_Runtime_Object
547
      Integer iRuntimeVersion
548
      
549
      Send DetermineRuntimeVersion
550
      Get piRuntimeVersion To iRuntimeVersion
551
      If (iRuntimeVersion>0) Begin
552
        Case Begin
553
          Case (iRuntimeVersion=121)
554
            Set psProgID  to "{A03ABC66-F7B4-431D-97BC-50A14EDF6801}"
555
            Set psEventId to "{69F6877B-5D55-4B53-B800-31F8D70A5865}"
556
            Case Break
557
          Case (iRuntimeVersion=140)
558
            Set psProgID  to "{6DF90F7D-B29C-4753-9D5A-22E1F68D8AAB}"
559
            Set psEventId to "{A1BCC09D-F31D-4210-8061-B9F15300E981}"
560
            Case Break
561
          Case (iRuntimeVersion=141)
562
            Set psProgID  to "{23158C9C-11D0-4235-A17A-E45BDD3D7B5B}"
563
            Set psEventId to "{3D452939-8654-4D7E-A153-080155DD13BF}"
564
            Case Break
565
          Case (iRuntimeVersion=150)
566
            Set psProgID  to "{316ACE93-D566-4D98-A1DE-8C5B8D049C5F}"
567
            Set psEventId to "{B952BFAC-39CE-4FF5-B3A5-96E7964DBEAF}"
568
            Case Break
569
          Case (iRuntimeVersion=151)
570
            Set psProgID  to "{27A64009-1EA1-4D8A-9CDF-397E2623A789}"
571
            Set psEventId to "{711066C1-D52F-4182-8CD6-273501AE411A}"
572
            Case Break
573
          Case (iRuntimeVersion=160)
574
            Set psProgID  to "{A24F04F5-18D2-4D8D-B47C-53BCA01CDFC2}"
575
            Set psEventId to "{4B9989B2-3EC1-4388-95CD-D1C7129179B6}"
576
            Case Break
577
          Case (iRuntimeVersion=161)
578
            Set psProgID  to "{085F69A7-64C9-4AD8-85AF-3ACD5D7223AC}"
579
            Set psEventId to "{CD23CF24-8977-4501-B46E-CE3D2E351EFE}"
580
            Case Break
581
          Case (iRuntimeVersion=170)
582
            Set psProgID  to "{0FCE23F5-C38D-456F-9B7A-7DD0CCF0BAA3}"
583
            Set psEventId to "{55801305-66DE-4D00-B08D-144214A11217}"
584
            Case Break
585
          Case (iRuntimeVersion=171)
586
            Set psProgID  to "{84421400-9D1E-4BCF-8FE3-B7A2BB7DF429}"
587
            Set psEventId to "{D0B6752E-0D47-43E4-A437-9C56C77B03DA}"
588
            Case Break
589
          Case (iRuntimeVersion=180)
590
            Set psProgID  to "{66B11369-FA28-4344-BAA2-F595500C2B4E}"
591
            Set psEventId to "{46832FCB-926C-4B33-A0F7-F3F109D432A0}"
592
            Case Break
593
          Case (iRuntimeVersion=181)
594
            Set psProgID  to "{F29634D8-9A2A-4A9B-8DBA-C68949A25DAF}"
595
            Set psEventId to "{DC45918E-F658-4D97-BC84-77314530643B}"
596
            Case Break
597
          Case (iRuntimeVersion=182)
598
            Set psProgID  to "{9C6ACD13-4F6F-4D36-8D04-8AC916983087}"
599
            Set psEventId to "{40A518EF-465F-47A3-86AF-F3D9E62BA493}"
600
            Case Break
601
          Case (iRuntimeVersion=190)
602
            Set psProgID  to "{E2568C04-384E-47CF-BC94-0EFA5E2F982B}"
603
            Set psEventId to "{690FA63D-01B7-439E-89F7-69656C52656E}"
604
            Case Break
605
          Case Else
606
            Send Stop_Box ("The callstack component for VDF"*trim(iRuntimeVersion)*"has not yet been defined.") CS_SPLATFATALCAPTION
607
            Abort
608
        Case End
609
      End
610
      Else Begin
611
        Send Stop_Box "Could not determine runtime version of passed application for callstack." CS_SPLATFATALCAPTION
612
        Abort
613
      End
614
    End_Procedure // Construct_Runtime_Object
615
    
616
    Procedure DetermineRuntimeVersion
617
    End_Procedure // DetermineRuntimeVersion
618
    
619
End_Class
620

    
621
// CLSID: {149B7FCC-117B-4407-AC2B-67338349D701}
622
// IMessageTrace Interface
623
Class cComIMessageTrace is a Mixin
624

    
625
    // property bTraceOn - controles if tracing is turned on or off
626
    { MethodType=Property DesignTime=False }
627
    Function ComBTraceOn Returns Integer
628
        Handle hDispatchDriver
629
        Integer retVal
630
        Get phDispatchDriver to hDispatchDriver
631
        Get InvokeComMethod of hDispatchDriver 1 OLE_VT_I4 to retVal
632
        Function_Return retVal
633
    End_Function
634

    
635
    // property bTraceOn - controles if tracing is turned on or off
636
    { MethodType=Property DesignTime=False }
637
    Procedure Set ComBTraceOn Integer value
638
        Handle hDispatchDriver
639
        Get phDispatchDriver to hDispatchDriver
640
        Send PrepareParams to hDispatchDriver 1
641
        Set ComProperty of hDispatchDriver 1 OLE_VT_I4 to value
642
    End_Procedure
643

    
644
    // method LoadFilters - provide array of message names that are supposed to be filtered
645
    Procedure ComLoadFilters String[] llsaFilters
646
        Handle hDispatchDriver
647
        Get phDispatchDriver to hDispatchDriver
648
        Send PrepareParams to hDispatchDriver 1
649
        Send DefineParam to hDispatchDriver (OLE_VT_ARRAY ior OLE_VT_BSTR) llsaFilters
650
        Send InvokeComMethod to hDispatchDriver 2 OLE_VT_VOID
651
    End_Procedure
652

    
653
    // method ClearFilters - dont apply any filters
654
    Procedure ComClearFilters
655
        Handle hDispatchDriver
656
        Get phDispatchDriver to hDispatchDriver
657
        Send InvokeComMethod to hDispatchDriver 3 OLE_VT_VOID
658
    End_Procedure
659

    
660
    // property sLogFileName - name of the file where traced messages will be stored
661
    { MethodType=Property DesignTime=False }
662
    Function ComSLogFileName Returns String
663
        Handle hDispatchDriver
664
        String retVal
665
        Get phDispatchDriver to hDispatchDriver
666
        Get InvokeComMethod of hDispatchDriver 4 OLE_VT_BSTR to retVal
667
        Function_Return retVal
668
    End_Function
669

    
670
    // property sLogFileName - name of the file where traced messages will be stored
671
    { MethodType=Property DesignTime=False }
672
    Procedure Set ComSLogFileName String value
673
        Handle hDispatchDriver
674
        Get phDispatchDriver to hDispatchDriver
675
        Send PrepareParams to hDispatchDriver 1
676
        Set ComProperty of hDispatchDriver 4 OLE_VT_BSTR to value
677
    End_Procedure
678

    
679
    // method ClearTrace - clears tree. It works only when tracing is currently off
680
    Procedure ComClearTrace
681
        Handle hDispatchDriver
682
        Get phDispatchDriver to hDispatchDriver
683
        Send InvokeComMethod to hDispatchDriver 7 OLE_VT_VOID
684
    End_Procedure
685

    
686
    // method AddFilter - add one message to filter array
687
    Procedure ComAddFilter String llsFilter
688
        Handle hDispatchDriver
689
        Get phDispatchDriver to hDispatchDriver
690
        Send PrepareParams to hDispatchDriver 1
691
        Send DefineParam to hDispatchDriver OLE_VT_BSTR llsFilter
692
        Send InvokeComMethod to hDispatchDriver 8 OLE_VT_VOID
693
    End_Procedure
694

    
695

    
696
    // Introduced in vdf14.0
697
    // method SaveTracer - Saves content of a tree. Parameter controles if children of unexpanded nodes should be processed too
698
    Procedure ComSaveTracer Integer llbAsIs
699
        Handle hDispatchDriver
700
        Get phDispatchDriver to hDispatchDriver
701
        Send PrepareParams to hDispatchDriver 1
702
        Send DefineParam to hDispatchDriver OLE_VT_I4 llbAsIs
703
        Send InvokeComMethod to hDispatchDriver 9 OLE_VT_VOID
704
    End_Procedure
705
    
706
End_Class
707

    
708
// CLSID: {768B3472-A53F-4969-A250-4AB0756FDB5F}
709
// _IMessageTraceEvents Interface
710
Class cCom_IMessageTraceEvents is a Mixin
711

    
712
    // method OnMessageClicked - fired when user clicked node in a message trace tree
713
    { MethodType=Event }
714
    Procedure OnComMessageClicked UInteger llcommandNo
715
    End_Procedure
716

    
717
    // method OnAddMsg2Filter  - when user selected context menu for the add 2 filter message option
718
    { MethodType=Event }
719
    Procedure OnComAddMsg2Filter String llsMessageName
720
    End_Procedure
721

    
722
    // method OnFilterOptions - fired when user wants to bring dialog for defining message filters
723
    { MethodType=Event }
724
    Procedure OnComFilterOptions
725
    End_Procedure
726

    
727
    // Introduced in vdf14.0
728
    // method OnContextMenu - fired when user right clicked to bring up context menu
729
    { MethodType=Event }
730
    Procedure OnComContextMenu String llsMessageName UInteger llpoint
731
    End_Procedure
732

    
733

    
734
    { Visibility=Private }
735
    Procedure RegisterComEvents
736
        Integer iRuntimeVersion
737
        
738
        Get piRuntimeVersion To iRuntimeVersion
739
        Send RegisterComEvent 1 msg_OnComMessageClicked
740
        Send RegisterComEvent 2 msg_OnComAddMsg2Filter
741
        Send RegisterComEvent 3 msg_OnComFilterOptions
742
        If (iRuntimeVersion >= 140) Begin
743
          Send RegisterComEvent 4 msg_OnComContextMenu
744
        End
745
    End_Procedure
746
End_Class
747

    
748
// CoClass
749
// ProgID: vdfdbg.MessageTrace.12.1
750
// CLSID: {BDC0465B-AA4A-460B-81FC-1D080CAF697B}
751
// MessageTrace Class { CLSID="{BDC0465B-AA4A-460B-81FC-1D080CAF697B}" }
752
Class cComCMessageTrace is a cComActiveXControl
753
    Import_Class_Protocol cComIMessageTrace
754
    Import_Class_Protocol cCom_IMessageTraceEvents
755

    
756
    Procedure Construct_Object
757
        Property Integer piRuntimeVersion      0
758
        
759
        Send Construct_Runtime_Object
760
        
761
        Forward Send Construct_Object
762
        
763
        Set peAutoCreate to acDeferredAutoCreate
764
    End_Procedure
765
    
766
    
767
    Procedure Construct_Runtime_Object
768
      Integer iRuntimeVersion
769
      
770
      Send DetermineRuntimeVersion
771
      Get piRuntimeVersion To iRuntimeVersion
772
      If (iRuntimeVersion>0) Begin
773
        Case Begin
774
          Case (iRuntimeVersion=121)
775
            Set psProgID  to "{BDC0465B-AA4A-460B-81FC-1D080CAF697B}"
776
            Set psEventId to "{768B3472-A53F-4969-A250-4AB0756FDB5F}"
777
            Case Break
778
          Case (iRuntimeVersion=140)
779
            Set psProgID  to "{59CD8C8A-AF59-4F30-A4AC-7F70EACBDBD3}"
780
            Set psEventId to "{FC3691BE-70F8-4858-AD54-752B836B0864}"
781
            Case Break
782
          Case (iRuntimeVersion=141)
783
            Set psProgID  to "{F145CCCD-379A-42F1-B87B-3549E63A29BE}"
784
            Set psEventId to "{4E40C6A3-2221-4548-8CBE-95572863C91A}"
785
            Case Break
786
          Case (iRuntimeVersion=150)
787
            Set psProgID  to "{A485BFAE-42C9-4CEC-93BC-4C5B697588C0}"
788
            Set psEventId to "{DC4E3B27-ACB9-4C09-9F55-971235949335}"
789
            Case Break
790
          Case (iRuntimeVersion=151)
791
            Set psProgID  to "{990C4CA5-8F9E-4F8B-8CCB-036C1DF45B0E}"
792
            Set psEventId to "{A1E70110-2B34-4E2B-8499-CECB0A6C1034}"
793
            Case Break
794
          Case (iRuntimeVersion=160)
795
            Set psProgID  to "{70EEB655-0A2D-4817-B494-05090CC2EB38}"
796
            Set psEventId to "{F8207FD8-C7DD-4F04-B5FA-4EDF6F050045}"
797
            Case Break
798
          Case (iRuntimeVersion=161)
799
            Set psProgID  to "{B44EF827-949F-4B18-8AA9-09333D8C6795}"
800
            Set psEventId to "{83B6388A-4171-4DAF-84C7-AED86BAF1FDD}"
801
            Case Break
802
          Case (iRuntimeVersion=170)
803
            Set psProgID  to "{CA71995D-FBBD-4B2C-AB22-D4F930F38A73}"
804
            Set psEventId to "{13DAD475-F098-4998-9458-5D55409E2FF3}"
805
            Case Break
806
          Case (iRuntimeVersion=171)
807
            Set psProgID  to "{96D1BE93-C668-4ED2-A019-C8A8038BBC6F}"
808
            Set psEventId to "{FEC2001F-C38C-4B82-B50A-27DF170E80F5}"
809
            Case Break
810
          Case (iRuntimeVersion=180)
811
            Set psProgID  to "{E1ECE87A-2D84-4992-810B-FE774EC06821}"
812
            Set psEventId to "{2FDB7CED-1C53-4777-915F-57AAE38D9448}"
813
            Case Break
814
          Case (iRuntimeVersion=181)
815
            Set psProgID  to "{4EE6A8B2-B87A-45D5-864A-1DB75DC3E256}"
816
            Set psEventId to "{B7123F3C-6795-4B9B-9FEB-32E444B92841}"
817
            Case Break
818
          Case (iRuntimeVersion=182)
819
            Set psProgID  to "{3D6DC1D2-F6D1-4720-9B04-562A4849FF4B}"
820
            Set psEventId to "{F356E55F-B70A-4C5D-BDAB-1FD06C22D58D}"
821
            Case Break
822
          Case (iRuntimeVersion=190)
823
            Set psProgID  to "{2763EF43-1793-4737-B732-27D983821342}"
824
            Set psEventId to "{0E4DFEAB-36A9-4C67-BD0F-82D1D50ABA11}"
825
            Case Break
826
          Case Else
827
            Send Stop_Box ("The message trace component for VDF"*trim(iRuntimeVersion)*"has not yet been defined.") CS_SPLATFATALCAPTION
828
            Abort
829
        Case End
830
      End
831
      Else Begin
832
        Send Stop_Box "Could not determine runtime version of passed application for message trace." CS_SPLATFATALCAPTION
833
        Abort
834
      End
835
    End_Procedure // Construct_Runtime_Object
836
    
837
    Procedure DetermineRuntimeVersion
838
    End_Procedure // DetermineRuntimeVersion
839
    
840
End_Class
841

    
842
// CLSID: {ED3CE9E1-32A8-4BE6-82E4-054939FD335A}
843
// ITablesWindow Interface
844
Class cComITablesWindow is a Mixin
845

    
846
    // property ColumnWidth
847
    { MethodType=Property DesignTime=False }
848
    Function ComColumnWidth Integer lllColumnIndex Returns Integer
849
        Handle hDispatchDriver
850
        Integer retVal
851
        Get phDispatchDriver to hDispatchDriver
852
        Send PrepareParams to hDispatchDriver 1
853
        Send DefineParam to hDispatchDriver OLE_VT_I4 lllColumnIndex
854
        Get InvokeComMethod of hDispatchDriver 1 OLE_VT_I4 to retVal
855
        Function_Return retVal
856
    End_Function
857

    
858
    // property ColumnWidth
859
    { MethodType=Property DesignTime=False }
860
    Procedure Set ComColumnWidth Integer lllColumnIndex Integer value
861
        Handle hDispatchDriver
862
        Get phDispatchDriver to hDispatchDriver
863
        Send PrepareParams to hDispatchDriver 2
864
        Send DefineParam to hDispatchDriver OLE_VT_I4 lllColumnIndex
865
        Set ComProperty of hDispatchDriver 1 OLE_VT_I4 to value
866
    End_Procedure
867
    
868
    
869
    // Introduced in DF18.1
870
    // method CopyDataValueToClipboard
871
    Procedure ComCopyDataValueToClipboard
872
        Handle hDispatchDriver
873
        Get phDispatchDriver to hDispatchDriver
874
        Send InvokeComMethod to hDispatchDriver 2 OLE_VT_VOID
875
    End_Procedure
876
    
877
End_Class
878

    
879
// CLSID: {118331A8-61E6-4F82-B802-F19E42D63762}
880
// _ITablesWindowEvents Interface
881
Class cCom_ITablesWindowEvents is a Mixin
882

    
883
    // method OnCmdAddWatch - fired when user selects add to watch from popup menu
884
    { MethodType=Event }
885
    Procedure OnComCmdAddWatch String llsExpression
886
    End_Procedure
887

    
888
    // Introduced in vdf14.0
889
    // method OnContextMenu - fired when user right clicked to bring up context menu
890
    { MethodType=Event }
891
    Procedure OnComContextMenu String llsMessageName UInteger llpoint
892
    End_Procedure
893

    
894

    
895
    { Visibility=Private }
896
    Procedure RegisterComEvents
897
        Integer iRuntimeVersion
898
        
899
        Get piRuntimeVersion To iRuntimeVersion
900
        Send RegisterComEvent 1 msg_OnComCmdAddWatch
901
        If (iRuntimeVersion >= 140) Begin
902
          Send RegisterComEvent 2 msg_OnComContextMenu
903
        End
904
    End_Procedure
905
End_Class
906

    
907
// CoClass
908
// ProgID: vdfdbg.TablesWindow.cc.aa
909
// CLSID:
910
// TablesWindow Class
911
Class cComCTablesWindow is a cComActiveXControl
912
    Import_Class_Protocol cComITablesWindow
913
    Import_Class_Protocol cCom_ITablesWindowEvents
914

    
915
    Procedure Construct_Object
916
        Property Integer piRuntimeVersion      0
917
        
918
        Send Construct_Runtime_Object
919
        
920
        Forward Send Construct_Object
921
        
922
        Set peAutoCreate to acDeferredAutoCreate
923
    End_Procedure
924

    
925
    
926
    Procedure Construct_Runtime_Object
927
      Integer iRuntimeVersion
928
      
929
      Send DetermineRuntimeVersion
930
      Get piRuntimeVersion To iRuntimeVersion
931
      If (iRuntimeVersion>0) Begin
932
        Case Begin
933
          Case (iRuntimeVersion=121)
934
            Set psProgID  to "{35C803D2-2899-4F13-9456-5C7F5848FBCF}"
935
            Set psEventId to "{118331A8-61E6-4F82-B802-F19E42D63762}"
936
            Case Break
937
          Case (iRuntimeVersion=140)
938
            Set psProgID  to "{91CA7649-43B0-4F3E-92B3-BADD8A884447}"
939
            Set psEventId to "{F288F96A-8923-4E8F-B5CC-0AB160053C07}"
940
            Case Break
941
          Case (iRuntimeVersion=141)
942
            Set psProgID  to "{CA06A82B-74EA-40B8-A5A4-69E8A2CA3764}"
943
            Set psEventId to "{CAD0B222-D2C6-4F4C-A592-04DCC9D30D0D}"
944
            Case Break
945
          Case (iRuntimeVersion=150)
946
            Set psProgID  to "{07E109DA-BF00-41FF-9D21-96360E0608E4}"
947
            Set psEventId to "{58078986-055B-4901-AFF0-B55BEFA4B008}"
948
            Case Break
949
          Case (iRuntimeVersion=151)
950
            Set psProgID  to "{9450B22B-01C2-4AE2-95DC-A8AF3FD979A1}"
951
            Set psEventId to "{4DC20661-26A4-4AC2-9908-BB2A13E002D3}"
952
            Case Break
953
          Case (iRuntimeVersion=160)
954
            Set psProgID  to "{4CFBF226-218B-4AE9-8874-CBE5506D3EA5}"
955
            Set psEventId to "{7C238927-0A96-46B9-B9F9-A8824B9E93E3}"
956
            Case Break
957
          Case (iRuntimeVersion=161)
958
            Set psProgID  to "{77D5AA47-2305-42D2-A726-5973D4B394C6}"
959
            Set psEventId to "{17B95A0E-4AA1-4C8A-8E0E-9DE56B1C9E17}"
960
            Case Break
961
          Case (iRuntimeVersion=170)
962
            Set psProgID  to "{E41C20AC-C9F0-4BB0-8612-FBB0AC620781}"
963
            Set psEventId to "{F47F3B85-A94A-4510-950E-AD4B5F25C4B9}"
964
            Case Break
965
          Case (iRuntimeVersion=171)
966
            Set psProgID  to "{F92169DF-8131-4FF6-B247-FAD053B3460E}"
967
            Set psEventId to "{9C300088-C7E3-40F0-BF54-65DDFC1A81B5}"
968
            Case Break
969
          Case (iRuntimeVersion=180)
970
            Set psProgID  to "{A2D34452-84FF-4F22-9215-3F9D9660EAD1}"
971
            Set psEventId to "{CD7F9D4A-09B6-4FD1-8B52-A331489257F4}"
972
            Case Break
973
          Case (iRuntimeVersion=181)
974
            Set psProgID  to "{8DD5EC8B-C787-4B99-A2F7-F35C66A5422F}"
975
            Set psEventId to "{29E04458-C4CB-4B04-BBAE-38452B0039E2}"
976
            Case Break
977
          Case (iRuntimeVersion=182)
978
            Set psProgID  to "{05AA305A-1698-47A5-8A61-0DFB349813BF}"
979
            Set psEventId to "{503A436C-8E9D-454D-8351-8A811CEE6A5C}"
980
            Case Break
981
          Case (iRuntimeVersion=190)
982
            Set psProgID  to "{7B990C47-0CC6-4F4B-A6C4-1A4644E3804E}"
983
            Set psEventId to "{BCDD8AEC-97C6-4705-9FD3-40CD3274B4EE}"
984
            Case Break
985
          Case Else
986
            Send Stop_Box ("The debug tables component for VDF"*trim(iRuntimeVersion)*"has not yet been defined.") CS_SPLATFATALCAPTION
987
            Abort
988
        Case End
989
      End
990
      Else Begin
991
        Send Stop_Box "Could not determine runtime version of passed application for debug tables." CS_SPLATFATALCAPTION
992
        Abort
993
      End
994
    End_Procedure // Construct_Runtime_Object
995
    
996
    Procedure DetermineRuntimeVersion
997
    End_Procedure // DetermineRuntimeVersion
998
    
999
End_Class
1000

    
1001
// CLSID: {340DCA34-E155-45F4-96A5-25A10E191919}
1002
// IVariablesWindow Interface
1003
Class cComIVariablesWindow is a Mixin
1004

    
1005
    // property WindowType (set 0 for local variables, and 1 for globals)
1006
    { MethodType=Property DesignTime=False }
1007
    Function ComWindowType Returns OLEdbgVariableWindows
1008
        Handle hDispatchDriver
1009
        OLEdbgVariableWindows retVal
1010
        Get phDispatchDriver to hDispatchDriver
1011
        Get InvokeComMethod of hDispatchDriver 1 OLE_VT_I4 to retVal
1012
        Function_Return retVal
1013
    End_Function
1014

    
1015
    // property WindowType (set 0 for local variables, and 1 for globals)
1016
    { MethodType=Property DesignTime=False }
1017
    Procedure Set ComWindowType OLEdbgVariableWindows value
1018
        Handle hDispatchDriver
1019
        Get phDispatchDriver to hDispatchDriver
1020
        Send PrepareParams to hDispatchDriver 1
1021
        Set ComProperty of hDispatchDriver 1 OLE_VT_I4 to value
1022
    End_Procedure
1023

    
1024
    // property ColumnWidth
1025
    { MethodType=Property DesignTime=False }
1026
    Function ComColumnWidth Integer lllColumnIndex Returns Integer
1027
        Handle hDispatchDriver
1028
        Integer retVal
1029
        Get phDispatchDriver to hDispatchDriver
1030
        Send PrepareParams to hDispatchDriver 1
1031
        Send DefineParam to hDispatchDriver OLE_VT_I4 lllColumnIndex
1032
        Get InvokeComMethod of hDispatchDriver 2 OLE_VT_I4 to retVal
1033
        Function_Return retVal
1034
    End_Function
1035

    
1036
    // property ColumnWidth
1037
    { MethodType=Property DesignTime=False }
1038
    Procedure Set ComColumnWidth Integer lllColumnIndex Integer value
1039
        Handle hDispatchDriver
1040
        Get phDispatchDriver to hDispatchDriver
1041
        Send PrepareParams to hDispatchDriver 2
1042
        Send DefineParam to hDispatchDriver OLE_VT_I4 lllColumnIndex
1043
        Set ComProperty of hDispatchDriver 2 OLE_VT_I4 to value
1044
    End_Procedure
1045

    
1046

    
1047
    // Introduced in vdf15.0
1048
    // method ToggleSelectionViewAsObject
1049
    Procedure ComToggleSelectionViewAsObject
1050
        Handle hDispatchDriver
1051
        Get phDispatchDriver to hDispatchDriver
1052
        Send InvokeComMethod to hDispatchDriver 3 OLE_VT_VOID
1053
    End_Procedure
1054

    
1055
    // Introduced in vdf15.0
1056
    // method CanToggleSelectionViewAsObject
1057
    Function ComCanToggleSelectionViewAsObject Returns Boolean
1058
        Handle hDispatchDriver
1059
        Boolean retVal
1060
        Get phDispatchDriver to hDispatchDriver
1061
        Get InvokeComMethod of hDispatchDriver 4 OLE_VT_BOOL to retVal
1062
        Function_Return retVal
1063
    End_Function
1064

    
1065
    // Introduced in vdf15.0
1066
    // method IsSelectionViewAsObject
1067
    Function ComIsSelectionViewAsObject Returns Boolean
1068
        Handle hDispatchDriver
1069
        Boolean retVal
1070
        Get phDispatchDriver to hDispatchDriver
1071
        Get InvokeComMethod of hDispatchDriver 5 OLE_VT_BOOL to retVal
1072
        Function_Return retVal
1073
    End_Function
1074

    
1075
    // Introduced in DF18.1
1076
    // method CopyDataValueToClipboard
1077
    Procedure ComCopyDataValueToClipboard
1078
        Handle hDispatchDriver
1079
        Get phDispatchDriver to hDispatchDriver
1080
        Send InvokeComMethod to hDispatchDriver 6 OLE_VT_VOID
1081
    End_Procedure
1082

    
1083
    // Introduced in DF18.1
1084
    // method CanCopyDataValue
1085
    Function ComCanCopyDataValue Returns Boolean
1086
        Handle hDispatchDriver
1087
        Boolean retVal
1088
        Get phDispatchDriver to hDispatchDriver
1089
        Get InvokeComMethod of hDispatchDriver 7 OLE_VT_BOOL to retVal
1090
        Function_Return retVal
1091
    End_Function
1092

    
1093
    
1094
End_Class
1095

    
1096
// CLSID: {E1CA1311-93EA-4A32-AD25-B623F09BA771}
1097
// _IVariablesWindowEvents Interface
1098
Class cCom_IVariablesWindowEvents is a Mixin
1099

    
1100
    // method OnCmdAddWatch - fired when user selects add to watch from popup menu
1101
    { MethodType=Event }
1102
    Procedure OnComCmdAddWatch String llsExpression
1103
    End_Procedure
1104

    
1105
    // Introduced in vdf14.0
1106
    // method OnContextMenu - fired when user right clicked to bring up context menu
1107
    { MethodType=Event }
1108
    Procedure OnComContextMenu String llsMessageName UInteger llpoint
1109
    End_Procedure
1110

    
1111
    { Visibility=Private }
1112
    Procedure RegisterComEvents
1113
        Integer iRuntimeVersion
1114
        
1115
        Get piRuntimeVersion To iRuntimeVersion
1116
        Send RegisterComEvent 1 msg_OnComCmdAddWatch
1117
        If (iRuntimeVersion >= 140) Begin
1118
          Send RegisterComEvent 2 msg_OnComContextMenu
1119
        End
1120
    End_Procedure
1121
End_Class
1122

    
1123
// CoClass
1124
// ProgID: vdfdbg.VariablesWindow.xx.yy
1125
// CLSID:
1126
// VariablesWindow Class
1127
Class cComCVariablesWindow is a cComActiveXControl
1128
    Import_Class_Protocol cComIVariablesWindow
1129
    Import_Class_Protocol cCom_IVariablesWindowEvents
1130

    
1131
    Procedure Construct_Object
1132
        Property Integer piRuntimeVersion      0
1133
        
1134
        Send Construct_Runtime_Object
1135
        
1136
        Forward Send Construct_Object
1137
        
1138
        Set peAutoCreate to acDeferredAutoCreate
1139
    End_Procedure
1140

    
1141
    
1142
    Procedure Construct_Runtime_Object
1143
      Integer iRuntimeVersion
1144
      
1145
      Send DetermineRuntimeVersion
1146
      Get piRuntimeVersion To iRuntimeVersion
1147
      If (iRuntimeVersion>0) Begin
1148
        Case Begin
1149
          Case (iRuntimeVersion=121)
1150
            Set psProgID  to "{3DCB562D-47E1-4630-B494-DAA84D173F51}"
1151
            Set psEventId to "{E1CA1311-93EA-4A32-AD25-B623F09BA771}"
1152
            Case Break
1153
          Case (iRuntimeVersion=140)
1154
            Set psProgID  to "{FC62D35A-D0A9-4BE2-9C7B-699892657275}"
1155
            Set psEventId to "{64752F65-F0EA-4E39-A934-A826B94483A5}"
1156
            Case Break
1157
          Case (iRuntimeVersion=141)
1158
            Set psProgID  to "{BEB2FE78-D0E8-4406-A92B-E410638288AD}"
1159
            Set psEventId to "{913F4BDD-10DE-4923-8945-030CA5B48649}"
1160
            Case Break
1161
          Case (iRuntimeVersion=150)
1162
            Set psProgID  to "{7099EAFD-4230-4C37-B547-D9E03EE8BDF6}"
1163
            Set psEventId to "{A61BC600-3025-4E33-A263-A34AA2C68249}"
1164
            Case Break
1165
          Case (iRuntimeVersion=151)
1166
            Set psProgID  to "{4E23F1D7-28AE-4F8C-8ADE-BFA168603003}"
1167
            Set psEventId to "{9BA3385E-3382-45DE-9879-855F01A0E0C9}"
1168
            Case Break
1169
          Case (iRuntimeVersion=160)
1170
            Set psProgID  to "{3B742EEF-8870-47F7-A817-D5C4CFFC8471}"
1171
            Set psEventId to "{EB553338-E564-4F1B-B2DA-67A4BA97720B}"
1172
            Case Break
1173
          Case (iRuntimeVersion=161)
1174
            Set psProgID  to "{6C7A06AA-4148-4558-A298-20B0FFB9FD42}"
1175
            Set psEventId to "{521D95D0-2FE8-4014-9995-C43A019EE325}"
1176
            Case Break
1177
          Case (iRuntimeVersion=170)
1178
            Set psProgID  to "{398EA7A3-D404-4372-8CE4-0CEE44AE5255}"
1179
            Set psEventId to "{5A43E915-F93D-48FE-9CD1-37BEF6514865}"
1180
            Case Break
1181
          Case (iRuntimeVersion=171)
1182
            Set psProgID  to "{4816B313-5B85-4F96-AAD8-2F8EB26D6CE9}"
1183
            Set psEventId to "{CD510572-332A-4145-A1BF-8A77F18C107C}"
1184
            Case Break
1185
          Case (iRuntimeVersion=180)
1186
            Set psProgID  to "{800A71A1-412D-4082-B1C9-856E32C4FE01}"
1187
            Set psEventId to "{7B1BDF69-C17A-483D-8787-9F05972561C5}"
1188
            Case Break
1189
          Case (iRuntimeVersion=181)
1190
            Set psProgID  to "{4F68B1B0-80E0-40D4-A429-7576B48D32FC}"
1191
            Set psEventId to "{BCD531B3-8927-49E0-A386-1096D12BC170}"
1192
            Case Break
1193
          Case (iRuntimeVersion=182)
1194
            Set psProgID  to "{69E32690-0291-48EF-856C-51896F8E146F}"
1195
            Set psEventId to "{2EDDE32A-4CD1-4BE9-A875-99DDAB2A1009}"
1196
            Case Break
1197
          Case (iRuntimeVersion=190)
1198
            Set psProgID  to "{CF2149B0-36B1-4BFB-BB3D-7A5889F793FE}"
1199
            Set psEventId to "{73DFB990-71DC-4727-A113-06BA73F4DE7E}"
1200
            Case Break
1201
          Case Else
1202
            Send Stop_Box ("The debug variables component for VDF"*trim(iRuntimeVersion)*"has not yet been defined.") CS_SPLATFATALCAPTION
1203
            Abort
1204
        Case End
1205
      End
1206
      Else Begin
1207
        Send Stop_Box "Could not determine runtime version of passed application for debug variables." CS_SPLATFATALCAPTION
1208
        Abort
1209
      End
1210
    End_Procedure // Construct_Runtime_Object
1211
    
1212
    Procedure DetermineRuntimeVersion
1213
    End_Procedure // DetermineRuntimeVersion
1214
    
1215
End_Class
1216

    
1217
// CLSID: {5FF4AD31-3606-4009-80BA-9C7A9E959538}
1218
// IWatches Interface
1219
Class cComIWatches is a Mixin
1220

    
1221
    // method LoadWatches - Loads expressions in the grid
1222
    Procedure ComLoadWatches String[] llsaExpressions
1223
        Handle hDispatchDriver
1224
        Get phDispatchDriver to hDispatchDriver
1225
        Send PrepareParams to hDispatchDriver 1
1226
        Send DefineParam to hDispatchDriver (OLE_VT_ARRAY ior OLE_VT_BSTR) llsaExpressions
1227
        Send InvokeComMethod to hDispatchDriver 1 OLE_VT_VOID
1228
    End_Procedure
1229

    
1230
    // method GetWatches - Get Array of expressions currently displayed
1231
    Function ComGetWatches Returns String[]
1232
        Handle hDispatchDriver
1233
        String[] retVal
1234
        Get phDispatchDriver to hDispatchDriver
1235
        Get InvokeComMethod of hDispatchDriver 2 (OLE_VT_ARRAY ior OLE_VT_BSTR) to retVal
1236
        Function_Return retVal
1237
    End_Function
1238

    
1239
    // method ClearWatches - Remove all watches from window
1240
    Procedure ComClearWatches
1241
        Handle hDispatchDriver
1242
        Get phDispatchDriver to hDispatchDriver
1243
        Send InvokeComMethod to hDispatchDriver 3 OLE_VT_VOID
1244
    End_Procedure
1245

    
1246
    // method AddWatch
1247
    Procedure ComAddWatch String llsWatch
1248
        Handle hDispatchDriver
1249
        Get phDispatchDriver to hDispatchDriver
1250
        Send PrepareParams to hDispatchDriver 1
1251
        Send DefineParam to hDispatchDriver OLE_VT_BSTR llsWatch
1252
        Send InvokeComMethod to hDispatchDriver 4 OLE_VT_VOID
1253
    End_Procedure
1254

    
1255
    // property ColumnWidth
1256
    { MethodType=Property DesignTime=False }
1257
    Function ComColumnWidth Integer lllColumnIndex Returns Integer
1258
        Handle hDispatchDriver
1259
        Integer retVal
1260
        Get phDispatchDriver to hDispatchDriver
1261
        Send PrepareParams to hDispatchDriver 1
1262
        Send DefineParam to hDispatchDriver OLE_VT_I4 lllColumnIndex
1263
        Get InvokeComMethod of hDispatchDriver 5 OLE_VT_I4 to retVal
1264
        Function_Return retVal
1265
    End_Function
1266

    
1267
    // property ColumnWidth
1268
    { MethodType=Property DesignTime=False }
1269
    Procedure Set ComColumnWidth Integer lllColumnIndex Integer value
1270
        Handle hDispatchDriver
1271
        Get phDispatchDriver to hDispatchDriver
1272
        Send PrepareParams to hDispatchDriver 2
1273
        Send DefineParam to hDispatchDriver OLE_VT_I4 lllColumnIndex
1274
        Set ComProperty of hDispatchDriver 5 OLE_VT_I4 to value
1275
    End_Procedure
1276

    
1277

    
1278
    // Introduced in vdf15.0
1279
    // method ToggleSelectionViewAsObject
1280
    Procedure ComToggleSelectionViewAsObject
1281
        Handle hDispatchDriver
1282
        Get phDispatchDriver to hDispatchDriver
1283
        Send InvokeComMethod to hDispatchDriver 6 OLE_VT_VOID
1284
    End_Procedure
1285

    
1286
    // Introduced in vdf15.0
1287
    // method CanToggleSelectionViewAsObject
1288
    Function ComCanToggleSelectionViewAsObject Returns Boolean
1289
        Handle hDispatchDriver
1290
        Boolean retVal
1291
        Get phDispatchDriver to hDispatchDriver
1292
        Get InvokeComMethod of hDispatchDriver 7 OLE_VT_BOOL to retVal
1293
        Function_Return retVal
1294
    End_Function
1295

    
1296
    // Introduced in vdf15.0
1297
    // method IsSelectionViewAsObject
1298
    Function ComIsSelectionViewAsObject Returns Boolean
1299
        Handle hDispatchDriver
1300
        Boolean retVal
1301
        Get phDispatchDriver to hDispatchDriver
1302
        Get InvokeComMethod of hDispatchDriver 8 OLE_VT_BOOL to retVal
1303
        Function_Return retVal
1304
    End_Function
1305

    
1306
    // Introduced in DF18.1
1307
    // method CopyDataValueToClipboard
1308
    Procedure ComCopyDataValueToClipboard
1309
        Handle hDispatchDriver
1310
        Get phDispatchDriver to hDispatchDriver
1311
        Send InvokeComMethod to hDispatchDriver 9 OLE_VT_VOID
1312
    End_Procedure
1313
    
1314
    // Introduced in DF18.1
1315
    // method CanCopyDataValue
1316
    Function ComCanCopyDataValue Returns Boolean
1317
        Handle hDispatchDriver
1318
        Boolean retVal
1319
        Get phDispatchDriver to hDispatchDriver
1320
        Get InvokeComMethod of hDispatchDriver 10 OLE_VT_BOOL to retVal
1321
        Function_Return retVal
1322
    End_Function
1323

    
1324
End_Class
1325
          
1326

    
1327
// Introduced in vdf14.0
1328
// CLSID:
1329
// _IWatchesEvents Interface
1330
Class cCom_IWatchesEvents is a Mixin
1331

    
1332
    // method OnContextMenu - fired when user right clicked to bring up context menu
1333
    { MethodType=Event }
1334
    Procedure OnComContextMenu UInteger llpoint
1335
    End_Procedure
1336

    
1337
    { Visibility=Private }
1338
    Procedure RegisterComEvents
1339
        Integer iRuntimeVersion
1340
        
1341
        Get piRuntimeVersion To iRuntimeVersion
1342
        If (iRuntimeVersion>140) Begin
1343
          Send RegisterComEvent 1 msg_OnComContextMenu
1344
        End
1345
    End_Procedure
1346
End_Class
1347
          
1348
          
1349
          
1350
// CoClass
1351
// ProgID: vdfdbg.Watches.xx.yy
1352
// CLSID:
1353
// Watches Class
1354
Class cComCWatches is a cComActiveXControl
1355
    Import_Class_Protocol cComIWatches
1356
    Import_Class_Protocol cCom_IWatchesEvents
1357
    
1358

    
1359
    Procedure Construct_Object
1360
        Property Integer piRuntimeVersion      0
1361
        
1362
        Send Construct_Runtime_Object
1363

    
1364
        Forward Send Construct_Object
1365
        
1366
        Set peAutoCreate to acDeferredAutoCreate
1367
    End_Procedure
1368

    
1369
    
1370
    Procedure Construct_Runtime_Object
1371
      Integer iRuntimeVersion
1372
      
1373
      Send DetermineRuntimeVersion
1374
      Get piRuntimeVersion To iRuntimeVersion
1375
      If (iRuntimeVersion>0) Begin
1376
        Case Begin
1377
          Case (iRuntimeVersion=121)
1378
            Set psProgID  to "{DAAF28FD-83C9-43C0-9EFF-B31718B8F969}"
1379
            Case Break
1380
          Case (iRuntimeVersion=140)
1381
            Set psProgID  to "{705C8088-C38D-42B8-97B0-0B884CC18258}"
1382
            Set psEventId to "{0FB06DC9-1F4F-4407-9357-A2F8F06089C1}"
1383
            Case Break
1384
          Case (iRuntimeVersion=141)
1385
            Set psProgID  to "{21326EB8-BCE8-4E4D-AC46-5C0C4AA18DC9}"
1386
            Set psEventId to "{937D4E5E-010E-4ADF-B9D5-7300ACFE0778}"
1387
            Case Break
1388
          Case (iRuntimeVersion=150)
1389
            Set psProgID  to "{8C287ADF-6CB4-4821-8C32-2CA94B7D97D0}"
1390
            Set psEventId to "{0BD0A0F8-34CF-404A-8D16-C7CEE9A0C76C}"
1391
            Case Break
1392
          Case (iRuntimeVersion=151)
1393
            Set psProgID  to "{D74F2668-22A8-4382-A225-04E4A42179A7}"
1394
            Set psEventId to "{1D49C1B8-AF08-4002-871D-9FCDC27413C9}"
1395
            Case Break
1396
          Case (iRuntimeVersion=160)
1397
            Set psProgID  to "{F281D305-1446-49FE-8739-130495F45AE8}"
1398
            Set psEventId to "{007FECE4-446E-4215-B05D-F566EA6994D0}"
1399
            Case Break
1400
          Case (iRuntimeVersion=161)
1401
            Set psProgID  to "{D01A01B0-1A06-4CDE-9BEF-CD11C5754AAF}"
1402
            Set psEventId to "{7D00FCBF-0577-4E70-B51C-380B9AEAF5C0}"
1403
            Case Break
1404
          Case (iRuntimeVersion=170)
1405
            Set psProgID  to "{EC46FECC-1D70-4DC7-8DA0-96DEF69F0FE3}"
1406
            Set psEventId to "{27179A78-7816-4DCD-9936-4AF0F9710A79}"
1407
            Case Break
1408
          Case (iRuntimeVersion=171)
1409
            Set psProgID  to "{7E95BA97-4CEA-4FCC-A78F-C53A2FE3BD41}"
1410
            Set psEventId to "{BD2C9BF6-FE93-4F49-92A1-011CA97A7515}"
1411
            Case Break
1412
          Case (iRuntimeVersion=180)
1413
            Set psProgID  to "{EB60D95E-BFF7-40B4-9D3B-2817F69279DA}"
1414
            Set psEventId to "{BE25D8E7-F995-474F-B5F2-09288BB2EC32}"
1415
            Case Break
1416
          Case (iRuntimeVersion=181)
1417
            Set psProgID  to "{9AA2081A-1F94-4AEC-9F96-9CAA7087075F}"
1418
            Set psEventId to "{F09A8A1A-2272-45C7-BFB8-BFE057CAED48}"
1419
            Case Break
1420
          Case (iRuntimeVersion=182)
1421
            Set psProgID  to "{2A91AF25-76B1-4150-8EDF-7387AB6B6CC1}"
1422
            Set psEventId to "{09413F3F-2C0A-4323-854E-288EBA8D2FEC}"
1423
            Case Break
1424
          Case (iRuntimeVersion=190)
1425
            Set psProgID  to "{6F370750-2AF0-4847-A519-4BE1C36B2558}"
1426
            Set psEventId to "{E5968354-0AF3-40B4-B102-07B0F55781D0}"
1427
            Case Break
1428
          Case Else
1429
            Send Stop_Box ("The debug watches component for VDF"*trim(iRuntimeVersion)*"has not yet been defined.") CS_SPLATFATALCAPTION
1430
            Abort
1431
        Case End
1432
      End
1433
      Else Begin
1434
        Send Stop_Box "Could not determine runtime version of passed application for debug watches." CS_SPLATFATALCAPTION
1435
        Abort
1436
      End
1437
    End_Procedure // Construct_Runtime_Object
1438
    
1439
    Procedure DetermineRuntimeVersion
1440
    End_Procedure // DetermineRuntimeVersion
1441
    
1442
End_Class