.. highlightlang:: us .. index:: DdeInitiate .. _ddeinitiate: DdeInitiate =========== .. us.tag DdeInitiate GERMAN :ref:`DdeInitiate` leitet eine DDE-Konversation zwischen UniPlot (Client) und einer anderen Anwendung (Server) ein. .. function:: hConv = DdeInitiate(ssService, ssTopic) .. us.return **Returnwert** *hConv* ist die Kanalnummer (Handle) mit der die weitere Konversation durchgeführt werden kann. Im Fehlerfall liefert :ref:`DdeInitiate` den Wert 0. .. us.params **Parameter** .. uparam:: ssService *ssService* ist ein Service-Name. Normalerweise ist *ssService* der Name einer Exe-Datei ohne die Dateinamenserweiterung. Für UniPlot ist der Service-Name ``"UniPlotSL"``. .. uparam:: ssTopic *ssTopic* ist das Thema der Konversation. Bei den meisten Anwendungen sind Dokument-Namen zulässige Themen. Die meisten Anwendungen unterstützen außerdem das Thema ``"System"``. .. us.comment **Kommentar** Mit der Funktion :ref:`ObjShow` kann eine Liste aller geöffneten DDE-Kanäle angezeigt werden. Falls beim ersten Zugriff der Aufbau der DDE-Verbindung fehl schlägt, versucht die Funktion innerhalb von 500 ms die Verbindung herzustellen. .. us.example **Beispiel** Die folgende DDE-Konversation startet Excel und fügt die Zahlen 1, 2, 3 und 4 in eine Excel-Tabelle ein. Zunächst wird Excel mit der Funktion :ref:`system` gestartet. Die 0 des dritten Parameters bewirkt, daß die :ref:`system` Funktion sofort nach dem Aufruf zurückkehrt. :: def FindApp(ssApp) { RegConnect("HKEY_LOCAL_MACHINE") b = RegOpen("Software\Classes\" + ssApp + "\CLSID"); s = RegGetValue(""); RegOpen("Software\Classes\CLSID\" + s + "\LocalServer32") return RegGetValue(""); } s = FindApp("Excel.Application"); if (s == "") { MessageBoxError("Excel not found"); return; } system(s, SW_SHOW, 0); Der folgende Aufruf öffnet einen Kanal zum Thema ``"System"``. :: hConv = DdeInitiate("Excel", "System"); DdeRequest erfragt die System-Themen. :: ssTopics = DdeRequest(hConv, "Topics"); Der nächste Aufruf öffnet einen Kanal zum ersten Thema (das erste Excel-Tabellen Blatt). :: hConvTable = DdeInitiate("Excel", strtok(ssTopics, "\t")[2]); Die Funktion DdePoke schreibt die Zahlen 1,2,3,4 in das erste Excel-Tabellen-Blatt. ``Z1S1:Z2S2`` (Zeile/Spalte) ist der Zellbereich in der deutschen Excel Version. In der englischen Version wird der Zellbereich durch ``R1C1:R2C2`` (Row/Column) festgelegt. Die Zahlen einer Zeile müssen durch Tabulator-Zeichen (``"\t"``) getrennt werden, die Zeilen werden durch die Zeichen (``"\r\n"``) getrennt. :: DdePoke(hConvTable, "Z1S1:Z2S2", "1\t2\r\n3\t4") Nach Beendigung der Konversation werden die geöffneten Kanäle geschlossen. Es könnte auch :ref:`DdeTerminateAll` verwendet werden, um alle offenen Känale zu schließen. :: DdeTerminate(hConvTable); DdeTerminate(hConv); .. us.example **Beispiel** .. include:: ../include/test_DdeExecute.ic .. seealso:: :ref:`uberblick-dde`, :ref:`DdeTerminate`, :ref:`DdeTerminateAll`, :ref:`DdePoke`, :ref:`DdeExecute`, :ref:`DdeRequest` :sub:`id-1361586`