首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >读取Java变量

读取Java变量
EN

Stack Overflow用户
提问于 2009-05-10 12:05:53
回答 6查看 455关注 0票数 0

我正在尝试从C#程序的进程外读取Java applet中的变量。除了读取内存地址之外,有没有什么方法可以从java applet获取变量的值?该java小应用程序将在浏览器内运行。如果在C#中不能做到这一点,那么可以从不同的java小程序中做到这一点吗?

谢谢。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2009-05-10 13:04:41

如果您可以更改小程序的代码,就可以让它承载一个RMI服务器,这是this excercise的主题。不过,我不是这方面的专家--我认为它可能会受到各种安全限制。

如果不能更改小程序,但可以更改显示小程序的HTML页面,则有两种方法可以从小程序访问信息。

第一种方法是使用Javascript编写applet脚本,就像@Margus建议的那样( applet对象的所有公共方法都通过applet的DOM对象公开)。

另一种方法是将您自己的小程序放在页面中,并使用getAppletContext()获取对其他小程序的引用。这样做的主要好处是,您可以通过反射从第三方applet访问非公共信息,并使用RMI服务器发布它(如上所述)。

票数 1
EN

Stack Overflow用户

发布于 2009-05-10 12:56:13

是的,这是可以做到的。

C#窗体可以有可以宿主webbrowser组件,可以触发JScript,可以调用Java applet公共方法。

不久前,我制作了一个简单的网页,其中包含一个绘制“热门”颜色地图的applet。输入是用JScript注入的,可以用AJAX或任何其他可以在HTML DOM上触发JScript的应用程序来检索。

HTML的来源是:

代码语言:javascript
复制
<HTML><HEAD></HEAD><BODY> 
<SCRIPT> 
function call() {
    var inputData = "-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2"
        + ";-2,-2,-2,-2,-2,-2,-2,-2,-2,0,1647,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2"
        + ";-2,-2,-2,-2,-2,-2,-2,-2,-2,89,0,-1,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2"
        + ";-2,-2,-2,-2,-2,-2,-2,0,0,615,366,0,1198,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2"
        + ";-2,-2,-2,-2,-2,-2,0,2179,1262,764,200,0,0,609,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2"
        + ";-2,-2,-2,-2,-2,0,0,3401,1940,0,210,0,-1,-1,162,0,0,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2"
        + ";-2,-2,-2,-2,-2,-2,0,-1,966,0,86,0,0,0,0,-1,-1,0,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2"
        + ";-2,-2,-2,-2,-2,-2,-2,0,0,0,0,0,0,0,-1,250,53,-1,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2"
        + ";-2,-2,-2,-2,-1,1977,1413,128,0,0,0,0,0,0,-1,1413,2447,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2"
        + ";-2,-2,-2,0,-1,0,0,0,0,0,0,0,-1,317,0,-1,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2"
        + ";-2,-2,-2,0,0,0,0,0,0,0,0,0,0,3246,2190,0,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2"
        + ";-2,51,0,-1,0,0,0,-1,0,-1,0,-1,-1,1523,-2,-2,-2,-1,0,0,-2,-2,0,0,-2,-2,-2,-2,-2"
        + ";-2,0,0,0,0,0,0,0,0,0,0,1692,2028,2850,-2,0,-1,0,0,0,0,0,0,0,-1,-2,-2,-2,-2"
        + ";-2,0,0,0,0,0,-1,0,0,0,-1,1292,-2,-2,-2,0,0,-1,-1,0,0,0,0,0,-1,0,-2,-2,-2"
        + ";-2,0,-1,0,0,-1,0,0,-1,0,1028,1247,7675,9244,7940,0,-1,0,0,-1,0,0,0,0,0,0,0,-2,-2"
        + ";-2,-1,0,0,0,0,0,0,0,0,844,1114,2860,6631,4249,0,0,-1,-1,0,0,0,0,0,0,0,0,-2,-2"
        + ";-2,-2,0,0,0,-1,0,-1,0,0,0,-1,1958,2379,-1,0,0,0,0,0,0,0,0,-1,0,0,0,-2,-2"
        + ";-2,-2,-2,0,470,0,-2,-2,-2,0,0,0,-1,0,0,0,0,0,-1,0,-1,0,0,3574,2706,2195,-1,-2,-2"
        + ";-2,-2,-2,-2,-2,-2,-2,-2,-2,0,0,0,-1,-1,0,0,0,0,0,0,0,0,165,-1,-1,1282,867,0,-2"
        + ";-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,0,0,0,0,0,0,-1,0,0,0,0,34,504,3098,2708,2324,-1,0,-2"
        + ";-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,0,0,-1,0,0,0,0,0,0,0,0,0,721,-1,3854,2783,-1,0,-2"
        + ";-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,0,0,0,0,0,-1,0,0,0,-1,0,34,191,2455,4126,0,0,-2"
        + ";-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,0,0,0,0,0,0,0,0,3982,2656,0,0,-1,0,0,-2,-2"
        + ";-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,0,-1,0,0,2194,0,0,0,0,-2,-2,-2,-2"
        + ";-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,0,0,-1,0,0,-2,-2,-2,-2,-2,-2,-2"
        + ";-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2";
    document.Necrodrip.update(inputData);
}
</SCRIPT> 
<FORM> 
<APPLET CODE="kuningriik.pdApplet.class"  
        NAME="Necrodrip" 
        width="1200" height="600"> 
</APPLET><br/> 
<INPUT type="button" value="Loo kaart" 
   onClick = "call()"> 
</FORM> 
</BODY></HTML> 

您可以在此处查看页面:link

票数 2
EN

Stack Overflow用户

发布于 2009-05-10 12:30:25

这是完全不可能的。

根据定义,进程不共享内存、或任何其他资源。这是在操作系统级别强制执行的东西,您对此无能为力。

如果这是可能的,您只能想象这可能是什么安全/稳定性问题。

如果您确实需要进程间通信,请查看您所用语言中的套接字编程。请注意,这将需要对客户机( Java applet)和服务器( C#进程)进行更改。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/845209

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档