C# 如何在C中使用进程将字符串传递给exe并从exe中检索#

C# 如何在C中使用进程将字符串传递给exe并从exe中检索#,c#,C#,我需要这个要求的解决方案 我想将字符串(或textbox1.text)值传递给当前正在运行的应用程序exe。然后,在另一个项目中,通过运行一个进程,我希望从该exe中检索字符串内容。我将使用该字符串content/msg进行进一步验证 请向我提供代码,说明如何在C#.NET术语中轻松实现此要求。使用 一个简单的方法是通过文件系统交换数据 应用程序A可以写入文件A.TXT,应用程序B可以写入文件B.TXT 然后,应用程序A可以监视文件B.TXT的更改,应用程序B可以监视A.TXT中的更改 发生更改

我需要这个要求的解决方案

我想将字符串(或textbox1.text)值传递给当前正在运行的应用程序exe。然后,在另一个项目中,通过运行一个进程,我希望从该exe中检索字符串内容。我将使用该字符串content/msg进行进一步验证

请向我提供代码,说明如何在C#.NET术语中轻松实现此要求。

使用

一个简单的方法是通过文件系统交换数据

应用程序A可以写入文件A.TXT,应用程序B可以写入文件B.TXT

然后,应用程序A可以监视文件B.TXT的更改,应用程序B可以监视A.TXT中的更改

发生更改时将文件加载到应用程序中,并处理读取的内容。

使用

一个简单的方法是通过文件系统交换数据

应用程序A可以写入文件A.TXT,应用程序B可以写入文件B.TXT

然后,应用程序A可以监视文件B.TXT的更改,应用程序B可以监视A.TXT中的更改


当发生更改时,将文件加载到应用程序中并处理读取的内容。

更好的方法是将这些值存储在共享对象中

另一种方法是使用interop FindWindow,并获取textbox的句柄并读取内容

Private Declare Auto Function FindWindow Lib "user32.dll" ( _
<MarshalAs(UnmanagedType.LPTStr), [In]()> ByVal lpClassName As
String, _
<MarshalAs(UnmanagedType.LPTStr), [In]()> ByVal lpWindowName As
String _
) As IntPtr

Private Declare Auto Function FindWindowEx Lib "user32.dll" ( _
ByVal hWndParent As IntPtr, _
ByVal hWndChildAfter As IntPtr, _
<MarshalAs(UnmanagedType.LPTStr), [In]()> ByVal lpszClass As
String, _
<MarshalAs(UnmanagedType.LPTStr), [In]()> ByVal lpszWindow As
String _
) As IntPtr




Dim hWnd As IntPtr = FindWindow(vbNullString, "FSM")
If hWnd.Equals(IntPtr.Zero) Then
Return
End If
Dim hWndButton As IntPtr = _
FindWindowEx(hWnd, IntPtr.Zero, "BUTTON", "Button 1")
If hWndButton.Equals(IntPtr.Zero) Then
Return
End If
....
///
Private声明自动函数findwindowlib“user32.dll”(_
ByVal lpClassName As
弦_
ByVal lpWindowName As
串_
)As IntPtr
私有声明自动函数FindWindowEx Lib“user32.dll”(_
ByVal hWndParent作为IntPtr_
ByVal hWndChildAfter As IntPtr_
ByVal LPSZ类As
弦_
ByVal LPSZAS窗口
串_
)As IntPtr
Dim hWnd As IntPtr=FINDWNDOW(vbNullString,“FSM”)
如果hWnd.等于(IntPtr.零),则
返回
如果结束
尺寸hWndButton为IntPtr=_
FindWindowEx(hWnd、IntPtr.Zero、“按钮”、“按钮1”)
如果hWndButton.Equals(IntPtr.Zero),则
返回
如果结束
....
///

将“按钮”修改为win32文本框类名。试试这段VB代码,更好的方法是将这些值存储在共享对象中

另一种方法是使用interop FindWindow,并获取textbox的句柄并读取内容

Private Declare Auto Function FindWindow Lib "user32.dll" ( _
<MarshalAs(UnmanagedType.LPTStr), [In]()> ByVal lpClassName As
String, _
<MarshalAs(UnmanagedType.LPTStr), [In]()> ByVal lpWindowName As
String _
) As IntPtr

Private Declare Auto Function FindWindowEx Lib "user32.dll" ( _
ByVal hWndParent As IntPtr, _
ByVal hWndChildAfter As IntPtr, _
<MarshalAs(UnmanagedType.LPTStr), [In]()> ByVal lpszClass As
String, _
<MarshalAs(UnmanagedType.LPTStr), [In]()> ByVal lpszWindow As
String _
) As IntPtr




Dim hWnd As IntPtr = FindWindow(vbNullString, "FSM")
If hWnd.Equals(IntPtr.Zero) Then
Return
End If
Dim hWndButton As IntPtr = _
FindWindowEx(hWnd, IntPtr.Zero, "BUTTON", "Button 1")
If hWndButton.Equals(IntPtr.Zero) Then
Return
End If
....
///
Private声明自动函数findwindowlib“user32.dll”(_
ByVal lpClassName As
弦_
ByVal lpWindowName As
串_
)As IntPtr
私有声明自动函数FindWindowEx Lib“user32.dll”(_
ByVal hWndParent作为IntPtr_
ByVal hWndChildAfter As IntPtr_
ByVal LPSZ类As
弦_
ByVal LPSZAS窗口
串_
)As IntPtr
Dim hWnd As IntPtr=FINDWNDOW(vbNullString,“FSM”)
如果hWnd.等于(IntPtr.零),则
返回
如果结束
尺寸hWndButton为IntPtr=_
FindWindowEx(hWnd、IntPtr.Zero、“按钮”、“按钮1”)
如果hWndButton.Equals(IntPtr.Zero),则
返回
如果结束
....
///

将“按钮”修改为win32文本框类名。试试这段VB代码

据我所知,您不想将字符串从一个可执行文件传递到另一个可执行文件。 您可以使用流程的参数来实现这一点:

System.Diagnostics.Process.Start("executable", "arg1 arg2 \"string with space as arg3\"");
参数部分必须符合命令行格式,每个参数用空格分隔,可以用双引号(“)分隔一个带空格的参数

在新流程中,可以在Main方法中检索这些参数

static void Main(string[] args)

在那里,
args[0]
将等于
arg1
args[0]
arg2
args[2]
字符串,空格为arg3
据我所知,您不希望将字符串从一个可执行文件传递到另一个可执行文件。 您可以使用流程的参数来实现这一点:

System.Diagnostics.Process.Start("executable", "arg1 arg2 \"string with space as arg3\"");
参数部分必须符合命令行格式,每个参数用空格分隔,可以用双引号(“)分隔一个带空格的参数

在新流程中,可以在Main方法中检索这些参数

static void Main(string[] args)

其中,
args[0]
将等于
arg1
args[0]
arg2
args[2]
字符串,空格为arg3

,只是为了澄清一下:应用程序A将字符串值传递给已经运行的应用程序B,随后,应用程序C从应用程序B检索该字符串值?只是为了澄清:应用程序a将字符串值传递给已经运行的应用程序B,然后,在以后的某个时间,应用程序C从应用程序B检索该字符串值?请提供如何将参数/字符串内容传递给exe的代码,以及如何在C#中检索相同的进程。给我提供完整的代码。使用上述一行代码,我无法从exe获取数据。请向我提供如何将参数/字符串内容传递给exe的代码,以及如何在C#中使用相同的进程检索相同的代码。给我提供完整的代码。使用上面的一行代码,我无法从exe获取数据。