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