JAVA的web截图功能实现

需求:在网页上点击按钮,打开截图程序。截图后,弹出页面,填写相关文字性的内容,将所截到的图片以邮件形式发送出去。

不让采购小公司的截图插件,就只能自己搞了。

1、开发客户端截图软件(基于JPanel),接收参数。将截到的图片上传到参数指定的服务器上,并使用本地IE打开邮件发送的页面。

2、在页面中嵌入Applet程序,点击按钮触发程序中的事件,从而打开截图程序。

关键代码:

1、截图程序(代码太多了,没时间搞,先只贴main)

	/*
	 * 参数:截图后跳转的URL
	 */
	public static void main(String[] args) {
		TestFrame tf=new TestFrame();
		tf.jtbtnClick();
		tf.setAlwaysOnTop(true);	//顶层显示
		boolean isCaptured = tf.saveImg();	//是否截图
		if(isCaptured){
			//上传图片
			try {
				ImageUpload.uploadImage(tf,SCUtil.processUrl(args[0]));
			} catch (Exception ee) {
				ee.printStackTrace();
			}
			
			while(!tf.getUploaded()){
				try {
					Thread.sleep(1000);
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
			}
			
			//延迟半秒打开网页
			try {
				Thread.sleep(500);
			} catch (InterruptedException e1) {
				// TODO Auto-generated catch block
				e1.printStackTrace();
			}
			//打开本地网页
			try {
				Runtime.getRuntime().exec( "\""+System.getenv("ProgramFiles")+"\\Internet Explorer\\IEXPLORE.EXE\"  "+args[0] );
				//C:\\Program Files\\ScreenShotClient\\temp\\run.html
			} catch (IOException e) {
				e.printStackTrace();
				System.exit(0);
			}
			
		}
		
		tf.dispose();
		System.exit(0);

	}


2、Applet

import java.applet.Applet;
import java.security.Permission;

import javax.swing.SwingUtilities;

public class OpenExeApplet extends Applet {
	
	private class DefaultSecurityManager extends SecurityManager{
		
		@Override
		public void checkPermission(Permission perm) {
		}
		
		@Override
		public void checkPermission(Permission perm, Object context) {
		}
		
	}

	
	public void init() {
		System.setSecurityManager(new DefaultSecurityManager());
	}

	
	public String openExe(){
		String path = getParameter("path");
		if(null == path){
			path = getParameter("src");
		}

		try{
			Runtime rt = Runtime.getRuntime();
			String[] cmd = path.split("|&@");
			rt.exec(cmd);
		}catch(Exception e){
			e.printStackTrace();
			return e.getMessage();
		}
			
		return "success";
	}

3、页面

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = "C:/Program Files/ScreenShotClient/screen.exe|&@http://192.25.102.140:8080/BI";
 %>
<html>
  <head>
    <title>打开截图软件</title>
    <script type="text/javascript">
    function openApp(){
    	var str = document.applets[0].openExe();
    	alert(str);
    }
    </script>
  </head>
  
  <body>
  
  <input type="button" value="open" οnclick="openApp()" />
    
<object classid="clsid:CAFEEFAC-0015-0000-0007-ABCDEFFEDCBA" id="qApplet" name="qApplet" 
	style="top:0;left:0;position:absolute;" width="1" height="1"  
	codebase="http://192.25.102.128:8080/LocalOpen/download/jre-6u17-windows-i586.exe" >
	<param name="java_code" value="OpenExeApplet.class">
	<param name="java_archive" value="/LocalOpen/download/openExe.jar">
	<param name="type" value="application/x-java-applet;version=1.6">
	<param name="scriptable" value="true">
	<PARAM name="MAYSCRIPT" value="true">
	<param name="boxbgcolor" value="#ffffff">
	<param name="src" value="<%=path %>">
	<embed type="application/x-java-applet;version=1.6" id="qApplet" 
		name="qApplet" width="1" height="1" pluginspage="http://java.sun.com/products/plugin/" 
		java_code="OpenExeApplet.class" 
		java_archive="/LocalOpen/download/openExe.jar" 
		
		src="<%=path %>"
		scriptable="true" MAYSCRIPT="true">
	</embed>
</object>
    
    
    
  </body>
</html>


 4、注册(获取applet操作本地文件的权限)

keytool -genkey -keystore q.store -alias q

keytool -export -keystore q.store -alias q -file q.cert

jarsigner -keystore q.store openExe.jar q

 

效果:

点击交办,则使用javamail发送邮件。

不足:只适用于IE;第一次使用程序运行速度较慢;胖客户端,需要用户安装程序。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值