我有两个应用程序 - 一个C#应用程序和一个VBA应用程序。我想在每个应用程序中创建一个指向相同内存位置的变量。目的是,如果我在一个应用程序中更改了值,则另一个应用程序可以立即访问该值,而无需在应用程序之间传输该数据的任何其他逻辑。从本质上讲,我想"远程控制"来自VBA应用程序的C#变量的值。
我不确定这是否可行,所以非常感谢任何帮助。
编辑:我现在正在考虑采用略有不同的方法。我可以使用非持久性内存映射文件在两个应用程序之间传输数据。虽然编写/读取内存映射文件需要一些代码,但它比磁盘i / o更好。我正在两个应用程序之间传输一个实数(例如1.2345)。不确定要使用哪个类 - StreamWriter,StringWriter或TextWriter?有什么建议??谢谢。
答案 0 :(得分:0)
您需要通过引用C#
中的代码来传递变量虽然我没有在C#中直接尝试过,但下面给出了您正在寻找的C ++等价物。请注意,此方法使用全局变量并且非常粗糙且可能不安全,因此请务必小心处理内存。我相信可能有更优雅的方式来表达这一点。
double* monitored_variable_global_pointer;
void __stdcall DoSomething(double &monitored_variable)
{
// since monitored_variable is passed by reference, any change here, will change it on the VBA side, e.g.
monitored_variable_global_pointer = &monitored_variable;
}
// On the VBA side, the passed variable will have to be global too for this to work.
// Also, you need the function calling convention to be stdcall for it to work with VBA, at least when making functions in C++
编写代码后,
您需要在C#中执行相应的这些步骤才能达到预期的效果。