您的位置:首页 > 其它

SWT(JFace)小制作:Bookmark

2009-06-25 10:11 363 查看
代码如下:

BookmarkOrganizer.java

package swt_jface.demo11;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.eclipse.swt.SWT;
import org.eclipse.swt.dnd.DND;
import org.eclipse.swt.dnd.DragSource;
import org.eclipse.swt.dnd.DragSourceAdapter;
import org.eclipse.swt.dnd.DragSourceEvent;
import org.eclipse.swt.dnd.DropTarget;
import org.eclipse.swt.dnd.DropTargetAdapter;
import org.eclipse.swt.dnd.DropTargetEvent;
import org.eclipse.swt.dnd.Transfer;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.FileDialog;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.ToolBar;
import org.eclipse.swt.widgets.ToolItem;
import org.eclipse.swt.widgets.Tree;
import org.eclipse.swt.widgets.TreeItem;
class Bookmark {
public String name;
public String href;
public String addDate;
public String lastVisited;
public String lastModified;
}
public class BookmarkOrganizer {

private static String folderLinePrefix = "<DT><H3 FOLDED";
private static String urlLinePrefix = "<DT><A HREF";
private static Pattern folderPattern = Pattern.compile("/"(//d+)/">(.*)<");
private static Pattern urlPattern = Pattern.compile("/"(.*)/".*/"(.*)/".*/"(.*)/".*/"(.*)/">(.*)<");
private static String KEY_ADD_DATE = "ADD_DATE";
//private static String KEY_HREF = "HREF";
//private static String KEY_LAST_VISITED = "LAST_VISITED";
//private static String KEY_LAST_MODIFIED = "LAST_MODIFIED";
Display display = new Display();
Shell shell = new Shell(display);
Tree tree;
Label label;
TreeItem rootItem;
Image iconRoot = new Image(display, "C:/icons/icon.gif");
Image iconFolder = new Image(display, "C:/icons/folder.gif");
Image iconURL = new Image(display, "C:/icons/file.gif");
TreeItem dragSourceItem;
public BookmarkOrganizer() {

shell.setText("Bookmark organizer");
shell.setLayout(new GridLayout(1, true));
ToolBar toolBar = new ToolBar(shell, SWT.FLAT);
ToolItem itemOpen = new ToolItem(toolBar, SWT.PUSH);
itemOpen.setText("Load");
itemOpen.addListener(SWT.Selection, new Listener() {
public void handleEvent(Event event) {
FileDialog dialog = new FileDialog(shell, SWT.OPEN);
String file = dialog.open();
if (file != null) {
TreeItem[] items = rootItem.getItems();
for (int i = 0; i < items.length; i++)
items[i].dispose();
loadBookmark(new File(file), rootItem);
setStatus("Bookmarks loaded successfully");
}
}
});
ToolItem itemSave = new ToolItem(toolBar, SWT.PUSH);
itemSave.setText("Save as");
itemSave.addListener(SWT.Selection, new Listener() {
public void handleEvent(Event event) {
FileDialog dialog = new FileDialog(shell, SWT.SAVE);
String file = dialog.open();
if (file != null) {
try {
BufferedWriter writer =
new BufferedWriter(new FileWriter(file));
saveBookmark(writer, rootItem);
writer.close();
setStatus(
"Bookmarks saved successfully to file: " + file);
} catch (IOException e) {
e.printStackTrace();
}
}
}
});
tree = new Tree(shell, SWT.BORDER);
tree.setLayoutData(new GridData(GridData.FILL_BOTH));
rootItem = new TreeItem(tree, SWT.NULL);
rootItem.setText("BOOKMARKS");
rootItem.setImage(iconRoot);
label = new Label(shell, SWT.BORDER);
label.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
final DragSource dragSource =
new DragSource(tree, DND.DROP_MOVE | DND.DROP_COPY | DND.DROP_LINK);
dragSource.setTransfer(
new Transfer[] { BookmarkTransfer.getInstance()});
dragSource.addDragListener(new DragSourceAdapter() {
public void dragStart(DragSourceEvent event) {
TreeItem[] selection = tree.getSelection();
if (selection.length > 0 && selection[0].getData() != null) {
event.doit = true;
dragSourceItem = selection[0];
} else {
event.doit = false;
}
};
public void dragSetData(DragSourceEvent event) {
if (BookmarkTransfer
.getInstance()
.isSupportedType(event.dataType))
event.data = dragSourceItem.getData();
}
public void dragFinished(DragSourceEvent event) {
if (event.detail == DND.DROP_MOVE)
dragSourceItem.dispose();
dragSourceItem = null;
}
});
final DropTarget dropTarget =
new DropTarget(tree, DND.DROP_MOVE | DND.DROP_COPY | DND.DROP_LINK);
dropTarget.setTransfer(
new Transfer[] { BookmarkTransfer.getInstance()});
dropTarget.addDropListener(new DropTargetAdapter() {
public void dragOver(DropTargetEvent event) {
event.feedback =
DND.FEEDBACK_EXPAND
| DND.FEEDBACK_SCROLL
| DND.FEEDBACK_SELECT;
}
public void dropAccept(DropTargetEvent event) {
if (event.item == null
|| ((TreeItem) event.item).getData() != null)
event.detail = DND.DROP_NONE;
}
public void drop(DropTargetEvent event) {
try {
if (event.data == null) {
event.detail = DND.DROP_NONE;
return;
}
TreeItem item = new TreeItem((TreeItem) event.item, SWT.NULL);
Bookmark bookmark = (Bookmark) event.data;
item.setText(bookmark.name);
item.setImage(iconURL);
item.setData(bookmark);
} catch (RuntimeException e) {
e.printStackTrace();
}
}
});
tree.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
TreeItem item = (TreeItem) e.item;
Bookmark bookmark = (Bookmark) item.getData();
if (bookmark != null) {
setStatus(bookmark.href);
} else if (item.getData(KEY_ADD_DATE) != null) {
setStatus("Folder: " + item.getText());
}
}
});
shell.setSize(400, 300);
shell.open();
loadBookmark(new File("C:/icons/mybookmark.htm"), rootItem);
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
display.dispose();
}
private void saveBookmark(BufferedWriter writer, TreeItem item)
throws IOException {
if (item.getData() == null
&& item.getData(KEY_ADD_DATE) == null) {
writer.write(
"<!DOCTYPE NETSCAPE-Bookmark-file-1>/n"
+ "<!-- This is an automatically generated file./n"
+ "It will be read and overwritten./n"
+ "Do Not Edit! -->/n"
+ "<TITLE>Bookmarks</TITLE>/n"
+ "<H1>Bookmarks</H1>/n"
+ "<DL><p>/n");
TreeItem[] items = item.getItems();
for (int i = 0; i < items.length; i++)
saveBookmark(writer, items[i]);
writer.write("</DL><p>/n");
} else if (item.getData() == null) {
writer.write(
"/t<DT><H3 FOLDED ADD_DATE=/""
+ item.getData(KEY_ADD_DATE)
+ "/">"
+ item.getText()
+ "</H3>/n");
writer.write("/t<DL><p>/n");
TreeItem[] items = item.getItems();
for (int i = 0; i < items.length; i++)
saveBookmark(writer, items[i]);
writer.write("/t</DL><p>/n");
} else {
Bookmark bookmark = (Bookmark) item.getData();
writer.write(
"/t/t<DT><A HREF="/" mce_HREF="/"""
+ bookmark.href
+ "/" ADD_DATE=/""
+ bookmark.addDate
+ "/" LAST_VISIT=/""
+ bookmark.lastVisited
+ "/" LAST_MODIFIED=/" +"
+ bookmark.lastModified
+ "/">"
+ bookmark.name
+ "</A>/n");
}
}
private void loadBookmark(File file, TreeItem rootItem) {
TreeItem parent = rootItem;
try {
BufferedReader reader = new BufferedReader(new FileReader(file));
String line = null;
while ((line = reader.readLine()) != null) {
line = line.trim();
if (line.startsWith(folderLinePrefix)) {
Matcher matcher = folderPattern.matcher(line);
if (matcher.find()) {
String addDate = matcher.group(1);
String name = matcher.group(2);
TreeItem item = new TreeItem(parent, SWT.NULL);
item.setText(name);
item.setData(KEY_ADD_DATE, addDate);
item.setImage(iconFolder);
parent = item;
}
} else if (line.startsWith(urlLinePrefix)) {
Matcher matcher = urlPattern.matcher(line);
if (matcher.find()) {
Bookmark bookmark = new Bookmark();
bookmark.href = matcher.group(1);
bookmark.addDate = matcher.group(2);
bookmark.lastVisited = matcher.group(3);
bookmark.lastModified = matcher.group(4);
bookmark.name = matcher.group(5);
TreeItem item = new TreeItem(parent, SWT.NULL);
item.setText(bookmark.name);
item.setData(bookmark);
item.setImage(iconURL);
}
} else if (line.equals("</DL><p>")) { // folder boundry.
parent = parent.getParentItem();
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
private void setStatus(String message) {
label.setText(message);
}
public static void main(String[] args) {
new BookmarkOrganizer();
}
}


BookmarkTransfer.java

package swt_jface.demo11;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import org.eclipse.swt.dnd.ByteArrayTransfer;
import org.eclipse.swt.dnd.TransferData;
public class BookmarkTransfer extends ByteArrayTransfer {
private static final String BOOKMARK_TRANSFER_NAME = "BOOKMARK";
private static final int BOOKMARK_TRANSFER_ID =
registerType(BOOKMARK_TRANSFER_NAME);
private static final BookmarkTransfer instance = new BookmarkTransfer();
public static BookmarkTransfer getInstance() {
return instance;
}
protected int[] getTypeIds() {
return new int[] { BOOKMARK_TRANSFER_ID };
}
protected String[] getTypeNames() {
return new String[] { BOOKMARK_TRANSFER_NAME };
}
protected void javaToNative(Object object, TransferData transferData) {
if (object == null || !(object instanceof Bookmark)) return;
Bookmark bookmark = (Bookmark) object;
if (isSupportedType(transferData)) {
try {
ByteArrayOutputStream stream = new ByteArrayOutputStream();
DataOutputStream out = new DataOutputStream(stream);
out.writeUTF(bookmark.name);
out.writeUTF(bookmark.href);
out.writeUTF(bookmark.addDate);
out.writeUTF(bookmark.lastVisited);
out.writeUTF(bookmark.lastModified);
out.close();
super.javaToNative(stream.toByteArray(), transferData);
} catch (IOException e) {
e.printStackTrace();
}
}
}
protected Object nativeToJava(TransferData transferData) {
if (isSupportedType(transferData)) {
byte[] raw = (byte[]) super.nativeToJava(transferData);
if (raw == null) return null;
Bookmark bookmark = new Bookmark();
try {
ByteArrayInputStream stream = new ByteArrayInputStream(raw);
DataInputStream in = new DataInputStream(stream);
bookmark.name = in.readUTF();
bookmark.href = in.readUTF();
bookmark.addDate = in.readUTF();
bookmark.lastVisited = in.readUTF();
bookmark.lastModified = in.readUTF();
in.close();
} catch (IOException e) {
e.printStackTrace();
return null;
}
return bookmark;
} else {
return null;
}
}
}


mybookmark.htm

<!DOCTYPE NETSCAPE-Bookmark-file-1>
<!-- This is an automatically generated file.
It will be read and overwritten.
Do Not Edit! -->
<TITLE>Bookmarks</TITLE>
<H1>Bookmarks</H1>
<DL><p>
<DT><H3 FOLDED ADD_DATE="1045476466">c++</H3>
<DL><p>
<DT><H3 FOLDED ADD_DATE="1046501502">Borland</H3>
<DL><p>
<DT><A HREF="http://www.hobbypages.net/" mce_HREF="http://www.hobbypages.net/" ADD_DATE="1047352392" LAST_VISIT="1083070035" LAST_MODIFIED="1047352393">C++ Builder Hobbypages - Home Page</A>
<DT><A HREF="http://www.ccrun.com/" mce_HREF="http://www.ccrun.com/" ADD_DATE="1046852543" LAST_VISIT="1083070035" LAST_MODIFIED="1046852544">C++ Builder ??</A>
<DT><A HREF="http://www.programmersheaven.com/zone3/mh187.htm" mce_HREF="http://www.programmersheaven.com/zone3/mh187.htm" ADD_DATE="1047352196" LAST_VISIT="1083070035" LAST_MODIFIED="1047352196">Programmers Heaven - C - C++ Zone - Components</A>
<DT><A HREF="http://www.cnread.net/cnread1/dnwl/cxsj/c/bcbu/toc.htm" mce_HREF="http://www.cnread.net/cnread1/dnwl/cxsj/c/bcbu/toc.htm" ADD_DATE="1046501504" LAST_VISIT="1083070035" LAST_MODIFIED="1046501504">TOC -- Charlie Calvert's C++ Builder Unleashed</A>
<DT><A HREF="http://www.cnread.net/cnread1/dnwl/cxsj/c/bcb/index.html" mce_HREF="http://www.cnread.net/cnread1/dnwl/cxsj/c/bcb/index.html" ADD_DATE="1046501522" LAST_VISIT="1083070035" LAST_MODIFIED="1046501522">????????--Borland C++ Builder(??)</A>
</DL><p>
<DT><H3 FOLDED ADD_DATE="1045886171">Library</H3>
<DL><p>
<DT><H3 FOLDED ADD_DATE="1047352053">PDF</H3>
<DL><p>
<DT><A HREF="http://www.fastio.com/" mce_HREF="http://www.fastio.com/" ADD_DATE="1047352072" LAST_VISIT="1083070035" LAST_MODIFIED="1047352072">ClibPDF - FastIO Systems Home Page</A>
<DT><A HREF="http://www.fastio.com/" mce_HREF="http://www.fastio.com/" ADD_DATE="1047352055" LAST_VISIT="1083070035" LAST_MODIFIED="1047352056">FastIO Systems Home Page</A>
</DL><p>
<DT><A HREF="http://www.boost.org/" mce_HREF="http://www.boost.org/" ADD_DATE="1045892008" LAST_VISIT="1083070035" LAST_MODIFIED="1045892009">Boost C++ Libraries</A>
<DT><A HREF="http://www.gnu.org/software/commonc++/#TOCadditional" mce_HREF="http://www.gnu.org/software/commonc++/#TOCadditional" ADD_DATE="1045886173" LAST_VISIT="1083070035" LAST_MODIFIED="1045886174">GNU Common C++ - GNU Package - Open Source Telecom (OST)</A>
<DT><A HREF="http://osalp.sourceforge.net/" mce_HREF="http://osalp.sourceforge.net/" ADD_DATE="1045890264" LAST_VISIT="1083070035" LAST_MODIFIED="1045890266">Open Source Audio Library Project</A>
<DT><A HREF="http://www.oonumerics.org/oon/#libraries" mce_HREF="http://www.oonumerics.org/oon/#libraries" ADD_DATE="1045890219" LAST_VISIT="1083070035" LAST_MODIFIED="1045890220">The Object-Oriented Numerics Page</A>
<DT><A HREF="http://www.buddydog.org/C++Builder/c++builder.html" mce_HREF="http://www.buddydog.org/C++Builder/c++builder.html" ADD_DATE="1047260400" LAST_VISIT="1083070035" LAST_MODIFIED="1047260401">Working with C++Builder</A>
</DL><p>
<DT><H3 FOLDED ADD_DATE="1047479244">Winsock</H3>
<DL><p>
<DT><A HREF="http://www.cic.tsinghua.edu.cn/sys/book2/" mce_HREF="http://www.cic.tsinghua.edu.cn/sys/book2/" ADD_DATE="1047479245" LAST_VISIT="1083070035" LAST_MODIFIED="1047479254">Untitled Document</A>
</DL><p>
<DT><A HREF="http://homelf.kimo.com.tw/bruce0829/" mce_HREF="http://homelf.kimo.com.tw/bruce0829/" ADD_DATE="1045644670" LAST_VISIT="1083070035" LAST_MODIFIED="1045644670">C++ Builder ????</A>
<DT><A HREF="http://cpp.ittoolbox.com/documents/document.asp?i=1912" mce_HREF="http://cpp.ittoolbox.com/documents/document.asp?i=1912" ADD_DATE="1045644510" LAST_VISIT="1083070035" LAST_MODIFIED="1045644511">C++ Knowledge Base</A>
<DT><A HREF="http://www.cplusplus.com/doc/tutorial/" mce_HREF="http://www.cplusplus.com/doc/tutorial/" ADD_DATE="1045644347" LAST_VISIT="1083070035" LAST_MODIFIED="1045644348">C++ language tutorial</A>
<DT><A HREF="http://www.cs.wustl.edu/~schmidt/C++/" mce_HREF="http://www.cs.wustl.edu/~schmidt/C++/" ADD_DATE="1045642729" LAST_VISIT="1083070035" LAST_MODIFIED="1045642729">C++ Programming Language Tutorials</A>
<DT><A HREF="http://salsa.cit.cornell.edu/cs213-sp01/lectures.html" mce_HREF="http://salsa.cit.cornell.edu/cs213-sp01/lectures.html" ADD_DATE="1045643165" LAST_VISIT="1083070035" LAST_MODIFIED="1045643166">CS 213 Notes from Lectures - C++ Programing</A>
<DT><A HREF="http://www.dinkumware.com/htm_cpl/index.html" mce_HREF="http://www.dinkumware.com/htm_cpl/index.html" ADD_DATE="1045642810" LAST_VISIT="1083070035" LAST_MODIFIED="1045642813">Dinkum C++ Library</A>
<DT><A HREF="http://www.gnu.org/software/gcc/gcc.html" mce_HREF="http://www.gnu.org/software/gcc/gcc.html" ADD_DATE="1045476468" LAST_VISIT="1083070035" LAST_MODIFIED="1045476618">GCC Home Page - GNU Project - Free Software Foundation (FSF)</A>
<DT><A HREF="http://www.programmersheaven.com/zone3/articles/article168.htm" mce_HREF="http://www.programmersheaven.com/zone3/articles/article168.htm" ADD_DATE="1046421401" LAST_VISIT="1083070035" LAST_MODIFIED="1046421403">Programmers Heaven - C - C++ Zone - Sourcecode Articles</A>
</DL><p>
<DT><H3 FOLDED ADD_DATE="1047199807">Database</H3>
<DL><p>
<DT><A HREF="http://firebird.sourceforge.net/index.php?op=guide" mce_HREF="http://firebird.sourceforge.net/index.php?op=guide" ADD_DATE="1047199809" LAST_VISIT="1083069989" LAST_MODIFIED="1047199810">Firebird - Relational Database for the New Millennium</A>
</DL><p>
<DT><H3 FOLDED ADD_DATE="1047025683">Email</H3>
<DL><p>
<DT><A HREF="http://james.apache.org/index.html" mce_HREF="http://james.apache.org/index.html" ADD_DATE="1047025685" LAST_VISIT="1083070035" LAST_MODIFIED="1047025686">Apache James - Overview - Java Mail and News server, SMTP POP3 NNTP</A>
<DT><A HREF="http://www.codeproject.com/internet/DNSQuery.asp" mce_HREF="http://www.codeproject.com/internet/DNSQuery.asp" ADD_DATE="1047038468" LAST_VISIT="1083070035" LAST_MODIFIED="1047038472">The Code Project - Getting an MX record (the easy way) - Internet & Network</A>
</DL><p>
<DT><H3 FOLDED ADD_DATE="1046588212">Entertainment</H3>
<DL><p>
<DT><H3 FOLDED ADD_DATE="1046588215">Music</H3>
<DL><p>
<DT><A HREF="http://app.tvb.com/music/lyrics/lyrics.asp" mce_HREF="http://app.tvb.com/music/lyrics/lyrics.asp" ADD_DATE="1046588216" LAST_VISIT="1083070035" LAST_MODIFIED="1046588217">MusicChannelLyricsGallery ???</A>
</DL><p>
</DL><p>
<DT><H3 FOLDED ADD_DATE="1044516219">Java</H3>
<DL><p>
<DT><H3 FOLDED ADD_DATE="1047199797">Database</H3>
<DL><p>
</DL><p>
<DT><H3 FOLDED ADD_DATE="1044516223">J2ME</H3>
<DL><p>
<DT><A HREF="file:///C:/WTK104/docs/api/index.html" mce_HREF="file:///C:/WTK104/docs/api/index.html" ADD_DATE="1045054100" LAST_VISIT="1083070035" LAST_MODIFIED="1045054100">J2ME</A>
<DT><A HREF="http://java.sun.com/products/j2mewtoolkit/" mce_HREF="http://java.sun.com/products/j2mewtoolkit/" ADD_DATE="1044516259" LAST_VISIT="1083070035" LAST_MODIFIED="1044516260">Java(TM) 2 Platform Micro Edition, Wireless Toolkit</A>
<DT><A HREF="http://www.javamasters.org/" mce_HREF="http://www.javamasters.org/" ADD_DATE="1044516226" LAST_VISIT="1083070035" LAST_MODIFIED="1044516227">JavaMasters - Tools & Specs</A>
</DL><p>
<DT><A HREF="http://javaalmanac.com/egs/index.html" mce_HREF="http://javaalmanac.com/egs/index.html" ADD_DATE="1045818650" LAST_VISIT="1083069965" LAST_MODIFIED="1045818651">Examples from The Java Developers Almanac 1.4</A>
<DT><A HREF="http://java.sun.com/docs/books/jls/second_edition/html/jTOC.doc.html" mce_HREF="http://java.sun.com/docs/books/jls/second_edition/html/jTOC.doc.html" ADD_DATE="1045048972" LAST_VISIT="1083069965" LAST_MODIFIED="1045048972">Java Specification</A>
<DT><A HREF="file:///F:/jdk/docs/api/index.html" mce_HREF="file:///F:/jdk/docs/api/index.html" ADD_DATE="1044418573" LAST_VISIT="1083069965" LAST_MODIFIED="1044418573">Overview (Java 2 Platform SE v1.4.0)</A>
</DL><p>
<DT><H3 FOLDED ADD_DATE="1044255994">Latex</H3>
<DL><p>
<DT><H3 FOLDED ADD_DATE="1045392982">Tex</H3>
<DL><p>
</DL><p>
<DT><A HREF="http://www.nag.co.uk/projects/OpenMath.html" mce_HREF="http://www.nag.co.uk/projects/OpenMath.html" ADD_DATE="1044255996" LAST_VISIT="1083069962" LAST_MODIFIED="1044255996">The OpenMath Esprit Project</A>
</DL><p>
<DT><H3 FOLDED ADD_DATE="1043926630">Links</H3>
<DL><p>
<DT><A HREF="http://www.microsoft.com/isapi/redir.dll?prd=ie&pver=6&ar=CLinks" mce_HREF="http://www.microsoft.com/isapi/redir.dll?prd=ie&pver=6&ar=CLinks" ADD_DATE="1043926630" LAST_VISIT="1083069959" LAST_MODIFIED="1045286381">Customize Links</A>
<DT><A HREF="http://www.microsoft.com/isapi/redir.dll?prd=ie&ar=hotmail" mce_HREF="http://www.microsoft.com/isapi/redir.dll?prd=ie&ar=hotmail" ADD_DATE="1043926630" LAST_VISIT="1083069959" LAST_MODIFIED="1045286381">Free Hotmail</A>
<DT><A HREF="http://www.microsoft.com/isapi/redir.dll?prd=ie&ar=windowsmedia" mce_HREF="http://www.microsoft.com/isapi/redir.dll?prd=ie&ar=windowsmedia" ADD_DATE="1043926630" LAST_VISIT="1083069959" LAST_MODIFIED="1045286381">Windows Media</A>
<DT><A HREF="http://www.microsoft.com/isapi/redir.dll?prd=ie&ar=windows" mce_HREF="http://www.microsoft.com/isapi/redir.dll?prd=ie&ar=windows" ADD_DATE="1043926630" LAST_VISIT="1083069959" LAST_MODIFIED="1045286381">Windows</A>
</DL><p>
<DT><A HREF="http://61.177.20.218:88/music/movie1/" mce_HREF="http://61.177.20.218:88/music/movie1/" ADD_DATE="1051443185" LAST_VISIT="1083069951" LAST_MODIFIED="1051443189">Index of -music-movie1-</A>
<DT><A HREF="http://www.msdn.microsoft.com/" mce_HREF="http://www.msdn.microsoft.com/" ADD_DATE="1047618221" LAST_VISIT="1083069951" LAST_MODIFIED="1047618222">MSDN Home</A>
</DL><p>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: