Python -> DDE -> Visual-Basic

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
integral
User
Beiträge: 4
Registriert: Mittwoch 31. Oktober 2007, 12:21

Hallo, ich versuche gerade ein Interface in Python für ein bestehendes VB-Programm zu schreiben.

in der Visual-Basic Applikation werden Daten über die LinkPoke Methode übertragen, als DDE-Server habe ich das pyWin32 Beispiel genommen.

Folgenden Code hab ich in VB geschrieben um denn Python DDE Server zu testen.

Beim aus führen von Linkexecute funktioniert alles wunderbar:

Code: Alles auswählen

SPS_Datenschreiben.LinkTopic = "RunAny|ComputeStringLength"
SPS_Datenschreiben.LinkItem = "Request"
SPS_Datenschreiben.LinkMode = 2
SPS_Datenschreiben.LinkExecute "1234"
Beim aus führen von LinkPoke allerdigs kommt immer folgende Meldung: 'Die Anwendung für die DDE Operation oder Methode nicht aus'

Code: Alles auswählen

SPS_Datenschreiben.LinkTopic = "RunAny|ComputeStringLength"
SPS_Datenschreiben.LinkItem = "Request"
SPS_Datenschreiben.LinkMode = 2
SPS_Datenschreiben.Text = "123"
SPS_Datenschreiben.LinkPoke
Ich vermute das in dem DDE Server Python-Script ein Handler fehlt, kenne mich aber mit DDE leider nicht so aus, währ super wenn jemand eine Idee hätte was fehlt :)

Code: Alles auswählen

# 'Request' example added jjk  11/20/98

import win32ui
from pywin.mfc import object
import dde

class MyOtherTopic(object.Object):
	def __init__(self, topicName):
		object.Object.__init__(self, dde.CreateTopic(topicName))
        print "init"

	def Exec(self, cmd):
		print "Other Topic asked to exec", cmd
		return cmd

server = dde.CreateServer()
server.AddTopic(MyOtherTopic("RunAnyCommand"))
server.Create('RunAny')

while 1:
	win32ui.PumpWaitingMessages(0, -1)
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

integral hat geschrieben:DDE
[...]

Code: Alles auswählen

from pywin.mfc import object
Hallo integral!

Willkommen im Python-Forum!

Ich kann dir wahrscheinlich nicht helfen. Aber ein paar Gedanken habe ich doch dazu.

1.) DDE war schon zu meiner Visual Basic 5 Zeit ausgestorben und nur wirklich alt gewachsene Programme wurden nicht auf OLE umgestellt, weil es sich nicht rentierte.

2.) Du überschreibst das Python-Objekt ``object``. Das darf garantiert nicht sein. Besser du importierst ``pywin.mfc.object`` und verweist im Code auf den ganzen Namen. ``pywin.mfc.object.Object``.

Ob das was hilft, glaube ich nicht. DDE ist in sich so brüchig, dass ich mich nie damit befasst habe.

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Antworten