我有一个关于从另一个应用程序更改应用程序变量的问题。
例如:如果在 1.exe 中我定义了string a="a"
,我将如何通过使用其他应用程序更改a="a" to a="b"
?
我是否必须获取字符串的内存地址,然后将其内容更改为b?或者还有其他更简单的方法吗?
答案 0 :(得分:2)
您可以为这两个应用程序设置共享资源,并从那里读取值。它可以是数据库,缓存甚至是简单的文本文件。
在适当的时候从共享资源刷新变量。
答案 1 :(得分:2)
鉴于您提到的场景(即您不控制第一个应用程序的代码)..使用管理员权限打开目标进程,查找要更新的内存位置,然后更新它的一般想法适用..
然而,请注意,它通常不会那么简单。例如,
应用程序逻辑可以很难预测变量的数量,以及在哪里?
在不拆解代码的情况下(绝不是一项简单的任务......这一切都没有),扫描值并猜测内存位置是唯一可以想到的选择。但它有可能做出错误的猜测,并腐蚀整个过程。
PPS - 同样小心下载的内容。如果从不可靠的网站下载这些应用程序,可能会造成破坏性/安全风险。
答案 2 :(得分:1)
我认为最简单的方法是通过UDP或TCP与localhost中的网络套接字进行通信。它为您提供了一个良好的事件机制,因此您可以轻松处理数据而无需经常检查新的数据更改,也无论应用程序的数量如何在同一时间相互通信也无关紧要。其他解决方案如共享内存等将难以控制,尤其是当您运行三个或更多应用程序时。