簡體   English   中英

如何在C#中使用Process將字符串傳遞給exe並從exe檢索

[英]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]等於arg1args[0]等於arg2args[2]等於string with space as arg3

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM