C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.100857 の関連記事表示

<< 0 >>
■100857  別exeからプロパティ変数の値を変更したい
□投稿者/ かねごん -(2022/11/08(Tue) 16:20:36)

    分類:[VB.NET/VB2005 以降] 

    Public Class Form1 にて、以下のプロパティ変数を定義したとして(exeファイル名は、Property5.exe)、
    Event PropertyChanged(ByVal sender As Object, ByVal e As EventArgs)

    Private _test As Integer = 1
    Public Property test() As Integer
    Get
    Return _test
    End Get
    Set(ByVal value As Integer)
    _test = value
    RaiseEvent PropertyChanged(Me, New EventArgs)
    End Set
    End Property

    別のvb.net のexeから、Property5.exeにある、プロパティ変数 test の値を変更する方法について、教えていただけませんでしょうか?
親記事 /過去ログ175より / 関連記事表示
削除チェック/

■100861  Re[1]: 別exeからプロパティ変数の値を変更したい
□投稿者/ 魔界の仮面弁士 -(2022/11/08(Tue) 18:51:43)
    No100857 (かねごん さん) に返信
    > 別のvb.net のexeから、Property5.exeにある、

    別 exe が Property5.exe を参照設定して、その exe から
    Property5 側の Form1 を New して呼び出すようにすれば、
    そこから test プロパティを自由に操作できますよ。


    Public Class Form1
      Private WithEvents child As Property5.Form1

      Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        If child Is Nothing OrElse child.IsDisposed Then
          child = New Property5.Form1()
          child.Text = String.Format("Created at {0:HH\:mm\:ss.ffff}", Now)
        End If
        child.Show(Me)
      End Sub

      Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        If child IsNot Nothing Then
          child.test = Now.Second
        End If
      End Sub

      Private Sub child_PropertyChanged(sender As Object, e As EventArgs) Handles child.PropertyChanged
        Label1.Text = String.Format("Changed at {0:HH\:mm\:ss.ffff}", Now)
      End Sub
    End Class
記事No.100857 のレス /過去ログ175より / 関連記事表示
削除チェック/

■100865  Re[2]: 別exeからプロパティ変数の値を変更したい
□投稿者/ 魔界の仮面弁士 -(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
記事No.100857 のレス /過去ログ175より / 関連記事表示
削除チェック/

■100866  Re[3]: 別exeからプロパティ変数の値を変更したい
□投稿者/ radian -(2022/11/09(Wed) 15:42:01)
    No100865 (魔界の仮面弁士 さん) に返信
    > 別案。
    > 既に起動済みの 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

    おお、これはすごい。
    どういう仕組みで実現してるんでしょうね。
記事No.100857 のレス /過去ログ175より / 関連記事表示
削除チェック/

■100867  Re[4]: 別exeからプロパティ変数の値を変更したい
□投稿者/ 魔界の仮面弁士 -(2022/11/09(Wed) 15:54:52)
記事No.100857 のレス /過去ログ175より / 関連記事表示
削除チェック/

■100868  Re[3]: 別exeからプロパティ変数の値を変更したい
□投稿者/ kiku -(2022/11/10(Thu) 11:47:42)
    2022/11/10(Thu) 11:48:16 編集(投稿者)

    No100865 (魔界の仮面弁士 さん) に返信
    > ■No100861 (魔界の仮面弁士) に追記
    >>別 exe が Property5.exe を参照設定して、その exe から
    >>Property5 側の Form1 を New して呼び出すようにすれば、
    >>そこから test プロパティを自由に操作できますよ。

    興味があったので、C#ですが同じようなサンプルで動作確認してみました。
    操作できました。感動。

    操作される側
    public partial class Form1 : Form
    {
    string _Test;
    public string Test {
    get
    {
    return this._Test;
    }
    set
    {
    this._Test = value;
    label1.Text = _Test;
    }
    }
    }

    操作する側
    private void button1_Click(object sender, EventArgs e)
    {
    var p = Process.GetProcessesByName("WindowsFormsApp1").FirstOrDefault();
    if(p == null)
    {
    Console.Write("●プロセスが見つからない");
    return;
    }

    using (var App = new WindowsAppFriend(p))
    {
    var win = App.Type<System.Windows.Forms.Application>();
    var forms = win.OpenForms;
    var f1 = forms["Form1"];
    f1.Test = "test";
    }
    }
記事No.100857 のレス /過去ログ175より / 関連記事表示
削除チェック/

■100862  Re[1]: 別exeからプロパティ変数の値を変更したい
□投稿者/ radian -(2022/11/09(Wed) 10:06:31)
記事No.100857 のレス /過去ログ175より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -