Project

General

Profile

Statistics
| Revision:

vdfsplat / AppSrc / vdfdebug.pkg @ 58

History | View | Annotate | Download (56.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 (iRuntimeVersion=191)
462
            Set psProgID  to "{7A3BE09B-46E4-4D34-9450-491696976C76}"
463
            Set psEventId to "{67B9146F-8928-4CDD-9032-7CCEF01D7330}"
464
            Case Break
465
          Case Else
466
            Send Stop_Box ("The debug component for VDF"*trim(iRuntimeVersion)*"has not yet been defined.") CS_SPLATFATALCAPTION
467
            Abort
468
        Case End
469
      End
470
      Else Begin
471
        Send Stop_Box "Could not determine runtime version of passed application." CS_SPLATFATALCAPTION
472
        Abort
473
      End
474
    End_Procedure // Construct_Runtime_Object
475
    
476
    Procedure DetermineRuntimeVersion
477
    End_Procedure // DetermineRuntimeVersion
478
End_Class
479

    
480
// CLSID:
481
// ICallStack Interface
482
Class cComICallStack is a Mixin
483

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

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

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

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

    
523
// CLSID:
524
// _ICallStackEvents Interface
525
Class cCom_ICallStackEvents is a Mixin
526

    
527
    { Visibility=Private }
528
    Procedure RegisterComEvents
529
    End_Procedure
530
End_Class
531

    
532
// CoClass
533
// ProgID: VDFDebugger.CallStack.xx.yy
534
// CLSID:
535
// CallStack Class
536
Class cComCCallStack is a cComActiveXControl
537
    Import_Class_Protocol cComICallStack
538
    Import_Class_Protocol cCom_ICallStackEvents
539

    
540
    Procedure Construct_Object
541
        Property Integer piRuntimeVersion      0
542
        
543
        Send Construct_Runtime_Object
544

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

    
629
// CLSID: {149B7FCC-117B-4407-AC2B-67338349D701}
630
// IMessageTrace Interface
631
Class cComIMessageTrace is a Mixin
632

    
633
    // property bTraceOn - controles if tracing is turned on or off
634
    { MethodType=Property DesignTime=False }
635
    Function ComBTraceOn Returns Integer
636
        Handle hDispatchDriver
637
        Integer retVal
638
        Get phDispatchDriver to hDispatchDriver
639
        Get InvokeComMethod of hDispatchDriver 1 OLE_VT_I4 to retVal
640
        Function_Return retVal
641
    End_Function
642

    
643
    // property bTraceOn - controles if tracing is turned on or off
644
    { MethodType=Property DesignTime=False }
645
    Procedure Set ComBTraceOn Integer value
646
        Handle hDispatchDriver
647
        Get phDispatchDriver to hDispatchDriver
648
        Send PrepareParams to hDispatchDriver 1
649
        Set ComProperty of hDispatchDriver 1 OLE_VT_I4 to value
650
    End_Procedure
651

    
652
    // method LoadFilters - provide array of message names that are supposed to be filtered
653
    Procedure ComLoadFilters String[] llsaFilters
654
        Handle hDispatchDriver
655
        Get phDispatchDriver to hDispatchDriver
656
        Send PrepareParams to hDispatchDriver 1
657
        Send DefineParam to hDispatchDriver (OLE_VT_ARRAY ior OLE_VT_BSTR) llsaFilters
658
        Send InvokeComMethod to hDispatchDriver 2 OLE_VT_VOID
659
    End_Procedure
660

    
661
    // method ClearFilters - dont apply any filters
662
    Procedure ComClearFilters
663
        Handle hDispatchDriver
664
        Get phDispatchDriver to hDispatchDriver
665
        Send InvokeComMethod to hDispatchDriver 3 OLE_VT_VOID
666
    End_Procedure
667

    
668
    // property sLogFileName - name of the file where traced messages will be stored
669
    { MethodType=Property DesignTime=False }
670
    Function ComSLogFileName Returns String
671
        Handle hDispatchDriver
672
        String retVal
673
        Get phDispatchDriver to hDispatchDriver
674
        Get InvokeComMethod of hDispatchDriver 4 OLE_VT_BSTR to retVal
675
        Function_Return retVal
676
    End_Function
677

    
678
    // property sLogFileName - name of the file where traced messages will be stored
679
    { MethodType=Property DesignTime=False }
680
    Procedure Set ComSLogFileName String value
681
        Handle hDispatchDriver
682
        Get phDispatchDriver to hDispatchDriver
683
        Send PrepareParams to hDispatchDriver 1
684
        Set ComProperty of hDispatchDriver 4 OLE_VT_BSTR to value
685
    End_Procedure
686

    
687
    // method ClearTrace - clears tree. It works only when tracing is currently off
688
    Procedure ComClearTrace
689
        Handle hDispatchDriver
690
        Get phDispatchDriver to hDispatchDriver
691
        Send InvokeComMethod to hDispatchDriver 7 OLE_VT_VOID
692
    End_Procedure
693

    
694
    // method AddFilter - add one message to filter array
695
    Procedure ComAddFilter String llsFilter
696
        Handle hDispatchDriver
697
        Get phDispatchDriver to hDispatchDriver
698
        Send PrepareParams to hDispatchDriver 1
699
        Send DefineParam to hDispatchDriver OLE_VT_BSTR llsFilter
700
        Send InvokeComMethod to hDispatchDriver 8 OLE_VT_VOID
701
    End_Procedure
702

    
703

    
704
    // Introduced in vdf14.0
705
    // method SaveTracer - Saves content of a tree. Parameter controles if children of unexpanded nodes should be processed too
706
    Procedure ComSaveTracer Integer llbAsIs
707
        Handle hDispatchDriver
708
        Get phDispatchDriver to hDispatchDriver
709
        Send PrepareParams to hDispatchDriver 1
710
        Send DefineParam to hDispatchDriver OLE_VT_I4 llbAsIs
711
        Send InvokeComMethod to hDispatchDriver 9 OLE_VT_VOID
712
    End_Procedure
713
    
714
End_Class
715

    
716
// CLSID: {768B3472-A53F-4969-A250-4AB0756FDB5F}
717
// _IMessageTraceEvents Interface
718
Class cCom_IMessageTraceEvents is a Mixin
719

    
720
    // method OnMessageClicked - fired when user clicked node in a message trace tree
721
    { MethodType=Event }
722
    Procedure OnComMessageClicked UInteger llcommandNo
723
    End_Procedure
724

    
725
    // method OnAddMsg2Filter  - when user selected context menu for the add 2 filter message option
726
    { MethodType=Event }
727
    Procedure OnComAddMsg2Filter String llsMessageName
728
    End_Procedure
729

    
730
    // method OnFilterOptions - fired when user wants to bring dialog for defining message filters
731
    { MethodType=Event }
732
    Procedure OnComFilterOptions
733
    End_Procedure
734

    
735
    // Introduced in vdf14.0
736
    // method OnContextMenu - fired when user right clicked to bring up context menu
737
    { MethodType=Event }
738
    Procedure OnComContextMenu String llsMessageName UInteger llpoint
739
    End_Procedure
740

    
741

    
742
    { Visibility=Private }
743
    Procedure RegisterComEvents
744
        Integer iRuntimeVersion
745
        
746
        Get piRuntimeVersion To iRuntimeVersion
747
        Send RegisterComEvent 1 msg_OnComMessageClicked
748
        Send RegisterComEvent 2 msg_OnComAddMsg2Filter
749
        Send RegisterComEvent 3 msg_OnComFilterOptions
750
        If (iRuntimeVersion >= 140) Begin
751
          Send RegisterComEvent 4 msg_OnComContextMenu
752
        End
753
    End_Procedure
754
End_Class
755

    
756
// CoClass
757
// ProgID: vdfdbg.MessageTrace.12.1
758
// CLSID: {BDC0465B-AA4A-460B-81FC-1D080CAF697B}
759
// MessageTrace Class { CLSID="{BDC0465B-AA4A-460B-81FC-1D080CAF697B}" }
760
Class cComCMessageTrace is a cComActiveXControl
761
    Import_Class_Protocol cComIMessageTrace
762
    Import_Class_Protocol cCom_IMessageTraceEvents
763

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

    
854
// CLSID: {ED3CE9E1-32A8-4BE6-82E4-054939FD335A}
855
// ITablesWindow Interface
856
Class cComITablesWindow is a Mixin
857

    
858
    // property ColumnWidth
859
    { MethodType=Property DesignTime=False }
860
    Function ComColumnWidth Integer lllColumnIndex Returns Integer
861
        Handle hDispatchDriver
862
        Integer retVal
863
        Get phDispatchDriver to hDispatchDriver
864
        Send PrepareParams to hDispatchDriver 1
865
        Send DefineParam to hDispatchDriver OLE_VT_I4 lllColumnIndex
866
        Get InvokeComMethod of hDispatchDriver 1 OLE_VT_I4 to retVal
867
        Function_Return retVal
868
    End_Function
869

    
870
    // property ColumnWidth
871
    { MethodType=Property DesignTime=False }
872
    Procedure Set ComColumnWidth Integer lllColumnIndex Integer value
873
        Handle hDispatchDriver
874
        Get phDispatchDriver to hDispatchDriver
875
        Send PrepareParams to hDispatchDriver 2
876
        Send DefineParam to hDispatchDriver OLE_VT_I4 lllColumnIndex
877
        Set ComProperty of hDispatchDriver 1 OLE_VT_I4 to value
878
    End_Procedure
879
    
880
    
881
    // Introduced in DF18.1
882
    // method CopyDataValueToClipboard
883
    Procedure ComCopyDataValueToClipboard
884
        Handle hDispatchDriver
885
        Get phDispatchDriver to hDispatchDriver
886
        Send InvokeComMethod to hDispatchDriver 2 OLE_VT_VOID
887
    End_Procedure
888
    
889
End_Class
890

    
891
// CLSID: {118331A8-61E6-4F82-B802-F19E42D63762}
892
// _ITablesWindowEvents Interface
893
Class cCom_ITablesWindowEvents is a Mixin
894

    
895
    // method OnCmdAddWatch - fired when user selects add to watch from popup menu
896
    { MethodType=Event }
897
    Procedure OnComCmdAddWatch String llsExpression
898
    End_Procedure
899

    
900
    // Introduced in vdf14.0
901
    // method OnContextMenu - fired when user right clicked to bring up context menu
902
    { MethodType=Event }
903
    Procedure OnComContextMenu String llsMessageName UInteger llpoint
904
    End_Procedure
905

    
906

    
907
    { Visibility=Private }
908
    Procedure RegisterComEvents
909
        Integer iRuntimeVersion
910
        
911
        Get piRuntimeVersion To iRuntimeVersion
912
        Send RegisterComEvent 1 msg_OnComCmdAddWatch
913
        If (iRuntimeVersion >= 140) Begin
914
          Send RegisterComEvent 2 msg_OnComContextMenu
915
        End
916
    End_Procedure
917
End_Class
918

    
919
// CoClass
920
// ProgID: vdfdbg.TablesWindow.cc.aa
921
// CLSID:
922
// TablesWindow Class
923
Class cComCTablesWindow is a cComActiveXControl
924
    Import_Class_Protocol cComITablesWindow
925
    Import_Class_Protocol cCom_ITablesWindowEvents
926

    
927
    Procedure Construct_Object
928
        Property Integer piRuntimeVersion      0
929
        
930
        Send Construct_Runtime_Object
931
        
932
        Forward Send Construct_Object
933
        
934
        Set peAutoCreate to acDeferredAutoCreate
935
    End_Procedure
936

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

    
1017
// CLSID: {340DCA34-E155-45F4-96A5-25A10E191919}
1018
// IVariablesWindow Interface
1019
Class cComIVariablesWindow is a Mixin
1020

    
1021
    // property WindowType (set 0 for local variables, and 1 for globals)
1022
    { MethodType=Property DesignTime=False }
1023
    Function ComWindowType Returns OLEdbgVariableWindows
1024
        Handle hDispatchDriver
1025
        OLEdbgVariableWindows retVal
1026
        Get phDispatchDriver to hDispatchDriver
1027
        Get InvokeComMethod of hDispatchDriver 1 OLE_VT_I4 to retVal
1028
        Function_Return retVal
1029
    End_Function
1030

    
1031
    // property WindowType (set 0 for local variables, and 1 for globals)
1032
    { MethodType=Property DesignTime=False }
1033
    Procedure Set ComWindowType OLEdbgVariableWindows value
1034
        Handle hDispatchDriver
1035
        Get phDispatchDriver to hDispatchDriver
1036
        Send PrepareParams to hDispatchDriver 1
1037
        Set ComProperty of hDispatchDriver 1 OLE_VT_I4 to value
1038
    End_Procedure
1039

    
1040
    // property ColumnWidth
1041
    { MethodType=Property DesignTime=False }
1042
    Function ComColumnWidth Integer lllColumnIndex Returns Integer
1043
        Handle hDispatchDriver
1044
        Integer retVal
1045
        Get phDispatchDriver to hDispatchDriver
1046
        Send PrepareParams to hDispatchDriver 1
1047
        Send DefineParam to hDispatchDriver OLE_VT_I4 lllColumnIndex
1048
        Get InvokeComMethod of hDispatchDriver 2 OLE_VT_I4 to retVal
1049
        Function_Return retVal
1050
    End_Function
1051

    
1052
    // property ColumnWidth
1053
    { MethodType=Property DesignTime=False }
1054
    Procedure Set ComColumnWidth Integer lllColumnIndex Integer value
1055
        Handle hDispatchDriver
1056
        Get phDispatchDriver to hDispatchDriver
1057
        Send PrepareParams to hDispatchDriver 2
1058
        Send DefineParam to hDispatchDriver OLE_VT_I4 lllColumnIndex
1059
        Set ComProperty of hDispatchDriver 2 OLE_VT_I4 to value
1060
    End_Procedure
1061

    
1062

    
1063
    // Introduced in vdf15.0
1064
    // method ToggleSelectionViewAsObject
1065
    Procedure ComToggleSelectionViewAsObject
1066
        Handle hDispatchDriver
1067
        Get phDispatchDriver to hDispatchDriver
1068
        Send InvokeComMethod to hDispatchDriver 3 OLE_VT_VOID
1069
    End_Procedure
1070

    
1071
    // Introduced in vdf15.0
1072
    // method CanToggleSelectionViewAsObject
1073
    Function ComCanToggleSelectionViewAsObject Returns Boolean
1074
        Handle hDispatchDriver
1075
        Boolean retVal
1076
        Get phDispatchDriver to hDispatchDriver
1077
        Get InvokeComMethod of hDispatchDriver 4 OLE_VT_BOOL to retVal
1078
        Function_Return retVal
1079
    End_Function
1080

    
1081
    // Introduced in vdf15.0
1082
    // method IsSelectionViewAsObject
1083
    Function ComIsSelectionViewAsObject Returns Boolean
1084
        Handle hDispatchDriver
1085
        Boolean retVal
1086
        Get phDispatchDriver to hDispatchDriver
1087
        Get InvokeComMethod of hDispatchDriver 5 OLE_VT_BOOL to retVal
1088
        Function_Return retVal
1089
    End_Function
1090

    
1091
    // Introduced in DF18.1
1092
    // method CopyDataValueToClipboard
1093
    Procedure ComCopyDataValueToClipboard
1094
        Handle hDispatchDriver
1095
        Get phDispatchDriver to hDispatchDriver
1096
        Send InvokeComMethod to hDispatchDriver 6 OLE_VT_VOID
1097
    End_Procedure
1098

    
1099
    // Introduced in DF18.1
1100
    // method CanCopyDataValue
1101
    Function ComCanCopyDataValue Returns Boolean
1102
        Handle hDispatchDriver
1103
        Boolean retVal
1104
        Get phDispatchDriver to hDispatchDriver
1105
        Get InvokeComMethod of hDispatchDriver 7 OLE_VT_BOOL to retVal
1106
        Function_Return retVal
1107
    End_Function
1108

    
1109
    
1110
End_Class
1111

    
1112
// CLSID: {E1CA1311-93EA-4A32-AD25-B623F09BA771}
1113
// _IVariablesWindowEvents Interface
1114
Class cCom_IVariablesWindowEvents is a Mixin
1115

    
1116
    // method OnCmdAddWatch - fired when user selects add to watch from popup menu
1117
    { MethodType=Event }
1118
    Procedure OnComCmdAddWatch String llsExpression
1119
    End_Procedure
1120

    
1121
    // Introduced in vdf14.0
1122
    // method OnContextMenu - fired when user right clicked to bring up context menu
1123
    { MethodType=Event }
1124
    Procedure OnComContextMenu String llsMessageName UInteger llpoint
1125
    End_Procedure
1126

    
1127
    { Visibility=Private }
1128
    Procedure RegisterComEvents
1129
        Integer iRuntimeVersion
1130
        
1131
        Get piRuntimeVersion To iRuntimeVersion
1132
        Send RegisterComEvent 1 msg_OnComCmdAddWatch
1133
        If (iRuntimeVersion >= 140) Begin
1134
          Send RegisterComEvent 2 msg_OnComContextMenu
1135
        End
1136
    End_Procedure
1137
End_Class
1138

    
1139
// CoClass
1140
// ProgID: vdfdbg.VariablesWindow.xx.yy
1141
// CLSID:
1142
// VariablesWindow Class
1143
Class cComCVariablesWindow is a cComActiveXControl
1144
    Import_Class_Protocol cComIVariablesWindow
1145
    Import_Class_Protocol cCom_IVariablesWindowEvents
1146

    
1147
    Procedure Construct_Object
1148
        Property Integer piRuntimeVersion      0
1149
        
1150
        Send Construct_Runtime_Object
1151
        
1152
        Forward Send Construct_Object
1153
        
1154
        Set peAutoCreate to acDeferredAutoCreate
1155
    End_Procedure
1156

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

    
1237
// CLSID: {5FF4AD31-3606-4009-80BA-9C7A9E959538}
1238
// IWatches Interface
1239
Class cComIWatches is a Mixin
1240

    
1241
    // method LoadWatches - Loads expressions in the grid
1242
    Procedure ComLoadWatches String[] llsaExpressions
1243
        Handle hDispatchDriver
1244
        Get phDispatchDriver to hDispatchDriver
1245
        Send PrepareParams to hDispatchDriver 1
1246
        Send DefineParam to hDispatchDriver (OLE_VT_ARRAY ior OLE_VT_BSTR) llsaExpressions
1247
        Send InvokeComMethod to hDispatchDriver 1 OLE_VT_VOID
1248
    End_Procedure
1249

    
1250
    // method GetWatches - Get Array of expressions currently displayed
1251
    Function ComGetWatches Returns String[]
1252
        Handle hDispatchDriver
1253
        String[] retVal
1254
        Get phDispatchDriver to hDispatchDriver
1255
        Get InvokeComMethod of hDispatchDriver 2 (OLE_VT_ARRAY ior OLE_VT_BSTR) to retVal
1256
        Function_Return retVal
1257
    End_Function
1258

    
1259
    // method ClearWatches - Remove all watches from window
1260
    Procedure ComClearWatches
1261
        Handle hDispatchDriver
1262
        Get phDispatchDriver to hDispatchDriver
1263
        Send InvokeComMethod to hDispatchDriver 3 OLE_VT_VOID
1264
    End_Procedure
1265

    
1266
    // method AddWatch
1267
    Procedure ComAddWatch String llsWatch
1268
        Handle hDispatchDriver
1269
        Get phDispatchDriver to hDispatchDriver
1270
        Send PrepareParams to hDispatchDriver 1
1271
        Send DefineParam to hDispatchDriver OLE_VT_BSTR llsWatch
1272
        Send InvokeComMethod to hDispatchDriver 4 OLE_VT_VOID
1273
    End_Procedure
1274

    
1275
    // property ColumnWidth
1276
    { MethodType=Property DesignTime=False }
1277
    Function ComColumnWidth Integer lllColumnIndex Returns Integer
1278
        Handle hDispatchDriver
1279
        Integer retVal
1280
        Get phDispatchDriver to hDispatchDriver
1281
        Send PrepareParams to hDispatchDriver 1
1282
        Send DefineParam to hDispatchDriver OLE_VT_I4 lllColumnIndex
1283
        Get InvokeComMethod of hDispatchDriver 5 OLE_VT_I4 to retVal
1284
        Function_Return retVal
1285
    End_Function
1286

    
1287
    // property ColumnWidth
1288
    { MethodType=Property DesignTime=False }
1289
    Procedure Set ComColumnWidth Integer lllColumnIndex Integer value
1290
        Handle hDispatchDriver
1291
        Get phDispatchDriver to hDispatchDriver
1292
        Send PrepareParams to hDispatchDriver 2
1293
        Send DefineParam to hDispatchDriver OLE_VT_I4 lllColumnIndex
1294
        Set ComProperty of hDispatchDriver 5 OLE_VT_I4 to value
1295
    End_Procedure
1296

    
1297

    
1298
    // Introduced in vdf15.0
1299
    // method ToggleSelectionViewAsObject
1300
    Procedure ComToggleSelectionViewAsObject
1301
        Handle hDispatchDriver
1302
        Get phDispatchDriver to hDispatchDriver
1303
        Send InvokeComMethod to hDispatchDriver 6 OLE_VT_VOID
1304
    End_Procedure
1305

    
1306
    // Introduced in vdf15.0
1307
    // method CanToggleSelectionViewAsObject
1308
    Function ComCanToggleSelectionViewAsObject Returns Boolean
1309
        Handle hDispatchDriver
1310
        Boolean retVal
1311
        Get phDispatchDriver to hDispatchDriver
1312
        Get InvokeComMethod of hDispatchDriver 7 OLE_VT_BOOL to retVal
1313
        Function_Return retVal
1314
    End_Function
1315

    
1316
    // Introduced in vdf15.0
1317
    // method IsSelectionViewAsObject
1318
    Function ComIsSelectionViewAsObject Returns Boolean
1319
        Handle hDispatchDriver
1320
        Boolean retVal
1321
        Get phDispatchDriver to hDispatchDriver
1322
        Get InvokeComMethod of hDispatchDriver 8 OLE_VT_BOOL to retVal
1323
        Function_Return retVal
1324
    End_Function
1325

    
1326
    // Introduced in DF18.1
1327
    // method CopyDataValueToClipboard
1328
    Procedure ComCopyDataValueToClipboard
1329
        Handle hDispatchDriver
1330
        Get phDispatchDriver to hDispatchDriver
1331
        Send InvokeComMethod to hDispatchDriver 9 OLE_VT_VOID
1332
    End_Procedure
1333
    
1334
    // Introduced in DF18.1
1335
    // method CanCopyDataValue
1336
    Function ComCanCopyDataValue Returns Boolean
1337
        Handle hDispatchDriver
1338
        Boolean retVal
1339
        Get phDispatchDriver to hDispatchDriver
1340
        Get InvokeComMethod of hDispatchDriver 10 OLE_VT_BOOL to retVal
1341
        Function_Return retVal
1342
    End_Function
1343

    
1344
End_Class
1345
          
1346

    
1347
// Introduced in vdf14.0
1348
// CLSID:
1349
// _IWatchesEvents Interface
1350
Class cCom_IWatchesEvents is a Mixin
1351

    
1352
    // method OnContextMenu - fired when user right clicked to bring up context menu
1353
    { MethodType=Event }
1354
    Procedure OnComContextMenu UInteger llpoint
1355
    End_Procedure
1356

    
1357
    { Visibility=Private }
1358
    Procedure RegisterComEvents
1359
        Integer iRuntimeVersion
1360
        
1361
        Get piRuntimeVersion To iRuntimeVersion
1362
        If (iRuntimeVersion>140) Begin
1363
          Send RegisterComEvent 1 msg_OnComContextMenu
1364
        End
1365
    End_Procedure
1366
End_Class
1367
          
1368
          
1369
          
1370
// CoClass
1371
// ProgID: vdfdbg.Watches.xx.yy
1372
// CLSID:
1373
// Watches Class
1374
Class cComCWatches is a cComActiveXControl
1375
    Import_Class_Protocol cComIWatches
1376
    Import_Class_Protocol cCom_IWatchesEvents
1377
    
1378

    
1379
    Procedure Construct_Object
1380
        Property Integer piRuntimeVersion      0
1381
        
1382
        Send Construct_Runtime_Object
1383

    
1384
        Forward Send Construct_Object
1385
        
1386
        Set peAutoCreate to acDeferredAutoCreate
1387
    End_Procedure
1388

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