需要最新版的swt.jar才行http://www.eclipse.org/downloads/download.php?file=/eclipse/downloads/drops/R-3.3.2-200802211800/swt-3.3.2-win32-win32-x86.zipSimplebrowser.propertieserror.CouldNotLoadResources = Unable to load resources Back = Back BrowserNotCreated = Error - The Browser widget could not be instantiated. Please check the Browser widget is supported on this platform. Supported platforms and software requirements for the Browser widget are listed on the SWT FAQ web page. Forward = Forward Stop = Stop Refresh = Refresh Enter = Go Home = Home Startup = http://www.baidu.com
package com.xxx ;public class SimpleBrowser { private static ResourceBundle resourceBundle = ResourceBundle .getBundle("Simplebrowser"); private Composite parent; private Text locationBar; private Browser browser; private ToolBar toolbar; private Button enter; private ToolItem itemBack, itemForward; private Label status; private ProgressBar progressBar; public SimpleBrowser(Composite parent, boolean top) { this.parent = parent; try { browser = new Browser(parent, SWT.BORDER); } catch (SWTError e) { /* Browser widget could not be instantiated */ parent.setLayout(new FillLayout()); Label label = new Label(parent, SWT.CENTER | SWT.WRAP); label.setText(getResourceString("BrowserNotCreated")); parent.layout(true); return; } final Display display = parent.getDisplay(); browser.setData( "org.eclipse.swt.examples.browserexample.BrowserApplication", this); browser.addOpenWindowListener(new OpenWindowListener() { public void open(WindowEvent event) { Shell shell = new Shell(display); shell.setLayout(new FillLayout()); SimpleBrowser app = new SimpleBrowser(shell, false); event.browser = app.getBrowser(); } }); if (top) { browser.setUrl(getResourceString("Startup")); show(false, null, null, true, true, true, true); } else { browser.addVisibilityWindowListener(new VisibilityWindowListener() { public void hide(WindowEvent e) { } public void show(WindowEvent e) { Browser browser = (Browser) e.widget; SimpleBrowser app = (SimpleBrowser) browser .getData("org.eclipse.swt.examples.browserexample.BrowserApplication"); app.show(true, e.location, e.size, e.addressBar, e.menuBar, e.statusBar, e.toolBar); } }); browser.addCloseWindowListener(new CloseWindowListener() { public void close(WindowEvent event) { Browser browser = (Browser) event.widget; Shell shell = browser.getShell(); shell.close(); } }); } } /** * Gets a string from the resource bundle. We don't want to crash because of * a missing String. Returns the key if not found. */ static String getResourceString(String key) { try { return resourceBundle.getString(key); } catch (MissingResourceException e) { return key; } catch (NullPointerException e) { return "!" + key + "!"; } } public Browser getBrowser() { return browser; }
void show(boolean owned, Point location, Point size, boolean addressBar, boolean menuBar, boolean statusBar, boolean toolBar) { final Shell shell = browser.getShell(); if (owned) { if (location != null) shell.setLocation(location); if (size != null) shell.setSize(shell.computeSize(size.x, size.y)); } FormData data = null; if (toolBar) { toolbar = new ToolBar(parent, SWT.NONE); data = new FormData(); data.top = new FormAttachment(0, 5); toolbar.setLayoutData(data); itemBack = new ToolItem(toolbar, SWT.PUSH); itemBack.setText(getResourceString("Back")); itemForward = new ToolItem(toolbar, SWT.PUSH); itemForward.setText(getResourceString("Forward")); final ToolItem itemStop = new ToolItem(toolbar, SWT.PUSH); itemStop.setText(getResourceString("Stop")); final ToolItem itemRefresh = new ToolItem(toolbar, SWT.PUSH); itemRefresh.setText(getResourceString("Refresh")); final ToolItem itemHome = new ToolItem(toolbar, SWT.PUSH); itemHome.setText(getResourceString("Home")); itemBack.setEnabled(browser.isBackEnabled()); itemForward.setEnabled(browser.isForwardEnabled()); Listener listener = new Listener() { public void handleEvent(Event event) { ToolItem item = (ToolItem) event.widget; if (item == itemBack) browser.back(); else if (item == itemForward) browser.forward(); else if (item == itemStop) browser.stop(); else if (item == itemRefresh) browser.refresh(); else if (item == itemHome) browser.setUrl(getResourceString("Startup")); } }; itemBack.addListener(SWT.Selection, listener); itemForward.addListener(SWT.Selection, listener); itemStop.addListener(SWT.Selection, listener); itemRefresh.addListener(SWT.Selection, listener); itemHome.addListener(SWT.Selection, listener); enter = new Button(parent, SWT.None); enter.setText(getResourceString("Enter")); enter.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { browser.setUrl(locationBar.getText()); } }); data = new FormData(); data.width = 24; data.height = 20; data.top = new FormAttachment(0, 5); data.right = new FormAttachment(100, -5); enter.setLayoutData(data); } if (addressBar) { locationBar = new Text(parent, SWT.BORDER); data = new FormData(); if (toolbar != null) { data.top = new FormAttachment(toolbar, 0, SWT.TOP); data.left = new FormAttachment(toolbar, 5, SWT.RIGHT); data.right = new FormAttachment(enter, -5, SWT.DEFAULT); } else { data.top = new FormAttachment(0, 0); data.left = new FormAttachment(0, 0); data.right = new FormAttachment(100, 0); } locationBar.setLayoutData(data); locationBar.addListener(SWT.DefaultSelection, new Listener() { public void handleEvent(Event e) { browser.setUrl(locationBar.getText()); } }); } if (statusBar) { status = new Label(parent, SWT.NONE); progressBar = new ProgressBar(parent, SWT.NONE); data = new FormData(); data.left = new FormAttachment(0, 5); data.right = new FormAttachment(progressBar, 0, SWT.DEFAULT); data.bottom = new FormAttachment(100, -5); status.setLayoutData(data); data = new FormData(); data.right = new FormAttachment(100, -5); data.bottom = new FormAttachment(100, -5); progressBar.setLayoutData(data); browser.addStatusTextListener(new StatusTextListener() { public void changed(StatusTextEvent event) { status.setText(event.text); } }); } parent.setLayout(new FormLayout()); Control aboveBrowser = toolBar ? (Control) enter : (addressBar ? (Control) locationBar : null); data = new FormData(); data.left = new FormAttachment(0, 0); data.top = aboveBrowser != null ? new FormAttachment(aboveBrowser, 5, SWT.DEFAULT) : new FormAttachment(0, 0); data.right = new FormAttachment(100, 0); data.bottom = status != null ? new FormAttachment(status, -5, SWT.DEFAULT) : new FormAttachment(100, 0); browser.setLayoutData(data); if (statusBar || toolBar) { browser.addProgressListener(new ProgressListener() { public void changed(ProgressEvent event) { if (event.total == 0) return; int ratio = event.current * 100 / event.total; if (progressBar != null) progressBar.setSelection(ratio); } public void completed(ProgressEvent event) { if (progressBar != null) progressBar.setSelection(0); } }); } if (addressBar || statusBar || toolBar) { browser.addLocationListener(new LocationListener() { public void changed(LocationEvent event) { if (event.top && locationBar != null) locationBar.setText(event.location); } public void changing(LocationEvent event) { } }); } parent.layout(true); if (owned) shell.open(); } /** * Grabs input focus */ public void focus() { if (locationBar != null) locationBar.setFocus(); else if (browser != null) browser.setFocus(); else parent.setFocus(); } public static void main(String[] args) { Display display = new Display(); Shell shell = new Shell(display); shell.setLayout(new FillLayout()); new SimpleBrowser(shell, true); shell.open(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) display.sleep(); } display.dispose(); } }
javascript是无法跨域控制对象的,163的js读起来很恶心.另外这种东西无需写程序吧,用ie的自动完成就行了.function fLoginFormSubmit() { var fm = window.document.login163; var user = fm.username; user.value = fTrim( user.value); //Trim the input value. if( user.value =="") { window.alert("\请输入您的用户名 ?"); user.focus(); event.returnValue = false; return false; } if( fm.password.value.length =="") { window.alert("\请输入您的密码 ?"); fm.password.focus(); event.returnValue = false; return false; } var ati = user.value.indexOf( "@"); if( ati != -1 ){ user.value = user.value.substring(0, ati); } var secure = fm.remUser.checked?true:false; var url = fm.secure.checked ? "https://reg.163.com/logins.jsp" : "http://reg.163.com/login.jsp"; url += "?type=1&url=http://fm163.163.com/coremail/fcg/ntesdoor2?"; url += "lightweight%3D1%26verifycookie%3D1%26"; if(secure){ user.autocomplete="on"; }else{ user.autocomplete="off"; } fGetVersion(fm); fm.action = url + "language%3D-1%26style%3D" + fm.style.value; visitordata.setVals( [fm.username.value,fm.style.value,fm.secure.checked?1:0 ], fm.remUser.checked); visitordata.store(); if(!fm.remUser.checked){ setCookie('ntes_mail_noremember','true',true); } return true; }
在写网址的地方
输入
javascript:void(window.document.login163.username.value='test')
回车
然后输入
javascript:void(fLoginFormSubmit())
回车
学习
还是用robot类记录按键好呢?
Back = Back
BrowserNotCreated = Error - The Browser widget could not be instantiated. Please check the Browser widget is supported on this platform. Supported platforms and software requirements for the Browser widget are listed on the SWT FAQ web page.
Forward = Forward
Stop = Stop
Refresh = Refresh
Enter = Go
Home = Home
Startup = http://www.baidu.com
package com.xxx ;public class SimpleBrowser {
private static ResourceBundle resourceBundle = ResourceBundle
.getBundle("Simplebrowser"); private Composite parent; private Text locationBar; private Browser browser; private ToolBar toolbar; private Button enter; private ToolItem itemBack, itemForward; private Label status; private ProgressBar progressBar; public SimpleBrowser(Composite parent, boolean top) {
this.parent = parent;
try {
browser = new Browser(parent, SWT.BORDER);
} catch (SWTError e) {
/* Browser widget could not be instantiated */
parent.setLayout(new FillLayout());
Label label = new Label(parent, SWT.CENTER | SWT.WRAP);
label.setText(getResourceString("BrowserNotCreated"));
parent.layout(true);
return;
}
final Display display = parent.getDisplay();
browser.setData(
"org.eclipse.swt.examples.browserexample.BrowserApplication",
this);
browser.addOpenWindowListener(new OpenWindowListener() {
public void open(WindowEvent event) {
Shell shell = new Shell(display);
shell.setLayout(new FillLayout());
SimpleBrowser app = new SimpleBrowser(shell, false);
event.browser = app.getBrowser();
}
});
if (top) {
browser.setUrl(getResourceString("Startup"));
show(false, null, null, true, true, true, true);
} else {
browser.addVisibilityWindowListener(new VisibilityWindowListener() {
public void hide(WindowEvent e) {
} public void show(WindowEvent e) {
Browser browser = (Browser) e.widget;
SimpleBrowser app = (SimpleBrowser) browser
.getData("org.eclipse.swt.examples.browserexample.BrowserApplication");
app.show(true, e.location, e.size, e.addressBar, e.menuBar,
e.statusBar, e.toolBar);
}
});
browser.addCloseWindowListener(new CloseWindowListener() {
public void close(WindowEvent event) {
Browser browser = (Browser) event.widget;
Shell shell = browser.getShell();
shell.close();
}
});
}
} /**
* Gets a string from the resource bundle. We don't want to crash because of
* a missing String. Returns the key if not found.
*/
static String getResourceString(String key) {
try {
return resourceBundle.getString(key);
} catch (MissingResourceException e) {
return key;
} catch (NullPointerException e) {
return "!" + key + "!";
}
} public Browser getBrowser() {
return browser;
}
boolean menuBar, boolean statusBar, boolean toolBar) {
final Shell shell = browser.getShell();
if (owned) {
if (location != null)
shell.setLocation(location);
if (size != null)
shell.setSize(shell.computeSize(size.x, size.y));
}
FormData data = null;
if (toolBar) {
toolbar = new ToolBar(parent, SWT.NONE);
data = new FormData();
data.top = new FormAttachment(0, 5);
toolbar.setLayoutData(data);
itemBack = new ToolItem(toolbar, SWT.PUSH);
itemBack.setText(getResourceString("Back"));
itemForward = new ToolItem(toolbar, SWT.PUSH);
itemForward.setText(getResourceString("Forward"));
final ToolItem itemStop = new ToolItem(toolbar, SWT.PUSH);
itemStop.setText(getResourceString("Stop"));
final ToolItem itemRefresh = new ToolItem(toolbar, SWT.PUSH);
itemRefresh.setText(getResourceString("Refresh"));
final ToolItem itemHome = new ToolItem(toolbar, SWT.PUSH);
itemHome.setText(getResourceString("Home")); itemBack.setEnabled(browser.isBackEnabled());
itemForward.setEnabled(browser.isForwardEnabled());
Listener listener = new Listener() {
public void handleEvent(Event event) {
ToolItem item = (ToolItem) event.widget;
if (item == itemBack)
browser.back();
else if (item == itemForward)
browser.forward();
else if (item == itemStop)
browser.stop();
else if (item == itemRefresh)
browser.refresh();
else if (item == itemHome)
browser.setUrl(getResourceString("Startup"));
}
};
itemBack.addListener(SWT.Selection, listener);
itemForward.addListener(SWT.Selection, listener);
itemStop.addListener(SWT.Selection, listener);
itemRefresh.addListener(SWT.Selection, listener);
itemHome.addListener(SWT.Selection, listener); enter = new Button(parent, SWT.None);
enter.setText(getResourceString("Enter"));
enter.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
browser.setUrl(locationBar.getText());
}
});
data = new FormData();
data.width = 24;
data.height = 20;
data.top = new FormAttachment(0, 5);
data.right = new FormAttachment(100, -5);
enter.setLayoutData(data);
}
if (addressBar) {
locationBar = new Text(parent, SWT.BORDER);
data = new FormData();
if (toolbar != null) {
data.top = new FormAttachment(toolbar, 0, SWT.TOP);
data.left = new FormAttachment(toolbar, 5, SWT.RIGHT);
data.right = new FormAttachment(enter, -5, SWT.DEFAULT);
} else {
data.top = new FormAttachment(0, 0);
data.left = new FormAttachment(0, 0);
data.right = new FormAttachment(100, 0);
}
locationBar.setLayoutData(data);
locationBar.addListener(SWT.DefaultSelection, new Listener() {
public void handleEvent(Event e) {
browser.setUrl(locationBar.getText());
}
});
}
if (statusBar) {
status = new Label(parent, SWT.NONE);
progressBar = new ProgressBar(parent, SWT.NONE); data = new FormData();
data.left = new FormAttachment(0, 5);
data.right = new FormAttachment(progressBar, 0, SWT.DEFAULT);
data.bottom = new FormAttachment(100, -5);
status.setLayoutData(data); data = new FormData();
data.right = new FormAttachment(100, -5);
data.bottom = new FormAttachment(100, -5);
progressBar.setLayoutData(data); browser.addStatusTextListener(new StatusTextListener() {
public void changed(StatusTextEvent event) {
status.setText(event.text);
}
});
}
parent.setLayout(new FormLayout()); Control aboveBrowser = toolBar ? (Control) enter
: (addressBar ? (Control) locationBar : null);
data = new FormData();
data.left = new FormAttachment(0, 0);
data.top = aboveBrowser != null ? new FormAttachment(aboveBrowser, 5,
SWT.DEFAULT) : new FormAttachment(0, 0);
data.right = new FormAttachment(100, 0);
data.bottom = status != null ? new FormAttachment(status, -5,
SWT.DEFAULT) : new FormAttachment(100, 0);
browser.setLayoutData(data); if (statusBar || toolBar) {
browser.addProgressListener(new ProgressListener() {
public void changed(ProgressEvent event) {
if (event.total == 0)
return;
int ratio = event.current * 100 / event.total;
if (progressBar != null)
progressBar.setSelection(ratio);
} public void completed(ProgressEvent event) {
if (progressBar != null)
progressBar.setSelection(0);
}
});
}
if (addressBar || statusBar || toolBar) {
browser.addLocationListener(new LocationListener() {
public void changed(LocationEvent event) {
if (event.top && locationBar != null)
locationBar.setText(event.location);
} public void changing(LocationEvent event) {
}
});
}
parent.layout(true);
if (owned)
shell.open();
} /**
* Grabs input focus
*/
public void focus() {
if (locationBar != null)
locationBar.setFocus();
else if (browser != null)
browser.setFocus();
else
parent.setFocus();
} public static void main(String[] args) {
Display display = new Display();
Shell shell = new Shell(display);
shell.setLayout(new FillLayout());
new SimpleBrowser(shell, true);
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
display.dispose();
}
}
import java.util.ResourceBundle;import org.eclipse.swt.SWT;
import org.eclipse.swt.SWTError;
import org.eclipse.swt.browser.Browser;
import org.eclipse.swt.browser.CloseWindowListener;
import org.eclipse.swt.browser.LocationEvent;
import org.eclipse.swt.browser.LocationListener;
import org.eclipse.swt.browser.OpenWindowListener;
import org.eclipse.swt.browser.ProgressEvent;
import org.eclipse.swt.browser.ProgressListener;
import org.eclipse.swt.browser.StatusTextEvent;
import org.eclipse.swt.browser.StatusTextListener;
import org.eclipse.swt.browser.VisibilityWindowListener;
import org.eclipse.swt.browser.WindowEvent;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.layout.FormAttachment;
import org.eclipse.swt.layout.FormData;
import org.eclipse.swt.layout.FormLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.ProgressBar;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
import org.eclipse.swt.widgets.ToolBar;
import org.eclipse.swt.widgets.ToolItem;
你这个程序挺高深的,原本我只是想用robot去记录我按过的username和password,然后让程序自己去填而已,但苦于不知道怎么控制鼠标的指针去到要填username那个方框,因为robot类里面的方法要准确到屏幕的xy坐标,要是换了个不同尺寸的显示器就可能出问题了,我用jsk1.5api的中文版查了一下,给你看看,希望可以找到点头绪。******************************************************************************************************************************
方法摘要
BufferedImage createScreenCapture(Rectangle screenRect)
创建包含从屏幕中读取的像素的图像。
void delay(int ms)
睡眠指定的时间。
int getAutoDelay()
返回此 Robot 在生成一个事件后睡眠的毫秒数。
Color getPixelColor(int x, int y)
返回给定屏幕坐标处的像素颜色。
boolean isAutoWaitForIdle()
返回此 Robot 在生成一个事件后是否自动调用 waitForIdle。
void keyPress(int keycode)
按下给定的键。
void keyRelease(int keycode)
释放给定的键。
void mouseMove(int x, int y)
将鼠标指针移动到给定屏幕坐标。
void mousePress(int buttons)
按下一个或多个鼠标按钮。
void mouseRelease(int buttons)
释放一个或多个鼠标按钮。
void mouseWheel(int wheelAmt)
在配有滚轮的鼠标上旋转滚轮。
void setAutoDelay(int ms)
设置此 Robot 在生成一个事件后睡眠的毫秒数。
void setAutoWaitForIdle(boolean isOn)
设置此 Robot 在生成一个事件后是否自动调用 waitForIdle。
String toString()
返回此 Robot 的字符串表示形式。
void waitForIdle()
在处理完当前事件队列中的所有事件之前,一直等待。
******************************************************************************************************************************还有你可以解析一下你给的程序大概是干什么的吗?讲个主要过程就行了。谢谢……
问题是我不会怎么去弄到那个时候x,y的坐标。如果是一般的getpoint,你怎么知道取得的x,y就是我用鼠标点击了那个输入框时候的坐标呢?请你回答,谢谢