File: camlclient.ml

package info (click to toggle)
camlidl 1.05-7
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k
  • size: 872 kB
  • ctags: 1,131
  • sloc: ml: 4,894; ansic: 940; cpp: 897; makefile: 294; sh: 182
file content (39 lines) | stat: -rw-r--r-- 1,396 bytes parent folder | download | duplicates (11)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
(* A simple client in Caml *)

open Printf

let testcomp clsid =
  print_string "Call Com.create_instance to create component and get interface IX"; print_newline();
  begin try
    let ix = Com.create_instance clsid Component.iid_iX in
    print_string "Calling Fx..."; print_newline();
    (Component.use_iX ix)#fx;
    begin try
      print_string "Ask for interface IY"; print_newline();
      let iy = Com.query_interface ix Component.iid_iY in
      print_string "Got it, calling Fy(5)..."; print_newline();
      (Component.use_iY iy)#fy 5
    with Com.Error(_, src, msg) ->
      printf "COM error (%s): %s\n" src msg; flush stdout
    end;
    begin try
      print_string "Ask for interface IZ"; print_newline();
      let iz = Com.query_interface ix Component.iid_iZ in
      print_string "Got it, calling Fz(12)..."; print_newline();
      let res = (Component.use_iZ iz)#fz 12 in
      printf "Return value is %d\n" res; flush stdout
    with Com.Error(_, src, msg) ->
      printf "COM error (%s): %s\n" src msg; flush stdout
    end
  with Com.Error(_, src, msg) ->
    printf "COM error (%s): %s\n" src msg; flush stdout
  end

let clsid_component1 = Com.clsid "0c092c21-882c-11cf-a6bb-0080c7b2d682"
let clsid_component2 = Com.clsid "aab56090-c721-11d2-8e2b-0060974fbf19"

let _ =
  Com.initialize();
  testcomp clsid_component1;
  testcomp clsid_component2;
  Com.uninitialize()