■100865 / inTopicNo.4) |
Re[2]: 別exeからプロパティ変数の値を変更したい |
□投稿者/ 魔界の仮面弁士 (3489回)-(2022/11/09(Wed) 13:42:35)
|
■No100861 (魔界の仮面弁士) に追記 > 別 exe が Property5.exe を参照設定して、その exe から > Property5 側の Form1 を New して呼び出すようにすれば、 > そこから test プロパティを自由に操作できますよ。
別案。 既に起動済みの Property5.exe を捉えて、test プロパティを操作するパターンです。
呼び出し元で Property5 を参照設定する必要はありませんが、 そのかわりに、Codeer.Friendly.Windows を nuget しておきます。 https://www.codeer.co.jp/CodeAndTool
Option Strict Off Imports Codeer.Friendly.Dynamic Imports Codeer.Friendly.Windows Public Class Form1 Private App As Codeer.Friendly.Windows.WindowsAppFriend
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load Dim p As Process = Process.GetProcessesByName("Property5").FirstOrDefault() If p IsNot Nothing Then If DialogResult.No = MessageBox.Show( _ "起動済みの Property5 (Process:" & CStr(p.Id) & ")に接続しますか?", _ "接続確認", MessageBoxButtons.YesNo, MessageBoxIcon.Question) Then p = Nothing End If End If If p Is Nothing Then MessageBox.Show("Property5 を起動して接続します。", "接続確認", MessageBoxButtons.OK, MessageBoxIcon.Information) p = Process.Start("D:\Sample\Property5.exe") End If App = New WindowsAppFriend(p) End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim win = App.Type(Of System.Windows.Forms.Application)() Dim forms = win.OpenForms Dim f1 = forms("Form1") f1.Text = "外部から操作中" Label1.Text = "元々の値:" & f1.test.ToString() f1.test = CInt(Now.ToString("HHmmssfff")) Label2.Text = "新しい値:" & f1.test.ToString() End Sub End Class
|
|