2011-03-31 55 views
1

我有一个在我的电脑上运行的.exe文件。我怎样才能连接到它从C#?如何与来自c的单独应用程序通信#

例如notepad.exe正在运行。我想写在窗体应用程序或控制台应用程序窗体的记事本。我怎样才能做到这一点?

+2

使用'SendKeys()' – 2011-03-31 13:13:31

+0

如果我正确记得'SendKeys'与活动应用程序交互而不是指定的应用程序。我宁愿尽可能发送消息(通常只有游戏需要更低级别的方法) – CodesInChaos 2011-03-31 13:15:04

+0

@Code,是'AppActivate',然后是'SendKeys' – Blorgbeard 2011-03-31 13:15:38

回答

0

看一看this tutorial。据我所知,它确实是你正在寻找的东西。我意识到它是用德语写的,所以看看源代码。

+0

thx很多Thalaur。你下载了源代码吗?我有一个错误:无法找到资源文件属性\ resources.resx。你能帮我一下吗?谢谢。在这段代码中创建了一个从记事本EXE的EXE,然后运行它? – elisa 2011-03-31 13:41:01

+0

看看文章中的源代码。首先,他们开始记事本应用程序。然后,他们得到窗口句柄,并将消息发送到窗口。通过这些窗口消息,您可以更改文本(WM_SETTEXT),添加文本并执行更多操作。我没有编译给定的程序,它只是为了告诉你如何做这些事情。 – Thalur 2011-03-31 14:14:35

2

两个建议:

要么开始使用的Process.Start()

http://msdn.microsoft.com/en-us/library/system.diagnostics.process.start.aspx

过程或使用的SendKeys从Windows脚本宿主

http://msdn.microsoft.com/en-us/library/8c6yea83(VS.85).aspx

+0

我知道我可以用process.start()激活一个.exe文件。我在问如何发送文本消息从记事本从C#?我的意思是建立我的c#代码后,看到在记事本中我写的字符串在c# – elisa 2011-03-31 13:20:57

1

这取决于究竟你想做什么。使用SendKeys是最简单的解决方案,但它的功能很粗糙且有限。你可以用SendMessage做得更多,更好,但是这会更难编码。

+0

你能告诉我我怎么能做到这一点?我希望能够打开记事本exe文件并将数据发送给它...并从中读取日期。有可能的? – elisa 2011-03-31 13:17:04

+1

@elisa:我不能给你一个解决方案。先尝试一下。 – Jon 2011-03-31 13:18:56

+0

thx Jon :)。我以为你有一些C#示例 – elisa 2011-03-31 13:22:19

0

从窗口中的另一个进程读取是至少有问题的。我们前一阵子做了一些工作,它涉及使用汇编语言连接到低级别的Win32 API。从本质上讲,这真的不令人愉快,如果你可以避免这样做,你会有更多的头发。

如果您发送的应用程序了解您要发送给它的消息,使用SendMessage将会起作用。我怀疑你在后来的Windows版本(Vista + Win7)上开始遇到安全问题,并且必须以提升的权限运行你的应用程序。

你为什么要这样做?

+0

嗨。我想访问例如记事本,并从中读取并写入它。我也想实现它作为一个Windows服务。我的意思是我喜欢从Windows服务访问记事本,并从我的服务中发送消息 – elisa 2011-03-31 14:22:09

相关问题