![](/img/trans.png)
[英]Pass return value from exe to bat and pass it to Process in C#
[英]How to Pass a string to an exe and retrieving from the exe using Process in C#
我需要解決此要求的方法。
我想將字符串(或textbox1.text)值傳遞給當前正在運行的應用程序exe。 然后稍后在另一個項目中,通過運行一個進程,我想從該exe檢索字符串內容。 我將使用該字符串content / msg進行進一步的驗證。
請向我提供代碼,我如何才能輕松實現C#.NET術語中的這一要求。
使用IPC 。
一種簡單的方法是通過文件系統交換數據。
應用程序A可以寫入文件A.TXT,而應用程序B可以寫入文件B.TXT。
然后,應用程序A可以監視文件B.TXT的更改,應用程序B可以監視文件A.TXT的更改。
發生更改時將文件加載到您的應用程序中,並處理讀取的內容。
更好的方法是將這些值存儲在共享對象中。
另一種方法是使用互操作的FindWindow,並獲取文本框的句柄並讀取內容
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
....
///
修改“按鈕”為win32文本框類名稱。 試試這個VB代碼
依我所知,您不會將字符串從一個可執行文件傳遞到另一個可執行文件。 您可以使用Process的參數來做到這一點:
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]
等於string with space as arg3
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.