1/* Simple client interface to DDE servers. 2 Copyright (C) 1998, 2001, 2002, 2003, 2004, 2005, 3 2006, 2007 Free Software Foundation, Inc. 4 5This file is part of GNU Emacs. 6 7GNU Emacs is free software; you can redistribute it and/or modify 8it under the terms of the GNU General Public License as published by 9the Free Software Foundation; either version 2, or (at your option) 10any later version. 11 12GNU Emacs is distributed in the hope that it will be useful, 13but WITHOUT ANY WARRANTY; without even the implied warranty of 14MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15GNU General Public License for more details. 16 17You should have received a copy of the GNU General Public License 18along with GNU Emacs; see the file COPYING. If not, write to 19the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 20Boston, MA 02110-1301, USA. */ 21 22#include <windows.h> 23#include <ddeml.h> 24#include <stdlib.h> 25#include <stdio.h> 26 27HDDEDATA CALLBACK 28DdeCallback (UINT uType, UINT uFmt, HCONV hconv, 29 HSZ hsz1, HSZ hsz2, HDDEDATA hdata, 30 DWORD dwData1, DWORD dwData2) 31{ 32 return ((HDDEDATA) NULL); 33} 34 35#define DdeCommand(str) \ 36 DdeClientTransaction (str, strlen (str)+1, HConversation, (HSZ)NULL, \ 37 CF_TEXT, XTYP_EXECUTE, 30000, NULL) 38 39int 40main (argc, argv) 41 int argc; 42 char *argv[]; 43{ 44 DWORD idDde = 0; 45 HCONV HConversation; 46 HSZ Server; 47 HSZ Topic = 0; 48 char command[1024]; 49 50 if (argc < 2) 51 { 52 fprintf (stderr, "usage: ddeclient server [topic]\n"); 53 exit (1); 54 } 55 56 DdeInitialize (&idDde, (PFNCALLBACK)DdeCallback, APPCMD_CLIENTONLY, 0); 57 58 Server = DdeCreateStringHandle (idDde, argv[1], CP_WINANSI); 59 if (argc > 2) 60 Topic = DdeCreateStringHandle (idDde, argv[2], CP_WINANSI); 61 62 HConversation = DdeConnect (idDde, Server, Topic, NULL); 63 if (HConversation != 0) 64 { 65 while (fgets (command, sizeof(command), stdin) != NULL) 66 DdeCommand (command); 67 68 DdeDisconnect (HConversation); 69 } 70 71 DdeFreeStringHandle (idDde, Server); 72 if (Topic) 73 DdeFreeStringHandle (idDde, Topic); 74 DdeUninitialize (idDde); 75 76 return (0); 77} 78 79/* arch-tag: 360d7a99-2cae-447e-8d06-41ca41987e30 80 (do not change this comment) */ 81