加入windows的服务后的奇怪问题.
测试环境:windowsxp+resin3.0.22+jdk1.4
测试页面(a.jsp):
<%@ page contentType= "text/html;charset=GBK " %>
<%@page import= "java.awt.Rectangle,java.awt.image.BufferedImage,java.io.File,javax.imageio.ImageIO,java.awt.Toolkit,java.awt.Robot " %>
<%
try {
//拷贝屏幕到一个BufferedImage对象screenshot
BufferedImage screenshot = (new Robot()).createScreenCapture(new Rectangle(0, 0, 1024, 768));
File f = new File( "d:/temp.jpg ");
//将screenshot对象写入图像文件
ImageIO.write(screenshot, "jpg ", f);
}
catch (Exception ex) {
System.out.println(ex);
}
%>
问题:当直接点击 resin目录下的httpd.exe运行时,程序能够正常把当前屏幕copy生成图片temp.jpg
但是当把resin加入windows的服务后,生成的temp.jpg图片内容就是一块黑色背景.
请问加入windows的服务后,为什么会有这个问题?两者有什么区别吗?
[解决办法]
没遇到过,帮忙顶。
是不是又启动了其它服务?
[解决办法]
我试了两台机器都有这个问题
[解决办法]
有什么属性没有设置?
[解决办法]
我试了下tomcat下也有这个问题。即tomcat如果在服务中启动的话,生成的图片也是一块黑色。如果不在服务中启动,生成的图片就是正常的。
craig_wolfdon()
有什么属性没有设置?
---------------
答:resin安装为windows的服务只用了最简单的:httpd -install .没有设置其它属性。
各位如果有兴趣,把这个简单的jsp运行下就能看到这个问题了。谢谢!
[解决办法]
help
[解决办法]
up~
[解决办法]
帮顶
[解决办法]
呵呵,在我的机子上TOMCAT中打开网页活死都是黑的,但是。。。。直接运行JAVA文件是可以抓到的,火大,这说明JAVA环境是好的,应该是TOMCAT的问题或IE的问题,暂时还没找到具体的原因,下面这个是JAVA文件
import java.awt.Dimension;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;
/*******************************************************************
* 该JavaBean可以直接在其他Java应用程序中调用,实现屏幕的 "拍照 "
*****************************************************/
public class GuiCamera
{
private String fileName; //文件的前缀
private String defaultName = "GuiCamera ";
static int serialNum=0;
private String imageFormat; //图像文件的格式
private String defaultImageFormat= "png ";
Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
/****************************************************************
* 默认的文件前缀为GuiCamera,文件格式为PNG格式
****************************************************************/
public GuiCamera() {
fileName = defaultName;
imageFormat=defaultImageFormat;
}
/****************************************************************
* 本构造支持JPG和PNG文件的存储
****************************************************************/
public GuiCamera(String s,String format) {
fileName = s;
imageFormat=format;
}
/****************************************************************
* 对屏幕进行拍照
****************************************************************/
public void snapShot() {
try {
//拷贝屏幕到一个BufferedImage对象screenshot
BufferedImage screenshot = (new Robot()).createScreenCapture(new
Rectangle(0, 0, (int) d.getWidth(), (int) d.getHeight()));
serialNum++;
//根据文件前缀变量和文件格式变量,自动生成文件名
String name=fileName+String.valueOf(serialNum)+ ". "+imageFormat;
File f = new File(name);
System.out.print( "Save File "+name);
//将screenshot对象写入图像文件
ImageIO.write(screenshot, imageFormat, f);
System.out.print( "..Finished!\n ");
}
catch (Exception ex) {
System.out.println(ex);
}
}
public static void main(String[] args)
{
GuiCamera cam= new GuiCamera( "d:\\Hello ", "png ");//
cam.snapShot();
}
}
[解决办法]
关注~~
[解决办法]
顶!
[解决办法]
to liaohaiying(大菜)
我也是调试这个程序的时候,发现这个问题的。
等待高手解答!
[解决办法]
帮顶!
[解决办法]
等……
[解决办法]
是不是 Robot对象.createScreenCapture 这个方法所使用的设备号在这些操作之后被占用了呢?? 没看过这个,只是猜测。
[解决办法]
帮顶