File size: 1,564 Bytes
d12bc25
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# DDE support for Pythonwin
#
# Seems to work fine (in the context that IE4 seems to have broken
# DDE on _all_ NT4 machines I have tried, but only when a "Command Prompt" window
# is open.  Strange, but true.  If you have problems with this, close all Command Prompts!


import sys
import traceback

import win32api
import win32ui
from dde import *
from pywin.mfc import object


class DDESystemTopic(object.Object):
    def __init__(self, app):
        self.app = app
        object.Object.__init__(self, CreateServerSystemTopic())

    def Exec(self, data):
        try:
            # 			print "Executing", cmd
            self.app.OnDDECommand(data)
        except:
            t, v, tb = sys.exc_info()
            # The DDE Execution failed.
            print("Error executing DDE command.")
            traceback.print_exception(t, v, tb)
            return 0


class DDEServer(object.Object):
    def __init__(self, app):
        self.app = app
        object.Object.__init__(self, CreateServer())
        self.topic = self.item = None

    def CreateSystemTopic(self):
        return DDESystemTopic(self.app)

    def Shutdown(self):
        self._obj_.Shutdown()
        self._obj_.Destroy()
        if self.topic is not None:
            self.topic.Destroy()
            self.topic = None
        if self.item is not None:
            self.item.Destroy()
            self.item = None

    def OnCreate(self):
        return 1

    def Status(self, msg):
        try:
            win32ui.SetStatusText(msg)
        except win32ui.error:
            pass