【发布时间】:2016-06-08 08:39:14
【问题描述】:
好的,我创建了一个名为 Sharknadoo 的应用程序,该应用程序的作用是从组合框中读取从 1 到任意数字的值,并在其右侧创建该数量的文本框。
现在让我们假设我没有此 Sharnadoo 应用程序的代码,只是安装在我的桌面上的应用程序。我的问题是如何将我的 listbox.items 从“我的惊人应用程序”发送到 Sharnadoo 文本框?假设我的列表框中的项目数量与我的其他应用程序中的文本框数量相同。我很抱歉,但我真的很想学习如何做到这一点,有人告诉我有可能实现,但我不知道如何去做实现它是在考虑使用坐标或类似的东西,但据我了解,你甚至可以坚持这样一个事实,即 sharknadoo 应用程序正在使用文本框,甚至无法访问其源代码。提前谢谢朋友们:D。
Process[] processes = Process.GetProcessesByName("Sharknadoo.exe");
int i = 0;
foreach (Process p in processes)
{
IntPtr windowHandle = p.MainWindowHandle;
string item = listBox1.Items[i].ToString();
listBox1.Items.Add(item);
i++;
}
我意识到我的代码逻辑不好,但这是我能想到的。
【问题讨论】:
-
您正在寻找“进程间通信”。
-
直到现在我都在尝试阅读这方面的内容,从我所阅读的内容来看,有一种方法可以使用 FindWindow 和 WM_COPYDATA 来实现这一点,但我不明白如何......
-
你可以,但这有点过时了。我会坚持使用IPC,值得学习,而且有很多选择。对于机器上这种简单的应用程序到应用程序,我会查看IPC using Named Pipes。
-
@DonBoitnott 如果就这么简单,你能给我一个直接的例子来解决我的问题吗?
-
@JohnPietrar 你只有
My Amazing App的源代码吗?如果您有这两个应用程序的源代码,您可以使用WCF在应用程序之间进行通信。但是如果您没有Sharknadoo的源代码,那么您应该找到那些TextBox句柄并将WM_SETTEXT发送到这些句柄。告诉我这是怎么回事?
标签: c# .net winforms listbox communication