Tag: Java

北京十六方数据科技有限公司招聘java开发人员 年薪10W~15W

2012-02-03, Posted in 一起分享 | 我来说两句 | 查看全文>>

公司研发新产品,需要招聘两名java开发人员,公司以前从不加班,但目前公司研发新产品,在产品研发关键时候可能偶尔会有加班,加班一般安排在周末,占用一天时间,大家如有能力有兴趣,请发邮件到job1@16ds.com,这个招聘邮箱为研发部门专用
职位要求分别如下: 查看全文…

标签:

C++调用JVM.DLL来启动java程序

2011-09-02, Posted in Java | 我来说两句 | 查看全文>>

eclipse可以使用startup.jar来启动,但一般会用eclipse.exe来启动程序.这样系统进程也是eclipse.exe,而不是java.exe或者javaw.exe.这个eclipse.exe是使用C调用jvm.dll来启动java程序,最近的项目是基于Swing的java程序,所以也需要写一个exe来启动程序.
原来已经做了一个startup.exe,是使用NSIS来实现的,这里代码就不写出来了,因为他没有多在意义,原因有二:
第一,他在静默状态下执行,360安全卫士认为他是一个病毒,好像以前诺顿也误报过.这里BS一下360安全卫士
第二,他执行javaw来调用java程序,进程显示还是javaw,这样不好看.在进程里看到叫nortan.exe多好,呵呵

使用C++调用JVM.DLL来启动java程序,先来看看别人画的一个原理图: 查看全文…

标签:

使用java实现Windows Explorer左边的常见任务

2011-08-18, Posted in Java | 4 回复 | 查看全文>>

java实际可以做很多事情,只能你能想到的,理论上都可以实现出来,这文章介绍使用java实现Windows Explorer左边的常见任务.这文章原作者不是我,是WilliamChen,他写了很多美文章,我怕哪天他的文章都没有了,都删除了,所以把这些关键的图片,文字及代码存储起来.并在代码中保留原作者的名字.不做任何修改

下面的Enable Animation的JCheckBox可以设置是否使用动画效果。选择上折叠和展开就具有动画效果。
这个组件的类名是dyno.swing.beans.FolderPane。使用比较简单: 查看全文…

标签: ,

Swing中美化右键菜单JPopupMenu

2011-07-28, Posted in Java | 我来说两句 | 查看全文>>

先看看效果图:

右键菜单

右键菜单

我们首先从Swing的JPopupMenu组件进行扩展,让其接受一个图片,显示在左侧;或者接受一个字符串,动态生成图片后,在显示在左侧。为了避免准备图片的麻烦,我们就以动态生成内存图片为例,编写一个JImagedPopupMenu类。

JImagedPopupMenu在创建时可以接受一个字符串,生成一副内存图片BufferedImage。然后,我们需要覆盖 JComponent的getInsets方法,重新计算Inset的left值,将其在原数值基础上加上图片的宽度,然后返回: 查看全文…

标签: ,

java操作Windows进程

2011-07-19, Posted in Java, 人生百味 | 我来说两句 | 查看全文>>

java对平台的依赖性不太大,所以对系统的一些处理一直不太人性化,比如系统托盘到JDK6才支持,而对进程的处理,如Windows进程,虽然可以很好的操作,但用到这个功能并会的人可能不太多.这里写了一个用java对windows进程操作的例子.

这个类完了了列出所有的进程,杀死指定PID的进程,杀死指定进程名的进程等等,当然有getTaskList这个方法怎么取PID我相信你懂了,只要真正看懂这个类,估计一般需要都可以满足了.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Collection;
import java.util.Hashtable;
 
public class JavaWindowsTaskManager {
 
	/**
	 * 杀死一个进程
	 * @param task 进程号
	 *            
	 */
	public static void killTask(Integer pid) {
		try {
			// 取得任务列表
			Hashtable<Integer, WindowsTask> tasks = getTaskList();
			WindowsTask task = tasks.get(pid);
			if(task != null){
				Runtime.getRuntime().exec("tskill " + pid);
			}			
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
 
	/**
	 * 杀死指定名称的所有进程
	 * @param taskName
	 */
	public static void killTask(String taskName){
		try{
			Hashtable<Integer, WindowsTask> tasks = getTaskList();
			Collection<WindowsTask> allTasks = tasks.values();
			for(WindowsTask task: allTasks){
				if(task.getName().equals(taskName)){
					killTask(task.getPid());
				}
			}
 
		}catch (Exception e) {
			e.printStackTrace();
		}
	}
 
	/**
	 * 返回当前机器的所有进程
	 * 
	 * @return
	 */
	public static Hashtable<Integer, WindowsTask> getTaskList() {
		Hashtable<Integer, WindowsTask> tasks = new Hashtable<Integer, WindowsTask>();
		try {
			Process process = Runtime.getRuntime().exec("taskList");
			InputStreamReader in = new InputStreamReader(process
					.getInputStream(), "GBK");
			BufferedReader reader = new BufferedReader(in);
			String taskInfo = null;
			WindowsTask task = null;
			String tmp = null;
			while ((taskInfo = reader.readLine()) != null) {
				if (taskInfo.trim().length() > 0
						&& (taskInfo.contains("Services") || taskInfo
								.contains("Console"))) {
					System.out.println(taskInfo);
					task = new WindowsTask();
					tmp = taskInfo.substring(0, 26);
					task.setName(tmp.trim());
					tmp = taskInfo.substring(26, 35);
					task.setPid(Integer.valueOf(tmp.trim()));
 
					tmp = taskInfo.substring(35, 52);
					task.setSessionName(tmp.trim());
					tmp = taskInfo.substring(52, 64);
					task.setSessionId(Integer.valueOf(tmp.trim()));
					tmp = taskInfo.substring(64, taskInfo.lastIndexOf("K"));
					tmp = tmp.replaceAll(",", "");
					task.setMem(Long.valueOf(tmp.trim()));
 
					tasks.put(task.getPid(), task);
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return tasks;
	}
 
	/**
	 * 启动一个进程,传入的值可以是服务名,也可以是可执行文件的全路径名
	 * 
	 * @param task
	 */
	public static void startTask(String task) {
		try {
			Runtime.getRuntime().exec(task);
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
 
}
 
class WindowsTask {
	// 映像名称
	private String name;
	// PID
	private Integer pid;
	// 会话名
	private String sessionName;
	// 会话编号
	private Integer sessionId;
	// 内存使用
	private long mem;
 
	public String getName() {
		return name;
	}
 
	public void setName(String name) {
		this.name = name;
	}
 
	public Integer getPid() {
		return pid;
	}
 
	public void setPid(Integer pid) {
		this.pid = pid;
	}
 
	public String getSessionName() {
		return sessionName;
	}
 
	public void setSessionName(String sessionName) {
		this.sessionName = sessionName;
	}
 
	public Integer getSessionId() {
		return sessionId;
	}
 
	public void setSessionId(Integer sessionId) {
		this.sessionId = sessionId;
	}
 
	public long getMem() {
		return mem;
	}
 
	public void setMem(long mem) {
		this.mem = mem;
	}
}
标签: ,