社区
一般软件使用
帖子详情
如何安装以及使用 MS Office Server Extension?
onjun
2000-12-20 03:05:00
谁熟悉 MS OSE,或者 《60 分钟 Intranet 工具包》?
帮忙!!!
我要利用 MS OSE 创建工作组内部网站,没有成功。
大侠帮我!!!
help me
...全文
867
2
打赏
收藏
如何安装以及使用 MS Office Server Extension?
谁熟悉 MS OSE,或者 《60 分钟 Intranet 工具包》? 帮忙!!! 我要利用 MS OSE 创建工作组内部网站,没有成功。 大侠帮我!!! help me
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
onjun
2001-01-08
打赏
举报
回复
发现新问题:
协作者无法订阅文件夹!!!
有请高手快来解决,一定给分!
onjun
2001-01-03
打赏
举报
回复
我自己已经测试通过了
1、install nt4 and Option Pack
2、install ose
3、install 60 minutes intranet tookit
4、set exchange server and outlook2000
5、set e-mail address and smtp
6、install ie5 and office2000(include web 讨论、订阅)
ok
Java邮件开发Fundamentals of the JavaMail API
Fundamentals of the JavaMail API Presented by developerWorks, your source for great tutorials ibm.com/developerWorks Table of Contents If you're viewing this document online, you can click any of the topics below to link directly to that sect
ion
. 1. Tutorial tips 2 2. Introducing the JavaMail API 3 3. Reviewing related protocols 4 4. Installing JavaMail 6 5. Reviewing the core classes 8 6. Using the JavaMail API 13 7. Searching with SearchTerm 21 8. Exercises 22 9. Wrapup 32 Fundamentals of the JavaMail API Page 1 Presented by developerWorks, your source for great tutorials ibm.com/developerWorks Sect
ion
1. Tutorial tips Should I take this tutorial? Looking to incorporate mail facilities into your platform-independent Java solut
ion
s? Look no further than the JavaMail API, which offers a protocol-independent model for working with IMAP, POP, SMTP, MIME, and all those other Internet-related messaging protocols. With the help of the JavaBeans Activat
ion
Framework (JAF), your applicat
ion
s can now be mail-enabled through the JavaMail API. Concepts After completing this module you will understand the: * Basics of the Internet mail protocols SMTP, POP3, IMAP, and MIME * Architecture of the JavaMail framework * Connect
ion
s between the JavaMail API and the JavaBeans Activat
ion
Framework Objectives By the end of this module you will be able to: * Send and read mail using the JavaMail API * Deal with sending and receiving attachments * Work with HTML messages * Use search terms to search for messages Prerequisites Instruct
ion
s on how to download and install the JavaMail API are contained in the course. In addit
ion
, you will need a development environment such as the JDK 1.1.6+ or the Java 2 Platform, Standard Edit
ion
(J2SE) 1.2.x or 1.3.x. A general familiarity with object-oriented programming concepts and the Java programming language is necessary. The Java language essentials tutorial can help. copyright 1996-2000 Magelang Institute dba jGuru Contact jGuru has been dedicated to promoting the growth of the Java technology community through evangelism, educat
ion
, and software since 1995. You can find out more about their activities, including their huge collect
ion
of FAQs at jGuru.com . To send feedback to jGuru about this course, send mail to producer@jguru.com . Course author: Formerly with jGuru.com , John Zukowski does strategic Java consulting for JZ Ventures, Inc. His latest book is titled Java Collect
ion
s from Apress . Fundamentals of the JavaMail API Page 2 Presented by developerWorks, your source for great tutorials ibm.com/developerWorks Sect
ion
2. Introducing the JavaMail API What is the JavaMail API? The JavaMail API is an opt
ion
al package (standard
extens
ion
) for reading, composing, and sending electronic messages. You use the package to create Mail User Agent (MUA) type programs, similar to Eudora, pine, and Microsoft Outlook. The API's main purpose is not for transporting, delivering, and forwarding messages; this is the purview of applicat
ion
s such as sendmail and other Mail Transfer Agent (MTA) type programs. MUA-type programs let users read and write e-mail, whereas MUAs rely on MTAs to handle the actual delivery. The JavaMail API is designed to provide protocol-independent access for sending and receiving messages by dividing the API into two parts: * The first part of the API is the focus of this course --basically, how to send and receive messages independent of the provider/protocol. * The second part speaks the protocol-specific languages, like SMTP, POP, IMAP, and NNTP. With the JavaMail API, in order to communicate with a
server
, you need a provider for a protocol. The creat
ion
of protocol-specific providers is not covered in this course because Sun provides a sufficient set for free. Fundamentals of the JavaMail API Page 3 Presented by developerWorks, your source for great tutorials ibm.com/developerWorks Sect
ion
3. Reviewing related protocols Introduct
ion
Before looking into the JavaMail API specifics, let's step back and take a look at the protocols used with the API. There are basically four that you'll come to know and love: * SMTP * POP * IMAP * MIME You will also run across NNTP and some others. Understanding the basics of all the protocols will help you understand how to use the JavaMail API. While the API is designed to be protocol agnostic, you can't overcome the limitat
ion
s of the underlying protocols. If a capability isn't supported by a chosen protocol, the JavaMail API doesn't magically add the capability on top of it. (As you'll soon see, this can be a problem when working with POP.) SMTP The Simple Mail Transfer Protocol (SMTP) is defined by RFC 821 . It defines the mechanism for delivery of e-mail. In the context of the JavaMail API, your JavaMail-based program will communicate with your company or Internet Service Provider's (ISP's) SMTP
server
. That SMTP
server
will relay the message on to the SMTP
server
of the recipient(s) to eventually be acquired by the user(s) through POP or IMAP. This does not require your SMTP
server
to be an open relay, as authenticat
ion
is supported, but it is your responsibility to ensure the SMTP
server
is configured properly. There is nothing in the JavaMail API for tasks like configuring a
server
to relay messages or to add and remove e-mail accounts. POP POP stands for Post
Office
Protocol. Currently in vers
ion
3, also known as POP3, RFC 1939 defines this protocol. POP is the mechanism most people on the Internet use to get their mail. It defines support for a single mailbox for each user. That is all it does, and that is also the source of a lot of confus
ion
. Much of what people are familiar with when using POP, like the ability to see how many new mail messages they have, are not supported by POP at all. These capabilities are built into programs like Eudora or Microsoft Outlook, which remember things like the last mail received and calculate how many are new for you. So, when using the JavaMail API, if you want this type of informat
ion
, you have to calculate it yourself. IMAP IMAP is a more advanced protocol for receiving messages. Defined in RFC 2060 , IMAP stands for Internet Message Access Protocol, and is currently in vers
ion
4, also known as IMAP4. When using IMAP, your mail
server
must support the protocol. You can't just change your program to use IMAP instead of POP and expect everything in IMAP to be supported. Assuming your mail
server
supports IMAP, your JavaMail-based program can take Fundamentals of the JavaMail API Page 4 Presented by developerWorks, your source for great tutorials ibm.com/developerWorks advantage of users having multiple folders on the
server
and these folders can be shared by multiple users. Due to the more advanced capabilities, you might think IMAP would be used by everyone. It isn't. It places a much heavier burden on the mail
server
, requiring the
server
to receive the new messages, deliver them to users when requested, and maintain them in multiple folders for each user. While this does centralize backups, as users' long-term mail folders get larger and larger, everyone suffers when disk space is exhausted. With POP, saved messages get offloaded from the mail
server
. MIME MIME stands for Multipurpose Internet Mail
Extens
ion
s. It is not a mail transfer protocol. Instead, it defines the content of what is transferred: the format of the messages, attachments, and so on. There are many different documents that take effect here: RFC 822 , RFC 2045 , RFC 2046 , and RFC 2047 . As a user of the JavaMail API, you usually don't need to worry about these formats. However, these formats do exist and are used by your programs. NNTP and others Because of the split of the JavaMail API between provider and everything else, you can easily add support for addit
ion
al protocols. Sun maintains a list of third-party providers that take advantage of protocols for which Sun does not provide out-of-the-box support. You'll find support for NNTP (Network News Transport Protocol) [newsgroups], S/MIME (Secure Multipurpose Internet Mail
Extens
ion
s), and more. Fundamentals of the JavaMail API Page 5 Presented by developerWorks, your source for great tutorials ibm.com/developerWorks Sect
ion
4. Installing JavaMail Introduct
ion
There are two vers
ion
s of the JavaMail API commonly used today: 1.2 and 1.1.3. All the examples in this course will work with both. While 1.2 is the latest, 1.1.3 is the vers
ion
included with the 1.2.1 vers
ion
of the Java 2 Platform, Enterprise Edit
ion
(J2EE), so it is still commonly used. The vers
ion
of the JavaMail API you want to use affects what you download and install. All will work with JDK 1.1.6+, Java 2 Platform, Standard Edit
ion
(J2SE) vers
ion
1.2.x, and J2SE vers
ion
1.3.x. Note: After installing Sun's JavaMail implementat
ion
, you can find many example programs in the demo directory. Installing JavaMail 1.2 To use the JavaMail 1.2 API, download the JavaMail 1.2 implementat
ion
, unbundle the javamail-1_2.zip file, and add the mail.jar file to your CLASSPATH. The 1.2 implementat
ion
comes with an SMTP, IMAP4, and POP3 provider besides the core classes. After installing JavaMail 1.2, install the JavaBeans Activat
ion
Framework. Installing JavaMail 1.1.3 To use the JavaMail 1.1.3 API, download the JavaMail 1.1.3 implementat
ion
, unbundle the javamail1_1_3.zip file, and add the mail.jar file to your CLASSPATH. The 1.1.3 implementat
ion
comes with an SMTP and IMAP4 provider, besides the core classes. If you want to access a POP
server
with JavaMail 1.1.3, download and install a POP3 provider. Sun has one available separate from the JavaMail implementat
ion
. After downloading and unbundling pop31_1_1.zip, add pop3.jar to your CLASSPATH, too. After installing JavaMail 1.1.3, install the JavaBeans Activat
ion
Framework. Installing the JavaBeans Activat
ion
Framework All vers
ion
s of the JavaMail API require the JavaBeans Activat
ion
Framework. The framework adds support for typing arbitrary blocks of data and handling it accordingly. This doesn't sound like much, but it is your basic MIME-type support found in many browsers and mail tools today. After downloading the framework, unbundle the jaf1_0_1.zip file, and add the activat
ion
.jar file to your CLASSPATH. For JavaMail 1.2 users, you should now have added mail.jar and activat
ion
.jar to your CLASSPATH. For JavaMail 1.1.3 users, you should now have added mail.jar, pop3.jar, and activat
ion
.jar to your CLASSPATH. If you have no plans of using POP3, you don't Fundamentals of the JavaMail API Page 6 Presented by developerWorks, your source for great tutorials ibm.com/developerWorks need to add pop3.jar to your CLASSPATH. If you don't want to change the CLASSPATH environment variable, copy the jar files to your lib/ext directory under the Java Runtime Environment (JRE) directory. For instance, for the J2SE 1.3 release, the default directory would be C:\jdk1.3\jre\lib\ext on a Windows platform. Using JavaMail with the Java 2 Enterprise Edit
ion
If you use J2EE, there is nothing special you have to do to use the basic JavaMail API; it comes with the J2EE classes. Just make sure the j2ee.jar file is in your CLASSPATH and you're all set. For J2EE 1.2.1, the POP3 provider comes separately, so download and follow the steps to include the POP3 provider as shown in the previous sect
ion
"Installing JavaMail 1.1.3." J2EE 1.3 users get the POP3 provider with J2EE so do not require the separate installat
ion
. Neither installat
ion
requires you to install the JavaBeans Activat
ion
Framework. Exercise Exercise 1. How to set up a JavaMail environment on page 22 Fundamentals of the JavaMail API Page 7 Presented by developerWorks, your source for great tutorials ibm.com/developerWorks Sect
ion
5. Reviewing the core classes Introduct
ion
Before taking a how-to approach at looking at the JavaMail classes in depth, this sect
ion
walks you through the core classes that make up the API: Sess
ion
, Message, Address, Authenticator, Transport, Store, and Folder. All these classes are found in the top-level package for the JavaMail API, javax.mail, though you'll frequently find yourself using subclasses found in the javax.mail.internet package. Sess
ion
The Sess
ion
class defines a basic mail sess
ion
. It is through this sess
ion
that everything else works. The Sess
ion
object takes advantage of a java.util.Properties object to get informat
ion
like mail
server
, username, password, and other informat
ion
that can be shared across your entire applicat
ion
. The constructors for the class are private. You can get a single default sess
ion
that can be shared with the getDefaultInstance() method: Properties props = new Properties(); // fill props with any informat
ion
Sess
ion
sess
ion
= Sess
ion
.getDefaultInstance(props, null); Or, you can create a unique sess
ion
with getInstance(): Properties props = new Properties(); // fill props with any informat
ion
Sess
ion
sess
ion
= Sess
ion
.getDefaultInstance(props, null); In both cases, the null argument is an Authenticator object that is not being used at this time. In most cases, it is sufficient to use the shared sess
ion
, even if working with mail sess
ion
s for multiple user mailboxes. You can add the username and password combinat
ion
in at a later step in the communicat
ion
process, keeping everything separate. Message Once you have your Sess
ion
object, it is time to move on to creating the message to send. This is done with a type of Message . Because Message is an abstract class, you must work with a subclass, in most cases javax.mail.internet.MimeMessage .A MimeMessage is an e-mail message that understands MIME types and headers, as defined in the different RFCs. Message headers are restricted to US-ASCII characters only, though non-ASCII characters can be encoded in certain header fields. To create a Message, pass along the Sess
ion
object to the MimeMessage constructor: MimeMessage message = new MimeMessage(sess
ion
); Fundamentals of the JavaMail API Page 8 Presented by developerWorks, your source for great tutorials ibm.com/developerWorks Note: There are other constructors, like for creating messages from RFC822-formatted input streams. Once you have your message, you can set its parts, as Message implements the Part interface (with MimeMessage implementing MimePart ). The basic mechanism to set the content is the setContent() method, with arguments for the content and the mime type: message.setContent("Hello", "text/plain"); If, however, you know you are working with a MimeMessage and your message is plain text, you can use its setText() method, which only requires the actual content, defaulting to the MIME type of text/plain: message.setText("Hello"); For plain text messages, the latter form is the preferred mechanism to set the content. For sending other kinds of messages, like HTML messages, use the former. For setting the subject, use the setSubject() method: message.setSubject("First"); Address Once you've created the Sess
ion
and the Message, as well as filled the message with content, it is time to address your letter with an Address . Like Message, Address is an abstract class. You use the javax.mail.internet.InternetAddress class. To create an address with just the e-mail address, pass the e-mail address to the constructor: Address address = new InternetAddress("president@whitehouse.gov"); If you want a name to appear next to the e-mail address, you can pass that along to the constructor, too: Address address = new InternetAddress("president@whitehouse.gov", "George Bush"); You will need to create address objects for the message's from field as well as the to field. Unless your mail
server
prevents you, there is nothing stopping you from sending a message that appears to be from anyone. Once you've created the addresses, you connect them to a message in one of two ways. For identifying the sender, you use the setFrom() and setReplyTo() methods. message.setFrom(address) If your message needs to show multiple from addresses, use the addFrom() method: Fundamentals of the JavaMail API Page 9 Presented by developerWorks, your source for great tutorials ibm.com/developerWorks Address address[] = ...; message.addFrom(address); For identifying the message recipients, you use the addRecipient() method. This method requires a Message.RecipientType besides the address. message.addRecipient(type, address) The three predefined types of address are: * Message.RecipientType.TO * Message.RecipientType.CC * Message.RecipientType.BCC So, if the message was to go to the vice president, sending a carbon copy to the first lady, the following would be appropriate: Address toAddress = new InternetAddress("vice.president@whitehouse.gov"); Address ccAddress = new InternetAddress("first.lady@whitehouse.gov"); message.addRecipient(Message.RecipientType.TO, toAddress); message.addRecipient(Message.RecipientType.CC, ccAddress); The JavaMail API provides no mechanism to check for the validity of an e-mail address. While you can program in support to scan for valid characters (as defined by RFC 822) or verify the MX (mail exchange) record yourself, these are all beyond the scope of the JavaMail API. Authenticator Like the java.net classes, the JavaMail API can take advantage of an Authenticator to access protected resources via a username and password. For the JavaMail API, that resource is the mail
server
. The JavaMail Authenticator is found in the javax.mail package and is different from the java.net class of the same name. The two don't share the same Authenticator as the JavaMail API works with Java 1.1, which didn't have the java.net variety. To use the Authenticator, you subclass the abstract class and return a PasswordAuthenticat
ion
instance from the getPasswordAuthenticat
ion
() method. You must register the Authenticator with the sess
ion
when created. Then, your Authenticator will be notified when authenticat
ion
is necessary. You could pop up a window or read the username and password from a configurat
ion
file (though if not encrypted is not secure), returning them to the caller as a PasswordAuthenticat
ion
object. Properties props = new Properties(); // fill props with any informat
ion
Authenticator auth = new MyAuthenticator(); Sess
ion
sess
ion
= Sess
ion
.getDefaultInstance(props, auth); Transport The final part of sending a message is to use the Transport class. This class speaks the Fundamentals of the JavaMail API Page 10 Presented by developerWorks, your source for great tutorials ibm.com/developerWorks protocol-specific language for sending the message (usually SMTP). It's an abstract class and works something like Sess
ion
. You can use the default vers
ion
of the class by just calling the static send() method: Transport.send(message); Or, you can get a specific instance from the sess
ion
for your protocol, pass along the username and password (blank if unnecessary), send the message, and close the connect
ion
: message.saveChanges(); // implicit with send() Transport transport = sess
ion
.getTransport("smtp"); transport.connect(host, username, password); transport.sendMessage(message, message.getAllRecipients()); transport.close(); This latter way is best when you need to send multiple messages, as it will keep the connect
ion
with the mail
server
active between messages. The basic send() mechanism makes a separate connect
ion
to the
server
for each method call. Note: To watch the mail commands go by to the mail
server
, set the debug flag with sess
ion
.setDebug(true). Store and folder Getting messages starts similarly to sending messages with a Sess
ion
. However, after getting the sess
ion
, you connect to a Store , quite possibly with a username and password or Authenticator. Like Transport, you tell the Store what protocol to use: // Store store = sess
ion
.getStore("imap"); Store store = sess
ion
.getStore("pop3"); store.connect(host, username, password); After connecting to the Store, you can then get a Folder , which must be opened before you can read messages from it: Folder folder = store.getFolder("INBOX"); folder.open(Folder.READ_ONLY); Message message[] = folder.getMessages(); For POP3, the only folder available is the INBOX. If you are using IMAP, you can have other folders available. Note: Sun's providers are meant to be smart. While Message message[] = folder.getMessages(); might look like a slow operat
ion
reading every message from the
server
, only when you actually need to get a part of the message is the message content retrieved. Once you have a Message to read, you can get its content with getContent() or write its content to a stream with writeTo(). The getContent() method only gets the message content, while writeTo() output includes headers. Fundamentals of the JavaMail API Page 11 Presented by developerWorks, your source for great tutorials ibm.com/developerWorks System.out.println(((MimeMessage)message).getContent()); Once you're done reading mail, close the connect
ion
to the folder and store. folder.close(aBoolean); store.close(); The boolean passed to the close() method of folder states whether or not to update the folder by removing deleted messages. Moving on Essentially, understanding how to use these seven classes is all you need for nearly everything with the JavaMail API. Most of the other capabilities of the JavaMail API build off these seven classes to do something a little different or in a particular way, like if the content is an attachment. Certain tasks, like searching, are isolated and are discussed later. Fundamentals of the JavaMail API Page 12 Presented by developerWorks, your source for great tutorials ibm.com/developerWorks Sect
ion
6. Using the JavaMail API Introduct
ion
You've seen how to work with the core parts of the JavaMail API. In the following sect
ion
s you'll find a how-to approach for connecting the pieces to do specific tasks. Sending messages Sending an e-mail message involves getting a sess
ion
, creating and filling a message, and sending it. You can specify your SMTP
server
by setting the mail.smtp.host property for the Properties object passed when getting the Sess
ion
: String host = ...; String from = ...; String to = ...; // Get system properties Properties props = System.getProperties(); // Setup mail
server
props.put("mail.smtp.host", host); // Get sess
ion
Sess
ion
sess
ion
= Sess
ion
.getDefaultInstance(props, null); // Define message MimeMessage message = new MimeMessage(sess
ion
); message.setFrom(new InternetAddress(from)); message.addRecipient(Message.RecipientType.TO, new InternetAddress(to)); message.setSubject("Hello JavaMail"); message.setText("Welcome to JavaMail"); // Send message Transport.send(message); You should place the code in a try-catch block, as setting up the message and sending it can throw except
ion
s. Exercise: Exercise 2. How to send your first message on page 23 Fetching messages For reading mail, you get a sess
ion
, get and connect to an appropriate store for your mailbox, open the appropriate folder, and get your messages. Also, don't forget to close the connect
ion
when done. String host = ...; String username = ...; String password = ...; // Create empty properties Properties props = new Properties(); // Get sess
ion
Sess
ion
sess
ion
= Sess
ion
.getDefaultInstance(props, null); Fundamentals of the JavaMail API Page 13 Presented by developerWorks, your source for great tutorials ibm.com/developerWorks // Get the store Store store = sess
ion
.getStore("pop3"); store.connect(host, username, password); // Get folder Folder folder = store.getFolder("INBOX"); folder.open(Folder.READ_ONLY); // Get directory Message message[] = folder.getMessages(); for (int i=0, n=message.length; i
ion folder.close(false); store.close(); What you do with each message is up to you. The above code block just displays whom the message is from and the subject. Technically speaking, the list of from addresses could be empty and the getFrom()[0] call could throw an except
ion
. To display the whole message, you can prompt the user after seeing the from and subject fields, and then call the message's writeTo() method if the user wants to see it. BufferedReader reader = new BufferedReader ( new InputStreamReader(System.in)); // Get directory Message message[] = folder.getMessages(); for (int i=0, n=message.length; i
servers or providers. For instance, except for deleting messages, the POP protocol supports none of them. Checking for new mail is not a POP task but a task built into mail clients. To find out what flags are supported, ask the folder with getPermanentFlags(). To delete messages, you set the message's DELETED flag: message.setFlag(Flags.Flag.DELETED, true); Open up the folder in READ_WRITE mode first though: folder.open(Folder.READ_WRITE); Then, when you are done processing all messages, close the folder, passing in a true value to expunge the deleted messages. folder.close(true); There is an expunge() method of Folder that can be used to delete the messages. However, it doesn't work for Sun's POP3 provider. Other providers may or may not implement the capabilities. It will more than likely be implemented for IMAP providers. Because POP only supports single access to the mailbox, you have to close the folder to delete the messages with Sun's provider. To unset a flag, just pass false to the setFlag() method. To see if a flag is set, check it with isSet(). Authenticating yourself You learned that you can use an Authenticator to prompt for username and password when needed, instead of passing them in as strings. Here you'll actually see how to more fully use authenticat
ion
. Instead of connecting to the Store with the host, username, and password, you configure the Properties to have the host, and tell the Sess
ion
about your custom Authenticator instance, as shown here: // Setup properties Properties props = System.getProperties(); props.put("mail.pop3.host", host); // Setup authenticat
ion
, get sess
ion
Authenticator auth = new PopupAuthenticator(); Sess
ion
sess
ion
= Sess
ion
.getDefaultInstance(props, auth); // Get the store Store store = sess
ion
.getStore("pop3"); store.connect(); You then subclass Authenticator and return a PasswordAuthenticat
ion
object from the getPasswordAuthenticat
ion
() method. The following is one such implementat
ion
, with a single field for both. (This isn't a Project Swing tutorial; just enter the two parts in the one field, separated by a comma.) Fundamentals of the JavaMail API Page 15 Presented by developerWorks, your source for great tutorials ibm.com/developerWorks import javax.mail.*; import javax.swing.*; import java.util.*; public class PopupAuthenticator extends Authenticator { public PasswordAuthenticat
ion
getPasswordAuthenticat
ion
() { String username, password; String result = JOpt
ion
Pane.showInputDialog( "Enter 'username,password'"); StringTokenizer st = new StringTokenizer(result, ","); username = st.nextToken(); password = st.nextToken(); return new PasswordAuthenticat
ion
(username, password); } } Because the PopupAuthenticator relies on Swing, it will start up the event-handling thread for AWT. This basically requires you to add a call to System.exit() in your code to stop the program. Replying to messages The Message class includes a reply() method to configure a new Message with the proper recipient and subject, adding "Re: " if not already there. This does not add any content to the message, only copying the from or reply-to header to the new recipient. The method takes a boolean parameter indicating whether to reply to only the sender (false) or reply to all (true). MimeMessage reply = (MimeMessage)message.reply(false); reply.setFrom(new InternetAddress("president@whitehouse.gov")); reply.setText("Thanks"); Transport.send(reply); To configure the reply-to address when sending a message, use the setReplyTo() method. Exercise: Exercise 4. How to reply to mail on page 27 Forwarding messages Forwarding messages is a little more involved. There is no single method to call, and you build up the message to forward by working with the parts that make up a message. A mail message can be made up of multiple parts. Each part is a BodyPart , or more specifically, a MimeBodyPart when working with MIME messages. The different body parts get combined into a container called Multipart or, again, more specifically a MimeMultipart . To forward a message, you create one part for the text of your message and a second part with the message to forward, and combine the two into a multipart. Then you add the multipart to a properly addressed message and send it. That's essentially it. To copy the content from one message to another, just copy over its Fundamentals of the JavaMail API Page 16 Presented by developerWorks, your source for great tutorials ibm.com/developerWorks DataHandler , a class from the JavaBeans Activat
ion
Framework. // Create the message to forward Message forward = new MimeMessage(sess
ion
); // Fill in header forward.setSubject("Fwd: " + message.getSubject()); forward.setFrom(new InternetAddress(from)); forward.addRecipient(Message.RecipientType.TO, new InternetAddress(to)); // Create your new message part BodyPart messageBodyPart = new MimeBodyPart(); messageBodyPart.setText( "Here you go with the original message:\n\n"); // Create a multi-part to combine the parts Multipart multipart = new MimeMultipart(); multipart.addBodyPart(messageBodyPart); // Create and fill part for the forwarded content messageBodyPart = new MimeBodyPart(); messageBodyPart.setDataHandler(message.getDataHandler()); // Add part to multi part multipart.addBodyPart(messageBodyPart); // Associate multi-part with message forward.setContent(multipart); // Send message Transport.send(forward); Working with attachments Attachments are resources associated with a mail message, usually kept outside of the message like a text file, spreadsheet, or image. As with common mail programs like Eudora and pine, you can attach resources to your mail message with the JavaMail API and get those attachments when you receive the message. Sending attachments: Sending attachments is quite like forwarding messages. You build up the parts to make the complete message. After the first part, your message text, you add other parts where the DataHandler for each is your attachment, instead of the shared handler in the case of a forwarded message. If you are reading the attachment from a file, your attachment data source is a FileDataSource . Reading from a URL, it is a URLDataSource . Once you have your DataSource, just pass it on to the DataHandler constructor, before finally attaching it to the BodyPart with setDataHandler(). Assuming you want to retain the original filename for the attachment, the last thing to do is to set the filename associated with the attachment with the setFileName() method of BodyPart. All this is shown here: // Define message Message message = new MimeMessage(sess
ion
); message.setFrom(new InternetAddress(from)); message.addRecipient(Message.RecipientType.TO, new InternetAddress(to)); message.setSubject("Hello JavaMail Attachment"); // Create the message part BodyPart messageBodyPart = new MimeBodyPart(); // Fill the message messageBodyPart.setText("Pardon Ideas"); Fundamentals of the JavaMail API Page 17 Presented by developerWorks, your source for great tutorials ibm.com/developerWorks Multipart multipart = new MimeMultipart(); multipart.addBodyPart(messageBodyPart); // Part two is attachment messageBodyPart = new MimeBodyPart(); DataSource source = new FileDataSource(filename); messageBodyPart.setDataHandler(new DataHandler(source)); messageBodyPart.setFileName(filename); multipart.addBodyPart(messageBodyPart); // Put parts in message message.setContent(multipart); // Send the message Transport.send(message); When including attachments with your messages, if your program is a servlet, your users must upload the attachment besides telling you where to send the message. Uploading each file can be handled with a form encoding type of multipart/form-data.
ion="/myservlet">
Note: Message size is limited by your SMTP
server
, not the JavaMail API. If you run into problems, consider increasing the Java heap size by setting the ms and mx parameters. Exercise: Exercise 5. How to send attachments on page 28 Getting attachments: Getting attachments out of your messages is a little more involved then sending them because MIME has no simple not
ion
of attachments. The content of your message is a Multipart object when it has attachments. You then need to process each Part, to get the main content and the attachment(s). Parts marked with a disposit
ion
of Part.ATTACHMENT from part.getDisposit
ion
() are clearly attachments. However, attachments can also come across with no disposit
ion
(and a non-text MIME type) or a disposit
ion
of Part.INLINE. When the disposit
ion
is either Part.ATTACHMENT or Part.INLINE, you can save off the content for that message part. Just get the original filename with getFileName() and the input stream with getInputStream(). Multipart mp = (Multipart)message.getContent(); for (int i=0, n=multipart.getCount(); i
ion = part.getDisposit
ion
(); if ((disposit
ion
!= null) && ((disposit
ion
.equals(Part.ATTACHMENT) || (disposit
ion
.equals(Part.INLINE))) { saveFile(part.getFileName(), part.getInputStream()); } } The saveFile() method just creates a File from the filename, reads the bytes from the input stream, and writes them off to the file. In case the file already exists, a number is added to the end of the filename until one is found that doesn't exist. // from saveFile() File file = new File(filename); Fundamentals of the JavaMail API Page 18 Presented by developerWorks, your source for great tutorials ibm.com/developerWorks for (int i=0; file.exists(); i++) { file = new File(filename+i); } The code above covers the simplest case where message parts are flagged appropriately. To cover all cases, handle when the disposit
ion
is null and get the MIME type of the part to handle accordingly. if (disposit
ion
== null) { // Check if plain MimeBodyPart mbp = (MimeBodyPart)part; if (mbp.isMimeType("text/plain")) { // Handle plain } else { // Special non-attachment cases here of image/gif, text/html, ... } ... } Processing HTML messages Sending HTML-based messages can be a little more work than sending plain text message, though it doesn't have to be that much more work. It all depends on your specific requirements. Sending HTML messages: If all you need to do is send the equivalent of an HTML file as the message and let the mail reader worry about fetching any embedded images or related pieces, use the setContent() method of Message, passing along the content as a String and setting the content type to text/html. String htmlText = "
Hello
" + "
"; message.setContent(htmlText, "text/html")); On the receiving end, if you fetch the message with the JavaMail API, there is nothing built into the API to display the message as HTML. The JavaMail API only sees it as a stream of bytes. To display the message as HTML, you must either use the Swing JEditorPane or some third-party HTML viewer component. if (message.getContentType().equals("text/html")) { String content = (String)message.getContent(); JFrame frame = new JFrame(); JEditorPane text = new JEditorPane("text/html", content); text.setEditable(false); JScrollPane pane = new JScrollPane(text); frame.getContentPane().add(pane); frame.setSize(300, 300); frame.setDefaultCloseOperat
ion
(JFrame.DISPOSE_ON_CLOSE); frame.show(); } Including images with your messages: On the other hand, if you want your HTML content message to be complete, with embedded images included as part of the message, you must treat the image as an attachment and reference the image with a special cid URL, where the cid is a reference to the Content-ID header of the image attachment. The process of embedding an image is quite similar to attaching a file to a message, the only Fundamentals of the JavaMail API Page 19 Presented by developerWorks, your source for great tutorials ibm.com/developerWorks difference is you have to tell the MimeMultipart that the parts are related by setting its subtype in the constructor (or with setSubType()) and set the Content-ID header for the image to a random string which is used as the src for the image in the img tag. The following demonstrates this completely. String file = ...; // Create the message Message message = new MimeMessage(sess
ion
); // Fill its headers message.setSubject("Embedded Image"); message.setFrom(new InternetAddress(from)); message.addRecipient(Message.RecipientType.TO, new InternetAddress(to)); // Create your new message part BodyPart messageBodyPart = new MimeBodyPart(); String htmlText = "
Hello
" + "
"; messageBodyPart.setContent(htmlText, "text/html"); // Create a related multi-part to combine the parts MimeMultipart multipart = new MimeMultipart("related"); multipart.addBodyPart(messageBodyPart); // Create part for the image messageBodyPart = new MimeBodyPart(); // Fetch the image and associate to part DataSource fds = new FileDataSource(file); messageBodyPart.setDataHandler(new DataHandler(fds)); messageBodyPart.setHeader("Content-ID","memememe"); // Add part to multi-part multipart.addBodyPart(messageBodyPart); // Associate multi-part with message message.setContent(multipart); Exercise: Exercise 6. How to send HTML messages with images on page 29 Fundamentals of the JavaMail API Page 20 Presented by developerWorks, your source for great tutorials ibm.com/developerWorks Sect
ion
7. Searching with SearchTerm Introduct
ion
The JavaMail API includes a filtering mechanism found in the javax.mail.search package to build up a SearchTerm . Once built, you then ask a Folder what messages match, retrieving an array of Message objects: SearchTerm st = ...; Message[] msgs = folder.search(st); There are 22 different classes available to help you build a search term. * AND terms (class AndTerm) * OR terms (class OrTerm) * NOT terms (class NotTerm) * SENT DATE terms (class SentDateTerm) * CONTENT terms (class BodyTerm) * HEADER terms (FromTerm / FromStringTerm, RecipientTerm / RecipientStringTerm, SubjectTerm, etc..) Essentially, you build up a logical express
ion
for matching messages, then search. For instance the following term searches for messages with a (partial) subject string of ADV or a from field of friend@public.com. You might consider periodically running this query and automatically deleting any messages returned. SearchTerm st = new OrTerm( new SubjectTerm("ADV:"), new FromStringTerm("friend@public.com")); Message[] msgs = folder.search(st); Fundamentals of the JavaMail API Page 21 Presented by developerWorks, your source for great tutorials ibm.com/developerWorks Sect
ion
8. Exercises About the exercises These exercises are designed to provide help according to your needs. For example, you might simply complete the exercise given the informat
ion
and the task list in the exercise body; you might want a few hints; or you may want a step-by-step guide to successfully complete a particular exercise. You can use as much or as little help as you need per exercise. Moreover, because complete solut
ion
s are also provided, you can skip a few exercises and still be able to complete future exercises requiring the skipped ones. Each exercise has a list of any prerequisite exercises, a list of skeleton code for you to start with, links to necessary API pages, and a text descript
ion
of the exercise goal. In addit
ion
, there is help for each task and a solut
ion
s page with links to files that comprise a solut
ion
to the exercise. Exercise 1. How to set up a JavaMail environment In this exercise you will install Sun's JavaMail reference implementat
ion
. After installing, you will be introduced to the demonstrat
ion
programs that come with the reference implementat
ion
. Task 1: Download the latest vers
ion
of the JavaMail API implementat
ion
from Sun. Task 2: Download the latest vers
ion
of the JavaBeans Activat
ion
Framework from Sun. Task 3: Unzip the downloaded packages. You get a ZIP file for all platforms for both packages. Help for task 3: You can use the jar tool to unzip the packages. Task 4: Add the mail.jar file from the JavaMail 1.2 download and the activat
ion
.jar file from the JavaBeans Activat
ion
Framework download to your CLASSPATH. Help for task 4: Copy the files to your
extens
ion
library directory. For Microsoft Windows, using the default installat
ion
copy, the command might look like the following: cd \javamail-1.2 copy mail.jar \jdk1.3\jre\lib\ext cd \jaf-1.0.1 copy activat
ion
.jar \jdk1.3\jre\lib\ext If you don't like copying the files to the
extens
ion
library directory, detailed instruct
ion
s are available from Sun for setting your CLASSPATH on Windows NT. Task 5: Go into the demo directory that comes with the JavaMail API implementat
ion
and compile the msgsend program to send a test message. Help for task 5: javac msgsend.java Fundamentals of the JavaMail API Page 22 Presented by developerWorks, your source for great tutorials ibm.com/developerWorks Task 6: Execute the program passing in a from address with the -o opt
ion
, your SMTP
server
with the -M opt
ion
, and the to address (with no opt
ion
). You'll then enter the subject, the text of your message, and the end-of-file character (CTRL-Z) to signal the end of the message input. Help for task 6: Be sure to replace the from address, SMTP
server
, and to address. java msgsend -o from@address -M SMTP.
Server
to@address If you are not sure of your SMTP
server
, contact your system administrator or check with your Internet Service Provider. Task 7: Check to make sure you received the message with your normal mail reader (Eudora, Outlook Express, pine, ...). Exercise 1. How to set up a JavaMail environment: Solut
ion
Upon successful complet
ion
, the JavaMail reference implementat
ion
will be in your CLASSPATH. Exercise 2. How to send your first message In the last exercise you sent a mail message using the demonstrat
ion
program provided with the JavaMail implementat
ion
. In this exercise, you'll create the program yourself. For more help with exercises, see About the exercises on page 22 . Prerequisites: * Exercise 1. How to set up a JavaMail environment on page 22 Skeleton code: * MailExample.java Task 1: Starting with the skeleton code , get the system Properties. Help for task 1: Properties props = System.getProperties(); Task 2: Add the name of your SMTP
server
to the properties for the mail.smtp.host key. Fundamentals of the JavaMail API Page 23 Presented by developerWorks, your source for great tutorials ibm.com/developerWorks Help for task 2: props.put("mail.smtp.host", host); Task 3: Get a Sess
ion
object based on the Properties. Help for task 3: Sess
ion
sess
ion
= Sess
ion
.getDefaultInstance(props, null); Task 4: Create a MimeMessage from the sess
ion
. Help for task 4: MimeMessage message = new MimeMessage(sess
ion
); Task 5: Set the from field of the message. Help for task 5: message.setFrom(new InternetAddress(from)); Task 6: Set the to field of the message. Help for task 6: message.addRecipient(Message.RecipientType.TO, new InternetAddress(to)); Task 7: Set the subject of the message. Help for task 7: message.setSubject("Hello JavaMail"); Task 8: Set the content of the message. Help for task 8: message.setText("Welcome to JavaMail"); Task 9: Use a Transport to send the message. Help for task 9: Transport.send(message); Task 10: Compile and run the program, passing your SMTP
server
, from address, and to address on the command line. Fundamentals of the JavaMail API Page 24 Presented by developerWorks, your source for great tutorials ibm.com/developerWorks Help for task 10: java MailExample SMTP.
Server
from@address to@address Task 11: Check to make sure you received the message with your normal mail reader (Eudora, Outlook Express, pine, ...). Exercise 2. How to send your first message: Solut
ion
The following Java source file represents a solut
ion
to this exercise: * Solut
ion
/MailExample.java Exercise 3. How to check for mail In this exercise, create a program that displays the from address and subject for each message and prompts to display the message content. For more help with exercises, see About the exercises on page 22 . Prerequisites: * Exercise 1. How to set up a JavaMail environment on page 22 Skeleton Code * GetMessageExample.java Task 1: Starting with the skeleton code , get or create a Properties object. Help for task 1: Properties props = new Properties(); Task 2: Get a Sess
ion
object based on the Properties. Help for task 2: Sess
ion
sess
ion
= Sess
ion
.getDefaultInstance(props, null); Task 3: Get a Store for your e-mail protocol, either pop3 or imap. Help for task 3: Store store = sess
ion
.getStore("pop3"); Task 4: Connect to your mail host's store with the appropriate username and password. Fundamentals of the JavaMail API Page 25 Presented by developerWorks, your source for great tutorials ibm.com/developerWorks Help for task 4: store.connect(host, username, password); Task 5: Get the folder you want to read. More than likely, this will be the INBOX. Help for task 5: Folder folder = store.getFolder("INBOX"); Task 6: Open the folder read-only. Help for task 6: folder.open(Folder.READ_ONLY); Task 7: Get a directory of the messages in the folder. Save the message list in an array variable named message. Help for task 7: Message message[] = folder.getMessages(); Task 8: For each message, display the from field and the subject. Help for task 8: System.out.println(i + ": " + message[i].getFrom()[0] + "\t" + message[i].getSubject()); Task 9: Display the message content when prompted. Help for task 9: System.out.println(message[i].getContent()); Task 10: Close the connect
ion
to the folder and store. Help for task 10: folder.close(false); store.close(); Task 11: Compile and run the program, passing your mail
server
, username, and password on the command line. Answer YES to the messages you want to read. Just hit ENTER if you don't. If you want to stop reading your mail before making your way through all the messages, enter QUIT. Help for task 11: java GetMessageExample POP.
Server
username password Fundamentals of the JavaMail API Page 26 Presented by developerWorks, your source for great tutorials ibm.com/developerWorks Exercise 3. How to check for mail: Solut
ion
The following Java source file represents a solut
ion
to this exercise. * Solut
ion
/GetMessageExample.java Exercise 4. How to reply to mail In this exercise, create a program that creates a canned reply message and attaches the original message if it's plain text. For more help with exercises, see About the exercises on page 22 . Prerequisites: * Exercise 3. How to check for mail on page 25 Skeleton Code: * ReplyExample.java Task 1: The skeleton code already includes the code to get the list of messages from the folder and prompt you to create a reply. Task 2: When answered affirmatively, create a new MimeMessage from the original message. Help for task 2: MimeMessage reply = (MimeMessage)message[i].reply(false); Task 3: Set the from field to your e-mail address. Task 4: Create the text for the reply. Include a canned message to start. When the original message is plain text, add each line of the original message, prefix each line with the "> " characters. Help for task 4: To check for plain text messages, check the messages MIME type with mimeMessage.isMimeType("text/plain"). Task 5: Set the message's content, once the message content is fully determined. Task 6: Send the message. Task 7: Compile and run the program, passing your mail
server
, SMTP
server
, username, password, and from address on the command line. Answer YES to the messages you want to send replies. Just hit ENTER if you don't. If you want to stop going through your mail before Fundamentals of the JavaMail API Page 27 Presented by developerWorks, your source for great tutorials ibm.com/developerWorks making your way through all the messages, enter QUIT. Help for task 7: java ReplyExample POP.
Server
SMTP.
Server
username password from@address Task 8: Check to make sure you received the message with your normal mail reader (Eudora, Outlook Express, pine, ...). Exercise 4. How to reply to mail: Solut
ion
The following Java source file represents a solut
ion
to this exercise. * Solut
ion
/ReplyExample.java Exercise 5. How to send attachments In this exercise, create a program that sends a message with an attachment. For more help with exercises, see About the exercises on page 22 . Prerequisites: * Exercise 2. How to send your first message on page 23 Skeleton Code: * AttachExample.java Task 1: The skeleton code already includes the code to get the initial mail sess
ion
. Task 2: From the sess
ion
, get a Message and set its header fields: to, from, and subject. Task 3: Create a BodyPart for the main message content and fill its content with the text of the message. Help for task 3: BodyPart messageBodyPart = new MimeBodyPart(); messageBodyPart.setText("Here's the file"); Task 4: Create a Multipart to combine the main content with the attachment. Add the main content to the multipart. Help for task 4: Multipart multipart = new MimeMultipart(); multipart.addBodyPart(messageBodyPart); Fundamentals of the JavaMail API Page 28 Presented by developerWorks, your source for great tutorials ibm.com/developerWorks Task 5: Create a second BodyPart for the attachment. Task 6: Get the attachment as a DataSource. Help for task 6: DataSource source = new FileDataSource(filename); Task 7: Set the DataHandler for the message part to the data source. Carry the original filename along. Help for task 7: messageBodyPart.setDataHandler(new DataHandler(source)); messageBodyPart.setFileName(filename); Task 8: Add the second part of the message to the multipart. Task 9: Set the content of the message to the multipart. Help for task 9: message.setContent(multipart); Task 10: Send the message. Task 11: Compile and run the program, passing your SMTP
server
, from address, to address, and filename on the command line. This will send the file as an attachment. Help for task 11: java AttachExample SMTP.
Server
from@address to@address filename Task 12: Check to make sure you received the message with your normal mail reader (Eudora, Outlook Express, pine, ...). Exercise 5. How to send attachments: Solut
ion
The following Java source file represents a solut
ion
to this exercise. * Solut
ion
/AttachExample.java Exercise 6. How to send HTML messages with images In this exercise, create a program that sends an HTML message with an image attachment where the image is displayed within the HTML message. Fundamentals of the JavaMail API Page 29 Presented by developerWorks, your source for great tutorials ibm.com/developerWorks For more help with exercises, see About the exercises on page 22 . Prerequisites: * Exercise 5. How to send attachments on page 28 Skeleton code: * logo.gif * HtmlImageExample.java Task 1: The skeleton code already includes the code to get the initial mail sess
ion
, create the main message, and fill its headers (to, from, subject). Task 2: Create a BodyPart for the HTML message content. Task 3: Create a text string of the HTML content. Include a reference in the HTML to an image (
) that is local to the mail message. Help for task 3: Use a cid URL. The content-id will need to be specified for the image later. String htmlText = "
Hello
" + "
"; Task 4: Set the content of the message part. Be sure to specify the MIME type is text/html. Help for task 4: messageBodyPart.setContent(htmlText, "text/html"); Task 5: Create a Multipart to combine the main content with the attachment. Be sure to specify that the parts are related. Add the main content to the multipart. Help for task 5: MimeMultipart multipart = new MimeMultipart("related"); multipart.addBodyPart(messageBodyPart); Task 6: Create a second BodyPart for the attachment. Task 7: Get the attachment as a DataSource, and set the DataHandler for the message part to the data source. Task 8: Set the Content-ID header for the part to match the image reference specified in the HTML. Help for task 8: messageBodyPart.setHeader("Content-ID","memememe"); Task 9: Add the second part of the message to the multipart, and set the content of the Fundamentals of the JavaMail API Page 30 Presented by developerWorks, your source for great tutorials ibm.com/developerWorks message to the multipart. Task 10: Send the message. Task 11: Compile and run the program, passing your SMTP
server
, from address, to address, and filename on the command line. This will send the images as an inline image within the HTML text. Help for task 11: java HtmlImageExample SMTP.
Server
from@address to@address filename Task 12: Check if your mail reader recognizes the message as HTML and displays the image within the message, instead of as a link to an external attachment file. Help for task 12: If your mail reader can't display HTML messages, consider sending the message to a friend. Exercise 6. How to send HTML messages with images: Solut
ion
The following Java source files represent a solut
ion
to this exercise. * Solut
ion
/logo.gif * Solut
ion
/HtmlImageExample.java Fundamentals of the JavaMail API Page 31 Presented by developerWorks, your source for great tutorials ibm.com/developerWorks Sect
ion
9. Wrapup In summary The JavaMail API is a Java package used for reading, composing, and sending e-mail messages and their attachments. It lets you build standards-based e-mail clients that employ various Internet mail protocols, including SMTP, POP, IMAP, and MIME, as well as related protocols such as NNTP, S/MIME, and others. The API divides naturally into two parts. The first focuses on sending, receiving, and managing messages independent of the protocol used, whereas the second focuses on specific use of the protocols. The purpose of this tutorial was to show how to use the first part of the API, without attempting to deal with protocol providers. The core JavaMail API consists of seven classes --Sess
ion
, Message, Address, Authenticator, Transport, Store, and Folder --all of which are found in javax.mail, the top-level package for the JavaMail API. We used these classes to work through a number of common e-mail-related tasks, including sending messages, retrieving messages, deleting messages, authenticating, replying to messages, forwarding messages, managing attachments, processing HTML-based messages, and searching or filtering mail lists. Finally, we provided a number of step-by-step exercises to help illustrate the concepts presented. Hopefully, this will help you add e-mail funct
ion
ality to your platform-independent Java applicat
ion
s. Resources You can do much more with the JavaMail API than what's found here. The lessons and exercises found here can be supplemented by the following resources: * Download the JavaMail 1.2 API from the JavaMail API home page . * The JavaBeans Activat
ion
Framework is required for vers
ion
s 1.2 and 1.1.3 of the JavaMail API. * The JavaMail-interest mailing list is a Sun-hosted discuss
ion
forum for developers. * Sun's JavaMail FAQ addresses the use of JavaMail in applets and servlets, as well as prototol-specific quest
ion
s. * Tutorial author John Zukowski maintains jGuru's JavaMail FAQ . * Want to see how others are using JavaMail? Check out Sun's list of third-party products. * If you want more detail about JavaMail, read Rick Grehan's "How JavaMail keeps it simple" (Lotus Developer Network, June 2000). * Benoit Marchal shows how to use Java and XML to produce plain text and HTML newsletters in this two-part series, "Managing e-zines with JavaMail and XSLT" Part 1 (developerWorks, March 2001) and Part 2 (developerWorks, April 2001). * "Linking Applicat
ion
s with E-mail" (Lotus Developer Network, May 2000) discusses how groupware can facilitate communicat
ion
, collaborat
ion
, and coordinat
ion
among applicat
ion
s. Fundamentals of the JavaMail API Page 32 Presented by developerWorks, your source for great tutorials ibm.com/developerWorks Feedback Please let us know whether this tutorial was helpful to you and how we could make it better. We'd also like to hear about other tutorial topics you'd like to see covered. Thanks! For quest
ion
s about the content of this tutorial, contact the author John Zukowski ( jaz@zukowski.net ) Colophon This tutorial was written entirely in XML, using the developerWorks Toot-O-Matic tutorial generator. The Toot-O-Matic tool is a short Java program that uses XSLT stylesheets to convert the XML source into a number of HTML pages, a zip file, JPEG heading graphics, and PDF files. Our ability to generate multiple text and binary formats from a single source file illustrates the power and flexibility of XML. Fundamentals of the JavaMail API Page 33
VB编程资源大全(英文控件)
1,animate.zipThis ActiveX DLL (Source Included) shows how to create animated dialogs in VB5. 2,MetricConvers
ion
DLL.zip34 Metric convers
ion
routines in a VB5 DLL. Callible directly or just call the nice front end.3,ControlP.zipWith help of this OCX you can call 39 control panels in windows!4,RemBuilderplus.zipActiveX that allows the ability to add comment blocks with ease.5,VertMenu.zipThis is a free active ocx with full source code for a vertical menu with the look and feel of Outlook 97. 6,dm10e.zipDevMailer adds SMTP email sending abilities to your VB, ASP, VBA, Delphi, or Perl program in just seconds! Features 7,HideAway.zipAn alignable tool bar which can be hidden. Also includes smooth scrolling for hiding/unhiding.8,tlsGUI.zipTILISOFT GUI ActiveX Controls - ImageLabel, ScrollPanel, SplitPanel, Brief9,recordsetEng.zipThis applicat
ion
shows how a DLLActiveX queries a Database and returns the recordset to the Standard EXE applicat
ion
.10,THtml.ZipShow Page Title for file selected with ".HTM" or ".ASP"
extens
ion
11,Fancy_Button.zipFancy Button12,TransFX.zipTransit
ion
FX is an ActiveX control that allows you to make profess
ion
al quality slide shows, picture presentat
ion
s or screen savers13,Roman.zipThis activeX control convert Decimal numbers to Roman numerals and back 14,pgBar.zipCarrick Progress Bar 1.0 - replacement for standard progress bar with customizable colors and styles15,JPGMaker.zipJPGMaker is an ActiveX control designed to compress bitmap images and save them in JPG format16,pictuner.zipPicTuner is an ActiveX control designed to adjust contrast, brightness and color balance of bitmap images. It supports the following file formats: *.jpg, *.bmp, *.dib. 17,Hyperlink.zipHyperlink ActiveX control allows you to include hypertext links on your forms18,shortcut.zipShortcut is an ActiveX control designed to create shortcuts to programs and documents and place them on windows desktop.19,PicOpener.zipPicOpener is an ActiveX control that allows you to read image files in over 50 formats and convert them to BMP bitmaps20,PicConverter.zipRead over 50 and write 15 image file formats.21,labelblink.zipBlinks The Capt
ion
In A Label Box22,UnZipper.zipActiveX control designed to easily manipulate ZIP archives from within your applicat
ion
. 23,gurhancoolbuttonocx.zipGurhanCoolButton is a free ActiveX Control that Acts as a Flat Button. Background Pictures and Icons can be added with ease24,pktextline.zipTextbox with modern design25,DirScanner.zipDirScanner is a free ActiveX control designed to scan directory/drive and save results to a file26,activeEjecutor.zipThis control launches a program and waits until it has finished or27,REGASP.zipDLL which provides access to the Windows 2000 registry through Active
Server
Pages (ASP) code. 28,ColorProgressBar.zipReplaces the standard progress bar with one that is on the order of O(n^2) times faster, with color opt
ion
s, and direct
ion
al opt
ion
s.29,MDITaskBarDemo.zipThis zip file contains all the code and procedures necessary to create and implement an MDI TaskBar control. 30,AnimatedAgent.zipTwo VBScripts which allow the users to INSTANTLY create MS Agent EMAIL and MS AGENT Web pages or add MS Agent to web pages31,label3d.zipThis ActiveX Control creates a 3D Label. 32,Shcmbbox1.zipShComboBox ActiveX Control v1.0 behaves exactly like the Combo box in Windows Explorer showing all the folders and even files in the Shell's namespace33,fldrvw21.zipFolderView ActiveX Control 2.1 allows you to add a Windows Explorer-like treeview in your applicat
ion
.34,controlcenterlefttrans.zipControl that centers text right, left or in the middle.35,BetaDBToolBar.zipDBToolBar (Database ToolBar) for Add, Edit, Delete, etc...36,CodeDll.zipMiniCalculator DLL that allows input keys/Calculat
ion
results directly into a TextBox, ComboBox, etc.37,hyperlink082800.zipThis Hyperlink ActiveX Control will allow you to insert an Hyperlink which will be very useful if you want to give a link to your website from your program. 38,DropdownCalculator.zipNice Drop-Down ActiveX Control Calculator. It is like a combo box, but it will drop down a calculator, which you can use for calculat
ion
39,ColorPicker1.zipIt is a color picker control, which is almost similar to those you find in MS
Office
2000 applicat
ion
s.40,PowerPrint.zipEasiest way to print. This Will Print Left Align, Right Align, Center Align. OCX. Full demonstrat
ion
easy to use.41,fb.zipFolder Browser lets you select the directories the easy and elegant way.42,TimeLed.zipThis simple ActiveX control shows a graphic clock with led simulat
ion
43,MouseHook.zipThis control provides a nice, elegant way of reacting to the movement of the mouse wheel and other mouse funct
ion
ality44,rscomm.zipSerial Comm control that provides the ability to send and receive 5 bit baudot with its built in ASCII to baudo and baudo to ASCII converter. Also can tx and rx any baudrate 45 to 115k!45,Mouse.zipVery useful mouse events, such as MouseMove, MousePosit
ion
, ClickRightButton, ClickLeftButton and etc.46,cdwriter.zipThis is a relatively simple cd writer code, comes with a freeware ocx. 47,converter.zipThis example project shows you how to use my binary.ocx. 48,autoreg.zipAuto easy, fast super Register/Unregister ocx/dll files at the same time!49,EasterEgg.zipthis is an EasterEgg OCX that you can drop on to your about form. 50,imgedit.zipImgEdit is an image-processing tool. It allows you to adjust brightness, contrast and saturat
ion
. 51,xshow.zipA control to create screensavers and/or slideshows. Choose from more than 120 transit
ion
effects between bitmap images.52,mp3enc.zipMP3 encoder. Source code for OCX not included.53,opendialog.zipAn extended Dialog Box like VB dialog style, with New, open, Recent files and preview. 54,SJIni.zipShareware OCX for manipulating INI files. Fast, easy, effective way to manipulate INI files.55,SoundSource.zipBrainFus
ion
Presents The Dancer.Ocx Which is capable of reading The Sound Peak Form Sound Card When Mp3 or Wav File Is Played 56,SysUSATimeZONE.zipGet's Time From Anywhere In USA. Just By Typing In The State Abbreviat
ion
. 57,adbevel.zipVisual Basic now has a bevel control like Delphi. 58,RebootPlus.zipHere Is Another OCX File That Logs Off, Shutdown, Restart, Displays Device Manage, And Display Properties.59,RetCal10.zipThis Activex control creates retail calendars on the fly. very useful if you are in the retail, accounting, merchandising industries. Very cool check it out60,SysErrorOCX.zipOCX file that handles Database Errors. Contents Of This File Include.SysError.OCX 61,Appearence.zipSystem OCX allows you to change certain system display settings. 62,textbox1.zipSyntax highlighting text editor ... not based on the RTF box... supports drawing of external graphics on the text area...useful for html editors etc63,Player.zipA multimedia ocx to replace mediaplayer ocx64,Audio.zipThis ActiveX Control will play all kinds of MPEG-Layer3(MP3) files with ease of use. 65,HLiteDemo.zipHlite.Ocx When Placed On A Form And Called From A Textbox When It Has Focus It Will Highlight The Text Very Usefull In Data Entry Applicat
ion
66,SysBacUpDemo.zipThis Is A Demo Applicat
ion
Using A Ocx File To Backup Files. 67,OCXButton1.zipAn ActiveX control (OCX) for creating Buttons with attributes unavailable in the intrinsic CommandButton control of VB68,transferTV.zipTransfers values from one treeview to another recursively.69,createctrl.zipA float button control70,SysPCase.zipThis Is An OCX File That Will Allow a user to start typing and when textbox loses focus the OCX will make all text that user typed in into Proper Text Format71,SysErrorLogWriter.zipHere is an OCX file that will log all errors when placed under an event On Error Goto72,Pbar.zipThis is an OCX that has the nice Progress Bar that has the Percent in the middle It's nice and easy to use73,metawizardv101.zipMeta Wizard a small Meta Tag creat
ion
tool that takes advantage of the system toolbar and ontop properties. With this tool you can easily create Meta Tags74,Counter.zipFormatted number, long number counter, Thousand seperator75,barcode128.zipDBToolBar (Database ToolBar), to Add, Edit, Delete, etc...76,SwitchOCX.zipActiveX control.77,djmeter.zipA control (with VB Source) that is an implementat
ion
of a progress bar78,BtnGraphic.zipAn OCX someone made that allows you to easily create command buttons on forms, that act like an IE coolbar 79,HSoft11.zipThis is an OCX someone wrote that acts and looks almost identical to the IE3 toolbar80,MsgScroll.zipThis is a control (VB5 with source) that scrolls text81,mtymse.zipThis is a control (VB5 with source) that controls every aspect of the mouse82,progbar.zipUses a picture box to emulate a progress bar83,axcool.zipA toolbar control someone wrote84,axgrid.zipA Grid control someone wrote85,axpanel.zipA Panel, 3D Fram, Progress meter control someone wrote.86,browsef.zipA text box type control, that allows you to select a folder.87,browsfil.zipA text box type control, that allows you to select a file..88,colbrwse.zipA colour select control.89,colorsel.zipA drop down colour select control.90,FileOps.zipA VB5/6 control that allows you to easily copy, rename, put in trash, move files on your computer91,formmenu.zipA VB5/6 control that allows you to add menus to any place on a form you like92,hlitactx2.zipA VB5/6 control that shows you how to do code to see if the mouse is over a control on the screen. This one will highlight itself when the mouse id over it93,progbar2.zipA VB5/6 control that is a progress bar. Very good, allows lots of 94,spinedit.zipA spin control95,tilepuz.zipA control that simulates the tiled puzzle game96,urllabel2.zipA label control, but when you click on it, it starts up the default browser to a specified URL97,crdsrc.zipA whole deck of cards in a control, usfull for using in your own program98,ode.zipA control that spins numbers around99,TaskBar_v0_5.zipA control that creates a task bar, onto which you can add other controls100,vbalilsc.zipA pure VB control, that is a replacment for the image list control101,DBControl.zipA control that has many usefull database funct
ion
s within it, like add field, add column, compact, restore, create primary key etc..102,OvalButton.zipA control that is an oval command button103,VBocx002.zipDas Scroll Wheel kann als Scrollbar oder einfach nur zur graphischen Versch?nerung verwendet werden 104,VBocx003o.zipDiese Leuchtdiode l?sst sich rund oder viereckig anzeigen, und erzeugt dadurch einen grafisch aufmachenderen Eindruck!!!105,VBocx004o.zipBlendet einen Text von wei? nach schwarz ein!106,VBocx005o.zipWie hier sichtbar, zeigt diese OCX-Datei nur Ziffern an. Der Counter oben besteht aus 2, die Uhrzeit unten aus 6 LED-Ziffern. Bei der Uhr werden desweiteren 2 Labels als Trennung verwendet.107,VBocx006o.zipEine Progressbar, der einfach anzusteuernd die Farbe und den Text ausgibt.108,vbocx008o.zipEinfach zu bedienen, sieht gut aus, und lockert das Bild der Benutzeroberfl?che etwas auf! 109,VBocx007o.zipEin einfach zu bedienendes OCX, um dateien von
Server
n hoch oder runterzuladen!110,VBocx001.zipVerschlüsseler werden meist zum Schutz von Daten angewandt.111,SuperPack.zipSuper Fill is an OCX designed to extend VB Fill Style property. You can create user patterns andprocess the scan-lines coordinate returned from the control. This is a shareware control by Fabio Guerrazzi.112,supDraw.zipAnother control by Fabio Guerrazzi. Shareware.113,LEDBULB.zipThis OCX will represent strings in the form of led bulbs. By H.M.IMTHIAZ RAFIQ.114,delaunay.zipPerforms constrained triangulat
ion
, curve level and 3d mesh.115,Wolf.zipAnother ocx make example.116,OCXRegCode.zipThis will register your ocx.Comes with the complete source. Made by Neil Cuttriss.117,DDCalc.zipThis OCX Control is simple enough not to describe its use.118,Flash3D.zipThis shows you how to use the macromedia flash/shockwave ocx. Also demonstrates 3D animat
ion
in a vector based environment with Flash119,EnhPrint.zipOCX which creates a EMF-metafile dc class, which can be used by the vb programmer to create, print and/or preview a metafile120,hoverbutton.zipThis is an enhancement of the standard command button.121,scbox10.zipThis ActiveX control lets you add a shadow that falls behind a control.122,getfile.zipControl consisting of a text box and a button. User clicks the button, dialog shown 123,ftpActiveX.zipThis control shows how to use the Inet control for downloading files, uploading files, listing directories, renaming files, deleting files, creating directories and more!!124,TextBoxControl.zipThis text box control allows you to limit input based on datatype or numeric range. Validat
ion
occurs within the lost focus event.125,systray.zipAdd icons to the system tray with ease. The capt
ion
and icon can be set. 126,asRuler.zipThis is a basic Custom Contrl, which displayes a ruler.127,playing_card.zipSimple to use playing card activeX control with addit
ion
al container with auto arrange funct
ion
. 128,XPlayer.zipThis control funct
ion
s much like windows media player and supports the following file formats: Dat, Avi, Mp3, Wav, Mpg & Wma files.129,DBImage.zipThis one is component that allows you to populate image data from a ADO field to the component just like you would populate a text field with text data from a text field.130,ellipctl.zipMake an elliptical ActiveX picture control
EurekaLog_7.5.0.0_Enterprise
EurekaLog 7.5 (18-August-2016) 1)..Important: Installat
ion
layout was changed. All packages now have vers
ion
suffix (e.g. EurekaLogCore240.bpl). No files are copied to \bin folder of IDE. Run-time package (EurekaLogCore) is copied to Windows\System32 folder. Refer to help for more info. 2)....Added: RAD Studio 10.1 Berlin support 3)....Added: IDE F1 help integrat
ion
(on CHM-based IDEs only, i.e. XE8+) 4)....Added "--el_injectjcl", "--el_createjcl", and "--el_createdbg" command-line opt
ion
s for ecc32/emake to inject JEDI/JCL debug info, create .jdbg file, and create .dbg file (Microsoft debug format). Later is supported when map2dbg.exe tool is placed in \Bin folder of EurekaLog installat
ion
(separate download is required) 5)....Added: Except
ion
2HRESULT in EAppDLL to simplify developing DLLs with "DLL" profile 6)....Added: Use ShellExecute opt
ion
for mailto send method 7)....Added: "Mandatory e-mail only when sending" opt
ion
8)....Added: Except
ion
line highlighting in disassember view in EurekaLog except
ion
dialog and Viewer 9)....Added: Detect
ion
/logging Delphi objects in disassembly view 10)..Added: Support for multi-monitor info 11)..Added: Support for detect
ion
of Windows 10 updates 12)..Added: OS edit
ion
detect
ion
13)..Added: "User" and "Sess
ion
" columns to processes list, processes list is also sorted by sess
ion
first 14)..Added: Support for showing current user processes only 15)..Added: Expanding environment variables for "Support URL" 16)..Fixed: Range-check error on systems with MBCS ACP 17)..Fixed: 64-bit shared memory manager may not work 18)..Fixed: Possible "Unit XYZ was compiled with a different vers
ion
of ABC" when using packages 19)..Fixed: FastMM shared MM compatibility 20)..Fixed: Minor bugs in stack tracing (which usually affected stacks for leaks) 21)..Fixed: Rare deadlocks in multi-threaded applicat
ion
s 22)..Fixed: Taking screenshot of minimized window 23)..Fixed: NT service may not log all except
ion
s 24)..Fixed: SSL port number for Bugzilla 25)..Fixed: Disabling "Activate Except
ion
Filters" opt
ion
was ignored 26)..Fixed: Missing FTP proxy settings 27)..Fixed: IntraWeb support is updated up to 14.0.64 28)..Fixed: Retrieving some process paths in processes list 29)..Fixed: CPU view rendering in EurekaLog except
ion
dialog and Viewer 30)..Fixed: Some issues in naming threads 31)..Fixed: Removed exported helper _462EE689226340EAA982C5E8307B3F9E funct
ion
(replaced with mapped file) 32)..Changed: Descript
ion
s of EurekaLog project opt
ion
s now list corresponding property names of TEurekaModuleOpt
ion
s class. 33)..Changed: Default template of HTML/web dialog now includes call stack by default 34)..Changed: EurekaLog 7 now can be installed over EurekaLog 6 automatically, with no addit
ion
al act
ion
s/tools EurekaLog 7.4 (7.4.0.0), 26-January-2016 1)....Fixed: Performance issue in DLL exports debug informat
ion
provider 2)....Fixed: Range-check error in Send dialog 3)....Fixed: Possible FPU control word unexpected change 4)....Fixed: JIRA sending to project with no vers
ion
info 5)....Fixed: Viewer sorting affected by local reg
ion
settings 6)....Fixed: Except
ion
filters ignore settings for restart/terminate EurekaLog 7.3 Hotfix 2 (7.3.2.0), 20-October-2015 1)....Fixed: Added workaround for codegen bug in Delphi 7 (possibly - other), bug manifests itself as wrong date-time in reports or integer overflows 2)....Fixed: Some MAPI DLLs may not be loaded correctly 3)....Fixed: Handling SEC_I_INCOMPLETE_CREDENTIALS in SSPI code (added searching client certificate) 4)....Fixed: Range-check error when closing WinAPI dialog EurekaLog 7.3 Hotfix 1 (7.3.1.0), 2-October-2015 1)....Fixed: Long startup time on terminal services
server
s EurekaLog 7.3 (7.3.0.0), 24-September-2015 1)....Added: RAD Studio 10 Seattle support 2)....Added: Performance counters for run-time (internal logging with --el_debug) 3)....Fixed: spawned by ecc32/emake processes now start with the same priority 4)....Fixed: ThreadID = 0 in StandardEurekaNotify 5)....Fixed: Dialog auto-close timer may reset without user input 6)....Fixed: Possible hang when quickly loading/unloading EurekaLog-enabled DLL 7)....Fixed: Possible hang in COM DLLs 8)....Fixed: Removed some unnecessary file system access on startup 9)....Fixed: Possible wrong font size in EurekaLog tools 10)..Fixed: Ignore timeouts from Shell_NotifyIcon 11)..Fixed: Possible failure to handle/process stack overflow except
ion
s 12)..Changed: VCL/CLX/FMX now will assign Applicat
ion
.OnExcept
ion
handler when low-level hooks are disabled EurekaLog 7.2 Hotfix 6 (7.2.6.0), 14-July-2015 1)....Added: csoCaptureDelphiExcept
ion
s opt
ion
2)....Fixed: Handling of SECBUFFER_EXTRA in SSPI code 3)....Fixed: Several crashes in sending code for very old Delphi vers
ion
s 4)....Fixed: Regress
ion
(from hotfix 5) crash in some IDEs EurekaLog 7.2 Hotfix 5 (7.2.5.0), 1-July-2015 1)....Added: HKCU\Software\EurekaLab\Viewer\4.0\UI\Statuses registry key to allow status customizat
ion
s in Viewer 2)....Added: "Disable hang detect
ion
under debugger" opt
ion
3)....Fixed: Wrong button capt
ion
in standalone "Steps to reproduce" dialog 4)....Fixed: Wrong passing of Boolean parameters in JSON (affects JIRA) 5)....Fixed: Wrong sorting of BugID, Count and DateTime columns in Viewer 6)....Fixed: Empty "Count" field/column is now displayed as "1" in Viewer 7)....Fixed: Generic names with "," could not be decoded in Viewer 8)....Fixed: Updated Windows 10 detect
ion
for latest builds of Windows 10 9)....Fixed: Sleep and hybernat
ion
no longer trigger false-positive "applicat
ion
freeze" 10)..Fixed: Wrong funct
ion
codes for hooking (affects ISAPI applicat
ion
type) 11)..Fixed: Wrong button capt
ion
in "Steps to Reproduce" dialog 12)..Fixed: Crash when taking snapshot of some proccesses by Threads Snapshot tool 13)..Fixed: Minor improvements in leak detect
ion
EurekaLog 7.2 Hotfix 4 (7.2.4.0), 10-June-2015 1)....Added "ECC32TradeSpeedForMemory" opt
ion
- defaults to 0/False, could be changed to 1 via Custom/Manual tab. This opt
ion
will switch from fast-methods to slower methods, but which take less memory. Use 0 (default) for small projects, use 1 for large projects (if ecc32 runs out of memory). 2)....Added: --el_DisableDebuggerPresent command-line opt
ion
for compatibility with 3rd party debuggers (AQTime, etc.) 3)....Added: AQTime auto-detect 4)....Fixed: Performance optimizat
ion
s 5)....Fixed: Windows 8+ App Menu shortcuts 6)....Fixed: Unmangling on x64 EurekaLog 7.2 Hotfix 3 (7.2.3.0), 20-May-2015 1)....Added: Support for token auth in Bugzilla (latest 4.x builds) 2)....Added: Support for API key auth in Bugzilla (5.x) 3)....Added: Support for /EL_DisableMemoryFilter command-line opt
ion
4)....Added: Asking e-mail when user switches to "details" from MS Classic without entering e-mail 5)....Fixed: Compatibility issues with older Bugzilla vers
ion
s (3.x) 6)....Fixed: Passing settings between dialogs 7)....Fixed: "Ask for steps to reproduce" dialog is now DPI-aware 8)....Fixed: Silently ignore and fix invalid values in project opt
ion
s EurekaLog 7.2 Hotfix 2 (7.2.2.0), 30-April-2015 1)....Fixed: Confusing message in Manage tool when using with Trial/Pro 2)....Fixed: Range check error in processes informat
ion
for x64 machines (affects startup of any EurekaLog-enabled module) 3)....Fixed: Auto-detect personality by project
extens
ion
if --el_mode switch is missing 4)....Fixed: More details for diagnostic sending 5)....Fixed: Wrong settings for MAP files in C++ Builder 6)....Fixed: Wrong code page was used to decode ANSI bug reports 7)....Fixed: Attaching .PAS files instead of .OBJ in C++ Builder 2006+ Pro/Trial EurekaLog 7.2 Hotfix 1 (7.2.1.0), 3-April-2015 1)....Fixed: Wrong float-str convert
ion
when ThousandSeparator is '.' EurekaLog 7.2 (7.2.0.0), 1-April-2015 1)....Important: TEurekaLogV7 component was renamed to TEurekaLogEvents. Please, update your projects by renaming or recreating the component 2)....Important: File layout was changed for BDS 2006+. Delphi and C++ Builder files are now located in Stud
ioN
um folders instead of old DelphiNum and CBuilderNum folders. Update your search paths if needed 3)....Added: Major improvements in DumpAllocat
ion
sToFile funct
ion
(EMemLeaks unit) 4)....Added: MemLeaksSetParentBlock, MemLeaksOwn, EurekaTryGetMem funct
ion
s (EMemLeaks unit) 5)....Added: Improvements for call stack of dynarrays/strings allocat
ion
s (leaks) 6)....Added: "Elem size" when reporting leaks in dynarrays 7)....Added: Streaming unpacked debug info into temporal files instead of memory - this greatly reduces run-time applicat
ion
memory usage at cost of slightly slower except
ion
processing. This also reduces memory footprint for ecc32/emake 8)....Added: Showing call stacks for 2 new types of fatal memory errors 9)....Added: EMemLeaks._ReserveOutOfMemory to control reserve size of out of memory errors (default is 50 Mb) 10)..Added: "MinLeaksLimitObjs" opt
ion
(EMemLeaks unit) 11)..Added: Fatal memory problem now pauses all threads in applicat
ion
12)..Added: Fatal memory problem now change thread name (to simplify debugging) 13)..Added: boPauseELThreads and boDoNotPauseELServiceThread opt
ion
s (currently not visible in UI) 14)..Added: Support for texts collect
ion
s out of default path 15)..Added: Support for relative file paths to text collect
ion
s and external settings 16)..Added: Support for environment variables in project opt
ion
's paths 17)..Added: Support for relative file paths and environment variables for events and various module paths 18)..Added: Logging in Manage tool 19)..Added: Windows 10 vers
ion
detect
ion
20)..Added: Stack overflow tracing 21)..Added: Major improvements in removal of recursive areas from call stack 22)..Added: Statistics collect
ion
23)..Added: Support for uploading multiple files in JIRA 24)..Added: EResLeaks improvements (new funcs: ResourceAdd, ResourceDelete, ResourceName; support for realloc-like funct
ion
s) 25)..Fixed: Added workaround for bug in JIRA 5.x 26)..Fixed: Rare EurekaLog internal error 27)..Fixed: Ignored unhandled thread except
ion
s (when EurekaLog is disabled) now triggers default OS processing (WER) 28)..Fixed: Irnored except
ion
s (via per-except
ion
/events) now bring up default RTL handler 29)..Fixed: Format error in Viewer 30)..Fixed: Leak of EurekaLog except
ion
informat
ion
object 31)..Fixed: Wrong chaining except
ion
s inside GetMem/FreeMem 32)..Fixed: Memory leak after low-level unhook of funct
ion
33)..Fixed: Re-parenting after ReallocMem 34)..Fixed: Editing SMTP
server
opt
ion
s 35)..Fixed: SMTP
server
not using real user e-mail in FROM field 36)..Fixed: Some multi-threading crashes 37)..Fixed: Fixed crashes in Manage tool 38)..Fixed: Range-check error in Viewer 39)..Fixed: EurekaLog error dialog appearing under other windows 40)..Fixed: AV when parsing TDS (emake/C++ Builder specific) 41)..Fixed: Unable to build call stacks for other threads due to insufficient rights 42)..Fixed: Vers
ion
checks for BugZilla and JIRA 43)..Fixed: Not catching out-of-module AVs when "Capture except
ion
s only from current module" opt
ion
is checked 44)..Fixed: Checking for remaining except
ion
s at shutdown (C++ Builder specific, AcquireExcept
ion
Object returns wrong info) 45)..Fixed: "get call stack of ... threads" / "suspend ... threads" opt
ion
s (avoid rare multithreading race condit
ion
s) 46)..Fixed: Crash when naming thread without EurekaLog thread info 47)..Fixed: Detect
ion
of immediate caller for memory funcs 48)..Fixed: Non-working Assign for opt
ion
s 49)..Fixed: Handling of explicitly chained except
ion
s 50)..Fixed: Various except
ion
/threading fixes for MS debug provider 51)..Fixed: Processing hardware unhandled except
ion
s (QC #55007) 52)..Fixed: Unchecking dialog opt
ion
s when export/import 53)..Fixed: BSTR leak 54)..Fixed: JIRA decimal separator bug 55)..Changed: Now unhandled except
ion
s will be handled by EurekaLog even if EurekaLog is disabled in the thread - only global EurekaLog-enabled status is respected 56)..Changed: Viewer vers
ion
now matches vers
ion
of EurekaLog 57)..Changed: DeleteServiceFilesOpt
ion
now always False by default 58)..Changed: Speed improvements for known memory leaks (reserved leaks) 59)..Changed: Improved logging for sending 60)..Changed: Switching to detailed mode without entering (mandatory) e-mail: now EL will not block this 61)..Changed: .ToString for except
ion
info now uses compact stack formatter 62)..Removed: Custom field editor (replaced it with link to "Custom" page) 63)..Removed: EurekaLog 7 no longer could be installed over EurekaLog 6. Manage tool from EurekaLog 7 will no longer work with EurekaLog 6. EurekaLog 7.1 update 1 (7.1.1.0), 19-October-2014 1)....Added: "Send in separated thread" opt
ion
2)....Added: Hang detect
ion
will now use Wait Chain Traversal (WCT) on Vista+ systems to detect deadlocks in any EurekaLog-enabled threads 3)....Added: OS install language and UI language fields in bug report 4)....Fixed: Viewer is not able to decrypt reports with generics 5)....Fixed: EVariantTypeCastError in Viewer when changing status of some bug reports 6)....Fixed: EcxInvalidDataControllerOperat
ion
in Viewer 7)....Fixed: Stack overflow at run-time for certain combinat
ion
of project opt
ion
s 8)....Fixed: BMP re-draw bug in UI dialogs 9)....Fixed: Rogue "corrupted" error message for valid ZIPs of certain structure 10)..Fixed: Various range check errors in Viewer 11)..Fixed: Possible encoding errors for non-ASCII reports in Viewer on certain environments 12)..Fixed: Wrong count in Viewer when importing reports without proper "count" field 13)..Fixed: Duplicate reports may appear in bug report file when "Do not save duplicate errors" opt
ion
is checked 14)..Fixed: False-positive detect
ion
of some virtual machines 15)..Fixed: Processing of except
ion
s from message handlers during message pumping cycle inside except
ion
dialogs 16)..Fixed: Access Violat
ion
if except
ion
dialog was terminated by except
ion
17)..Fixed: Hardware except
ion
s from unit's initializat
ion
/finalizat
ion
may be unprocessed 18)..Changed: "VIEW" act
ion
for Viewer now will open ALL bug reports inside bug report file; reports will not be merged by BugID. "IMPORT" act
ion
remains the same: duplicate reports are merged, "count" is increased 19)..Changed: Charset field in bug report now shows both charset and code page EurekaLog 7.1 (7.1.0.00), 23-September-2014 1)....Added: XE7 support 2)....Added: XE6 support 3)....Added: New DLL demo 4)....Added: Custom profiles are now shown in "Applicat
ion
type" combo-box 5)....Added: Non-empty "steps to reproduce" will be added to existing bug tracker issues with empty "steps to reproduce" 6)....Added: Support for custom fields in FogBugz (API vers
ion
8 and above) 7)....Added: Support for unsequenced line numbers in PDB/DBG files (--el_source switch) 8)....Fixed: XML bug report were generated wrong 9)....Fixed: Strip relocat
ion
s code for Win64 10)..Fixed: EurekaLog condit
ion
al symbols removed improperly when deactivating EurekaLog 11)..Fixed: Sending reports to non-default port numbers (affects web-based methods) 12)..Fixed: SSL validat
ion
check may reject valid SSL certificate (SMTP Client/
Server
) 13)..Fixed: SSL errors may be not reported 14)..Fixed: Viewer did not consider empty bug reports as corrupted 15)..Fixed: "DLL" profile now can be used with packages properly 16)..Fixed: Few rare memory leaks 17)..Fixed: Possible deadlock when using MS debug info provider 18)..Fixed: C++ Builder project files was saved incorrectly (RAD Studio 2007+) 19)..Fixed: "Show restart checkbox after N errors" counts handled except
ion
s 20)..Fixed: IDE expert's DPR parser (added support for multi-part idents) 21)..Fixed: Rare access violat
ion
in hook code 22)..Fixed: Thread handle leaks (added _NotifyThreadGone/_CleanupFinishedThreads funct
ion
s to be called manually - only when low-level hooks are not installed) 23)..Fixed: EurekaLog's installer hang 24)..Fixed: Bug in object/class validat
ion
25)..Fixed: Bug when using TThreadEx without EurekaLog 26)..Fixed: Leaks detect
ion
may not work with certain combinat
ion
of opt
ion
s 27)..Fixed: Deadlock in some cases when using EurekaLog threading opt
ion
set to "enabled in RTL threads, disabled in Windows threads". 28)..Changed: TEurekaExcept
ion
Info.CallStack will be nil until except
ion
is actually raised 29)..Changed: FogBugz and BugZilla: changed bugs identificat
ion
within project (to allow two bugs exists with same BugID in different projects) 30)..Changed: Blocked manual creat
ion
/destruct
ion
of Except
ion
Manager class and EurekaExcept
ion
Info 31)..Changed: ECC32/EMAKE runs from IDE without changing priority, added ECC32PriorityClass opt
ion
32)..Improved: Minor help and text improvements EurekaLog 7.0.07 Hotfix 2 (7.0.7.2), 11-December-2013 1)....Fixed: Delphi compiler code generat
ion
bug (Delphi 2007 and below) 2)....Fixed: Code hooks may rarely be set incorrectly (code stub relocat
ion
fails) 3)....Fixed: Win64 call stacks funct
ion
s now work more similar to 32 bit call stacks EurekaLog 7.0.07 Hotfix 1 (7.0.7.1), 2-December-2013 1)....Added: Alternative capt
ion
for e-mail input control when e-mail is mandatory 2)....Fixed: Rare range check error in WinAPI visual dialogs 3)....Fixed: Wrong error detect
ion
for OnExcept
ion
Error event 4)....Fixed: Wrong TResponce processing 5)....Fixed: Problems with encrypted call stack decoding 6)....Fixed: OnPasswordRequest event may have no effect EurekaLog 7.0.07 (7.0.7.0), 25-November-2013 1)....Added: Ability to use Assign between call stack and TStrings 2)....Added: 64-bit disassembler 3)....Added: Support for variables and relative file paths in "Addit
ion
al Files" send opt
ion
4)....Added: --el_source switch for ecc32/emake compilers 5)....Added: support for post-processing non-Embarcadero executables 6)....Added: EOTL.pas unit for better OmniThreadLibrary integrat
ion
7)....Added: RAD Studio XE5 support 8)....Added: New "Capture call stacks of EurekaLog-enabled threads" opt
ion
9)....Added: "Deferred call stacks" opt
ion
for 64-bit 10)..Added: Copy report to clipboard now copies both report text and report file 11)..Added: "AttachBothXMLAndELReports" opt
ion
to include both .elx and .el files into bug report 12)..Added: EMemLeaks.MemLeaksErrorsToIgnore opt
ion
to exclude certain memory errors from being considered as fatal 13)..Added: Call stack with any encrypted entry will be fully encrypted now 14)..Added: Opt
ion
to exclude certain memory errors from being considered as fatal (EMemLeaks.MemLeaksErrorsToIgnore) 15)..Added: New "HTTP Error Code" opt
ion
for all web-based dialogs (CGI, ISAPI, etc.) 16)..Added: Support for Unicode in Simple MAPI send method (requires Windows 8 or latest Microsoft
Office
) 17)..Added: New value for call stack detalizat
ion
opt
ion
(show any addresses, including those not belonging to any executable module) 18)..Fixed: Wrong JSON escaping for strings (affects JIRA send method) 19)..Fixed: Range-check error in Viewer when viewing bug reports with high addresses 20)..Fixed: Selecting Win32 service applicat
ion
type is no longer resets to custom/unsupported 21)..Fixed: Possible hang when testing dialogs from EurekaLog project opt
ion
s dialog 22)..Fixed: Rare resetting of some opt
ion
s when saving .eof file 23)..Fixed: Except
ion
pointer could be removed from call stack due to debug details filtering 24)..Fixed: Rare case when LastThreadExcept
ion
returned nil while there was active thread except
ion
25)..Fixed: Rare case when ShowLastThreadExcept
ion
do nothing 26)..Fixed: Improved compatibility for OmniThreadLibrary and AsyncCalls 27)..Fixed: Included fix for QC #72147 28)..Fixed: 64-bit MS Debug Info Provider (please, re-setup cache opt
ion
s using configurat
ion
dialog) 29)..Fixed: "Deferred call stacks" opt
ion
failed to capture call stack when except
ion
is re-raised between threads 30)..Fixed: "Deferred call stacks" opt
ion
may produce cutted call stack in rare cases 31)..Fixed: Several minor call stacks improvements and optimizat
ion
s 32)..Fixed: Several 64-bit Pointer Integer convert
ion
issues 33)..Fixed: Multi-threading deadlock issue 34)..Fixed: Black screenshots in 64 bit applicat
ion
s 35)..Fixed: Copying to clipboard hot-key was registered globally 36)..Fixed: Shell (mailto) send method may fail (64 bit) 37)..Fixed: Possible wrong file paths for attaches in (S)MAPI send methods 38)..Fixed: Environment variables were not expanded in MAPI send method 39)..Fixed: (non-Unicode IDE) EurekaLog is not activated when applicat
ion
started from folder with Unicode characters 40)..Fixed: Encrypted call stacks may be encrypted partially by EurekaLog Viewer in rare cases 41)..Fixed: Crash when sending leak report with visual progress dialog (only some IDEs are affected) 42)..Fixed: ecc32/emake could not see external configurat
ion
file with the same name as project (e.g. Project1.eof for Project1.dpr) 43)..Fixed: Added missed RTL implementat
ion
for ExternalProps in Delphi 6 (affects Mantis sending) 44)..Fixed: IDE crash when switching to threads window 45)..Changed: Removed temporal solut
ion
which was used before opt
ion
to defer call stack creat
ion
was introduced 46)..Changed: "Default EurekaLog state in new threads" opt
ion
is changed from Boolean flag into enum. You need to re-setup this opt
ion
47)..Changed: Disable EurekaLog for thread when creating call stack or handle except
ion
- this increases stability and performance 48)..Changed: LastExcept
ion
property is remove from except
ion
manager as not thread safe. Use LastThreadExcept
ion
property instead 49)..Changed: Lock/Unlock from thread manager and except
ion
manager are removed to avoid deadlocks 50)..Changed: ThreadsSnapshot tool now tries to capture call stack without injecting DLL 51)..Changed: Build events now runs with CREATE_NO_WINDOW flag (console window is hidden) 52)..Improved: More articles in help EurekaLog 7.0.06 (7.0.6.0), 1-June-2013 1)....Added: Experimental 64 bit C++ Builder support 2)....Added: New tab in EurekaLog project opt
ion
s: "External tools" 3)....Added: Opt
ion
to catch all IDE errors (to debug your own IDE packages) 4)....Added: Opt
ion
to catch only except
ion
s from current module 5)....Added: Opt
ion
to defer building call stack 6)....Added: RAD Studio XE4 support 7)....Added: Support for AppWave 8)....Fixed: Fixed event handlers declarat
ion
s for the EurekaLog component 9)....Fixed: Infinite recursive calls when using ToString from EndReport event handler 10)..Fixed: UPX compatibility issue 11)..Fixed: Range check errors for system error codes 12)..Fixed: Rare IDE stack overflow 13)..Fixed: JIRA unit was not added automatically 14)..Fixed: EurekaLog no longer tries to check for leaks when memory manager filter is disabled 15)..Fixed: Possible deadlock on shutdown with freeze checks active 16)..Fixed: Issues with settings dialog and Win32 Service applicat
ion
type 17)..Fixed: ThreadSnapshot tool was not able to take snapshots of Win64 processes 18)..Fixed: WCT is disabled for leaks 19)..Fixed: TContext declarat
ion
s for Win64 20)..Fixed: Check for updates now correctly sets time of last check 21)..Fixed: (Win64) Several Pointer Integer convert
ion
errors 22)..Fixed: Internal error when except
ion
info object was deleted while it was still used by SysUtils except
ion
object 23)..Fixed: Semeral problems with "EurekaLog look & feel" style for EurekaLog error dialog 24)..Fixed: Using text collect
ion
resets except
ion
filters 25)..Fixed: Rare access violat
ion
if registering event handlers is placed too early 26)..Fixed: SMTP RFC date formatting 27)..Fixed: Rare empty call stack bug 28)..Fixed: Hang detect
ion
was not working if EurekaLog was disabled in threads 29)..Fixed: AV for double-free TEncoding 30)..Changed: ecc32/emake no longer alters arguments for dcc32/make unless new opt
ion
s --el_add_default_opt
ion
s is specified 31)..Changed: Save/load opt
ion
s methods was moved to TEurekaModuleOpt
ion
s class 32)..Changed: Saving opt
ion
s to EOF file now adds hidden opt
ion
s and removes obsolete opt
ion
s (only when compatibility mode is off) 33)..Changed: Compiling installed packages now silently ignores EurekaLog instead of showing "File is in use" error message 34)..Improved: More readable disk/memory sizes in bug reports 35)..Improved: More descriptive settings dialog when using external configurat
ion
36)..Improved: ThreadSnapshot tool now aquired DEBUG priviledge for taking snapshot. This allows it to bypass security access checks when opening target process. 37)..Improved: Changed BugID default generat
ion
to include error code for OS errors and error message for DB errors 38)..Improved: Mantis API (WSDL) was updated to the latest vers
ion
(1.2.14) 39)..Improved: IntraWeb compatibility (old and new vers
ion
s) 40)..Improved: COM applicat
ion
s compatibility 41)..Improved: Build events now accept shell commands 42)..Improved: More articles in help EurekaLog 7.0.05 (7.0.5.0), 7-February-2013 1)....Added: JIRA support 2)....Added: Virtual machine detect
ion
(new field in bug reports) 3)....Fixed: "Use Main Module opt
ion
s" opt
ion
was loading empty opt
ion
s for some cases 4)....Fixed: Wrong record declarat
ion
s for Simple MAPI on Win64 5)....Fixed: Performance issues with batch module opt
ion
s updating 6)....Fixed: Wrong leaks report with both MemLeaks/ResLeaks opt
ion
s active 7)....Fixed: Wrong info for nested except
ion
s in some cases 8)....Fixed: AV under debugger for Win64 (added support for _TExitDllExcept
ion
) 9)....Fixed: Wrong record declarat
ion
s for process/thread info on Win64 10)..Fixed: Support for FinalBuilder on XE2/XE3 with spaces in file paths 11)..Fixed: Rare double-free of module informat
ion
(ModuleInfoList) 12)..Fixed: Rare External Except
ion
C000071C on shutdown (only under debuggger) 13)..Fixed: Added large addresses support in Viewer 14)..Fixed: Counter opt
ion
s in memory leaks category is now working properly 15)..Fixed: Rare range-check error in TEurekaModulesList.AddModuleFromFileName 16)..Fixed: FTP force directories dead lock 17)..Fixed: Fixed wrong index being used when clearing compatibility mode (EurekaLog project opt
ion
s dialog) 18)..Fixed: Default thread state do not affect main thread now 19)..Fixed: Sometimes wrong thread may be used when altering EurekaLog active state for external thread 20)..Fixed: Wrong DNS lookup on ANSI 21)..Fixed: Problems with IDE expert and projects on network paths 22)..Fixed: Added support for arguments in URLs (HTTP sending) 23)..Fixed: Possible deadlock in multithreaded applicat
ion
s 24)..Fixed: Problems with unicode characters in project files on non-Unicode IDEs 25)..Fixed: Infinite recursive calls when using ToString from EndReport event handler 26)..Fixed: Win64 GetCaller now returns pointer to call instruct
ion
, not return address 27)..Improved: Standalone Editor do not force save/load folder by default 28)..Improved: DLL profile now can use addit
ion
al applicat
ion
type hooks automatically 29)..Improved: EurekaLog now able to work with read-only projects (see help for more info) EurekaLog 7.0.04 (7.0.4.0), 2-December-2012 1)....Added: Support for nested except
ion
s in DLLs 2)....Fixed: Opt
ion
s bug in EurekaLogSendEmail funct
ion
3)....Fixed: Weird behaviour for steps to reproduce and custom fields 4)....Fixed: Installat
ion
for single personality (BDS) 5)....Fixed: Range check error in EModules 6)....Fixed: Bug in except
ion
destroy hook 7)....Fixed: OnExcept
ion
Notify event is no longer called for handled except
ion
s without opt
ion
checked 8)....Fixed: DEP checks on startup no longer cause except
ion
9)....Fixed: Invalid declarat
ion
for MS Debug API 10)..Fixed: OLE mode change error for "Test" send button 11)..Fixed: Fixes for multiply loading of the same DLL 12)..Fixed: Removed PNG compress
ion
from icons (tools) 13)..Fixed: Range-check error in dialogs with EurekaLog style enabled 14)..Fixed: Send progress dialog may keep busy forever processing window messages (message flood from rapid applicat
ion
GUI updates) 15)..Fixed: Thread pausing opt
ion
s now work correctly 16)..Improved: New features in except
ion
filters - marking except
ion
s as "expected", filtering by properties (RTTI) 17)..Improved: Recovery from memory errors without debugging memory manager 18)..Improved: Viewer's password edit now hides password with asterisks 19)..Updated: Changed names of .inc files to avoid name conflicts with other libraries 20)..Updated: Help EurekaLog 7.0.03 (7.0.3.0), 6-October-2012 1)....Fixed: Removed some consts keywords for event handlers, so now C++ Builder can alter arguments (this change may require you to adjust your custom code) 2)....Fixed: Fallback code for false-positive results on memory probing 3)....Fixed: Range check errors in SSL/TLS implementat
ion
4)....Fixed: "EurekaLog is not active" error message during send testing 5)....Fixed: Incorrect memory probing when DEP is off (old systems) 6)....Fixed: Installat
ion
of 64-bit BPLs 7)....Fixed: Dialog preview 8)....Fixed: Win64 fixes for XE3 9)....Fixed: Support for project groups (mixed project types) 10)..Fixed: Windows 2000 hooks compatibility 11)..Fixed: mailto double quotes escaping 12)..Fixed: Simple MAPI WOW compatibility 13)..Fixed: Simple MAPI modal issues 14)..Fixed: Various range check errors 15)..Changed: Removed minor vers
ion
number from program group name 16)..Updated: Help EurekaLog 7.0.02 hot-fix 1 (7.0.2.1), 12-September-2012 1)....Fixed: Range check error in Viewer 2)....Fixed: Bug in hooking code EurekaLog 7.0.02 (7.0.2.0), 11-September-2012 1)....Added: Improved memory problems detect
ion
2)....Added: Minor IDE Expert usability improvements 3)....Added: Auto-size feature for detailed error dialog 4)....Added: Workaround for QC #106935 5)....Added: Workaround for bug in InvokeRegistry (SOAP/Mantis) 6)....Fixed: Nested OS except
ion
s 7)....Fixed: Multiply Win64 fixes 8)....Fixed: Compatibility mode fixes 9)....Fixed: Altered behaviour of "Add BugID/Date/ComputerName" opt
ion
s 10)..Fixed: Blank screenshots 11)..Fixed: Check file for corrupt
ion
s 12)..Fixed: Viewer is unable to decrypt certain bug reports 13)..Fixed: Internal DoNoTouch opt
ion
now works for post-processing and condt
ion
als 14)..Fixed: Possible out of memory error for "Do not store class/procedure names" opt
ion
15)..Fixed: EurekaLog did not properly install itself when there is only Delphi installed, but no C++ Builder of the same vers
ion
(or visa versa) 16)..Fixed: Wrong argument for OnRaise event 17)..Fixed: Handling memory errors in initializat
ion
/finalizat
ion
sect
ion
s 18)..Fixed: Updating steps to reproduce and user e-mail in bug report 19)..Fixed: Proper Success/Failure for some errors during SMTP send 20)..Added: Workaround for wrong GUI fonts 21)..Added: Delphi XE3 support 22)..Added: Individual opt
ion
s for each except
ion
EurekaLog 7.0.01 (7.0.1.0), 28-June-2012 1)....Added: New "Modal window" opt
ion
(MS Classic and EurekaLog dialogs) 2)....Added: New "Owned window" opt
ion
(MS Classic and EurekaLog dialogs) 3)....Added: New "Catch EurekaLog IDE Expert errors" opt
ion
4)....Added: Backup memory manager to recover from critical errors 5)....Added: Alternative methods to provide addit
ion
al features when memory filter is not set 6)....Fixed: Contains fixes from hotfixes 1-3 7)....Fixed: Performance improvements 8)....Fixed: Improved IDE Expert's speed, stability and compatibility with other 3rd party
extens
ion
s 9)....Fixed: MS Classic dialog size adjustments for large "click here" translat
ion
s 10)..Fixed: Fixed resetting few EurekaLog project opt
ion
s to defaults 11)..Fixed: Multiplying except
ion
filters when opt
ion
s are assigned (for example: when switching to/from "Custom" page in project opt
ion
s) 12)..Fixed: (Compatibility mode) Fixed send opt
ion
s merging 13)..Fixed: Updated help EurekaLog 7.0 hot-fix 3 (7.0.0.273), 20-June-2012 --------------------------- 1)....Fixed: ERangeError in EResLeaks (THandle Integer) 2)....Fixed: C++ Builder breakpoints for large projects 3)....Fixed: Help (updates policy changed) 4)....Fixed: Text collect
ion
s applying 5)....Fixed: Build events are now called for unlocked file 6)....Fixed: Proper handling of C++ Builder project opt
ion
s files from Delphi code (settings editor and IDE expert) 7)....Fixed: Terminate/Checked sub-opt
ion
for MS Classic dialog 8)....Fixed: Confusing message for already post-processed executables 9)....Fixed: Access violat
ion
for some EurekaLog IDE menu items when no project was loaded 10)..Fixed: Invoking help for "Variables" window 11)..Fixed: EurekaLog Viewer vers
ion
info 12)..Fixed: Events in components 13)..Added: Retry opt
ion
for "Sorry, you must close all running IDE instances before installat
ion
" 14)..Added: Italian translat
ion
15)..Added: Actual change log is now included into installer 16)..Added: Even more setup logging 17)..Added: New help articles (recompilat
ion
and manual installat
ion
) EurekaLog 7.0 hot-fix 2 (7.0.0.261), 10-June-2012 --------------------------- 1)....Fixed: Wrong vers
ion
info reporting to IDE 2)....Added: Workaround for Delphi 2005 TListView bug 3)....Added: Workaround for possible invalid FPU state in except
ion
handlers 4)....Added: Missed declarat
ion
s for Except
ion
Log (compatibility mode) 5)....Fixed: Work for unsaved projects 6)....Added: Escaping for '--' in opt
ion
s (confuses IDE's XML parsing) 7)....Added: Storing thread's class/name in call stack for terminated threads 8)....Added: More setup logging 9)....Fixed: Help (broken links) 10)..Added: "Upgrade to EurekaLog 7" help topic 11)..Fixed: Clean up installed files EurekaLog 7.0 hot-fix 1 (7.0.0.256), 6-June-2012 --------------------------- 1)....Fixed: Invalid Format() arguments in ELogBuilder. EurekaLog 7.0, 1-June-2012 --------------------------- 1)....Improved: Main change - EurekaLog's core was rewritten (refactored) to allow more easy modificat
ion
and remove hacks. 2)....Improved: New plugin-like architecture now allows you to exclude unused code. 3)....Improved: New plugin-like architecture now allows you to easily extends EurekaLog. 4)....Improved: Greatly extended documentat
ion
. 5)....Improved: Installer is now localized. 6)....Improved: Greatly speed ups creat
ion
of minimal bug report (with most informat
ion
disabled). 7)....Changed: EurekaLog's root IDE menu was relocated to under Tools and extended with new items. 8)....Added: New examples. 9)....Added: New tools (address lookup, error lookup, threads snapshot, standalone settings editor). 10)..Added: Support for DBG/PDB formats of debug informat
ion
(including symbol
server
support and auto-downloading). 11)..Added: Support for madExcept debug informat
ion
(experimental). 12)..Added: WER (Windows Error Reporting) support. 13)..Added: Full unicode support. 14)..Added: Profess
ion
al and Trial edit
ion
s: added source code (interface sect
ion
s only) 15)..Improved: Dialogs - new opt
ion
s and new customizat
ion
possibilities: 16)..Added: All GUI dialogs: ability to test dialog directly from configurat
ion
dialog by displaying a sample window with currently specified settings. 17)..Improved: All GUI dialogs: dialogs are DPI-awared now (auto-scale for different DPI). 18)..Added: MessageBox dialog: added detailed mode (shows a compact call stack). 19)..Added: MessageBox dialog: added ability for asking a send consent. 20)..Added: MessageBox dialog: added support to switch to "native" message box for applicat
ion
. 21)..Added: MS Classic dialog: added control over "user e-mail" edit's visibility. 22)..Added: MS Classic dialog: added ability to personalize dialog view with applicat
ion
's name and icon. 23)..Added: MS Classic dialog: added ability to show terminate/restart checkbox initially checked. 24)..Added: EurekaLog dialog: added ability to personalize dialog view with applicat
ion
's name and icon. 25)..Added: EurekaLog dialog: added ability to show terminate/restart checkbox initially checked. 26)..Added: EurekaLog dialog: added ability to switch back to non-detailed view. 27)..Added: WEB dialog: added new tags to customize bug report page. 28)..Improved: WEB dialog: improved support for unicode and charset. 29)..Added: New dialog type: RTL dialog. 30)..Added: New dialog type: console output. 31)..Added: New dialog type: system logging. 32)..Added: New dialog type: Windows Error Reporting. 33)..Improved: Sending - new opt
ion
s and new customizat
ion
possibilities: 34)..Added: All send methods: added ability to setup multiply send methods. 35)..Added: All send methods: added ability to change send method order. 36)..Added: All send methods: added separate settings for each send method. 37)..Added: All send methods: ability to test send method directly from configurat
ion
dialog by sending a demo bug report. 38)..Added: SMTP client send method: added SSL support. 39)..Added: SMTP client send method: added TLS support. 40)..Added: SMTP client send method: added opt
ion
for using real e-mail address. 41)..Added: SMTP
server
send method: added opt
ion
for using real e-mail address. 42)..Added: HTTP upload send method: added support for custom backward feedback messages. 43)..Added: FTP upload send method: added creating folders on FTP (like remote ForceDirectories). 44)..Added: Mantis send method: added API support (MantisConnect, out-of-the-box since Mantis 1.1.0, available as add-on for previous vers
ion
s). 45)..Added: Mantis send method: added support for custom "Count" field. 46)..Added: Mantis send method: added opt
ion
s for controlling duplicates. 47)..Added: Mantis send method: added support for SSL/TLS. 48)..Added: FogBugz send method: added API support (out-of-the-box since ForBugz 7, available as add-on for FogBugz 6). 49)..Added: FogBugz send method: EurekaLog will update "Occurrences" field (count of bugs). 50)..Added: FogBugz send method: EurekaLog will respect "Stop reporting" opt
ion
(BugzScout's setting). 51)..Added: FogBugz send method: EurekaLog will respect "Scout message" opt
ion
(BugzScout's setting). 52)..Added: FogBugz send method: EurekaLog will store client's e-mail as issue's correspondent. 53)..Added: FogBugz send method: added opt
ion
s for controlling duplicates. 54)..Added: FogBugz send method: added support for "Area" field. 55)..Added: FogBugz send method: added support for SSL/TLS. 56)..Added: BugZilla send method: added API support. 57)..Added: BugZilla send method: added support for custom "Count" field. 58)..Added: BugZilla send method: added opt
ion
s for controlling duplicates. 59)..Added: BugZilla send method: added support for SSL/TLS. 60)..Added: New send method: Shell (mailto protocol). 61)..Added: New send method: extended MAPI. 62)..Added: Support for separate code and debug info inject
ion
. 63)..Added: Ability to use custom units before EurekaLog's units. 64)..Added: Support for external configurat
ion
file in IDE expert. 65)..Added: Now EurekaLog stores only those project opt
ion
s which are different from defaults (to save disk space and reduce noise in project file). 66)..Added: Now EurekaLog stores project opt
ion
s sorted (alphabet order). 67)..Added: Separate settings for saving modules and processes lists to bug report. 68)..Added: Support for taking screenshots of multiply monitors. 69)..Added: More screenshot customizat
ion
opt
ion
s. 70)..Added: More control over bug report's file names. 71)..Added: New environment variables. 72)..Added: Deleting .map file after compilat
ion
. 73)..Added: Support for different .dpr and .dproj file names. 74)..Improved: memory leaks detect
ion
feature - new opt
ion
s and new customizat
ion
possibilities: 75)..Added: Ability to track memory problems without activat
ion
of leaks checking. 76)..Added: Support for sharing memory manager. 77)..Added: Support for tracking leaks in applicat
ion
s built with run-time packages. 78)..Added: Opt
ion
to zero-fill freed memory. 79)..Added: Opt
ion
to enable leaks detect
ion
only when running under debugger. 80)..Added: Opt
ion
for manual activat
ion
control for leaks detect
ion
(via command-line switches). 81)..Added: Opt
ion
to select stack tracing method for memory problems. 82)..Added: Opt
ion
to trigger memory leak reporting only for large leaked memory's size. 83)..Added: Opt
ion
to control limit of number of reported leak. 84)..Added: CheckHeap funct
ion
to force check of heap's consistency. 85)..Added: DumpAllocat
ion
sToFile funct
ion
to save informat
ion
about allocated memory to log file. 86)..Added: Registered leaks feature. 87)..Added: Run-time control over memory leak registering. 88)..Added: New recognized leak type: String (both ANSI and Unicode are supported). 89)..Added: Memory features support for C++ Builder. 90)..Added: Resource leaks detect
ion
feature. 91)..Improved: Compilat
ion
speed increased. 92)..Added: Support for generics in debug informat
ion
. 93)..Added: Chained/nested except
ion
s support. 94)..Added: Wait Chain Traversal support. 95)..Added: Support for named threads. 96)..Added: Addit
ion
al informat
ion
for threads in call stack. 97)..Improved: EurekaLog Viewer Tool: 98)..Added: Now Viewer has its own help file 99)..Added: Viewer now supports a FireBird based database on local file or remote
server
. 100).Added: You can have more that one user account for FireBird based database. 101).Added: Viewer now can be launched in View mode (Viewer can be configured to any DB or View mode). 102).Added: Viewer's database now supports storing files, associated with the report (you can also add and remove files manually). 103).Added: Viewer supports "Import" and "View" commands for report files. 104).Improved: Extended support for more log formats (XML, packed ELF, etc). 105).Added: Columns in report's list now can be configured (you can hide and show them). 106).Added: There are a plenty of new columns added to report's list. 107).Added: Ability of auto-download reports from e-mail account. 108).Improved: printing - now you can print the entire report (including screenshots). Old behaviour of printing just one tab (call stack only, for example) also remains. 109).Added: Viewer can now have more that one run-time instance . 110).Added: File import status dialog is now configurable (you can disable it, if you want to). 111).Added: There is a preview area for screenshots, available in reports. 112).Improved: Now Viewer is more Vista-friendly (i.e. file associat
ion
s are managed in HKCU, rather that in HKLM, storing configurat
ion
in user's Applicat
ion
Data, etc, etc). 113).Added: Report's list now supports multi-select, so operat
ion
s can be performed on many reports at time. 114).Added: There are plenty of new command line abilities, like specifying several files and new switches. 115).Improved: Bunch of minor changes and improvements. WARNING: -------- There are many changes in this release. See the "Changed from the old 6.x vers
ion
" help topic for further informat
ion
! EurekaLog 7 also have "EurekaLog 6 backward compatibility mode". Please, refer to help file for more informat
ion
. We also have the detailed "Upgrade guide" in our help system.
Visual C++ 编程资源大全(英文源码 控件)
1,01.zip
3D Text
显示3D文字(6KB)
2,02.zip
A button within a button
按纽中的按纽(13KB)
3,03.zip
Flat Owner Drawn Buttons
浮动的自画按纽(13KB)
4,04.zip
Flat-look Buttons
浮动的工具条按纽(6KB)
5,05.zip
Showing disabled combo text in black
ComboBox的只读属性(5KB)
6,06.zip
Combobox Color Picker
选择颜色的ComboBox(6KB)
7,07.zip
Switch between drop down & drop list mode
处理drop down和drop list方式之间的转换(32KB)
8,08.zip
Drop down a popdown window instead of a dropdown list from a combobox 在ComboBox中用Drop down方式代替dropdown list方式(32KB)
9,09.zip
Change listbox width of combo boxes
在ComboBox中改变列表框的宽度(2KB)
10,10.zip
Owner Drawn Font Select
ion
ComboBox
自画的字体选择ComboBox(5KB)
11,add.zip
This sample was developed on stage at the Washington Software Associat
ion
's WinSIG meeting on the ninth of September, 1996 using Visual C++ 4.2. (13KB)
12,apibrow.zip
The project demonstrates the use of common control callback items in an MFC applicat
ion
that manages a CListCtrl control in a CListView. (16KB)
13,colorlb.zip
The COLORLB sample shows how to implement an owner-draw list box. (53KB)
14,comper.zip
COMPER is an example of the ATL Composite Control. (123KB)
15,custfile.zip
This sample shows how to add a couple of extra buttons to a CFileDialog. (23KB)
16,custlist.zip
CUSTLIST shows how to use custom draw in a list view control. (23KB)
17,div.zip
This sample shows how floating-point except
ion
s may be captured and handled in an MFC applicat
ion
. (14KB)
18,doodads.zip
The project demonstrates many Windows common controls, including the
extens
ive use of image lists. (83KB)
19,doubleedit.zip
DOULBEEDIT shows how to sublcass an edit control inside a form view and react to double-clicks on the edit control by handling the WM_LBTNDOUBLECLICK message. (18KB)
20,dumpsome.zip
DUMPSOME is a project for Visual C++ 4.x that shows how to write a CGI
server
extens
ion
which uses MFC and DAO. (8KB)
21,edpos.zip
EDPOS is a MDI-based MFC applicat
ion
that shows an edit control in its primary view. (35KB)
22,edstream.zip
this sample shows how to use the StreamIn() and StreamOut() members of the CRichEditCtrl class in MFC. (36KB)
23,findrich.zip
RICHFIND is a dialog-based MFC applicat
ion
for Visual C++ 6.0. (24KB)
24,floatlist.zip
The FloatList sample is an MFC-based SDI applicat
ion
with an edit view as its main window. (49KB)
25,fully.zip
FULLY shows how to make an MFC applicat
ion
make one of its views go full-screen active. (43KB)
26,holder.zip
HOLDER contains the Internet Explorer web browser control using CHtmlView in an MFC applicat
ion
. (67KB)
27,langload.zip
LANGLOAD shows how to use the LANGUAGE keyword in a resource file to mark language-specific resources. (2KB)
28,listfind.zip
This sample shows how to use the CList<> template. (9KB)
29,ndbrow.zip
This Visual C++ 6 project shows how to create an MDI applicat
ion
that hosts CHtmlView (20KB)
30,mfctalk.zip
MFCTALK was originally published with Mike's article on ISPAI programming with MFC in the May (23KB)
31,mfctlist.zip
MCTTLIST is a dialog-based applicat
ion
that provides the same funct
ion
ality as the TLIST sample in the SDK. (28KB)
32,mruless.zip
MRULESS shows a way to strip the empty "Recent Files" item off the "File" menu when there are no entries in the MRU. (32KB)
33,mtprint.zip
MTPRINT demonstrates the use of a secondary thread to perform printing in an applicat
ion
that uses MFC's document/view architecture. (21KB)
34,multitop.zip
MULTITOP shows how to write an SDI applicat
ion
which has multiple top level windows and uses the MFC doc/view architecture.(30KB)
35,njfind16.zip
This 16-bit DOS tool traverses all directories on all drives on your machine and finds files which match the template you specify. (33KB)
36,noform.zip
This sample shows how to make an applicat
ion
that doesn't have the doc/view architecture but still offers a form in the client area of the applicat
ion
's main window. (33KB)
37,odcombo.zip
ODCOMBO.ZIP is a VC++ 6.0 dialog-based project that contians an onwer-drawn combo box. (23KB)
38,picknew.zip
It demonstrates calling CDocTemplate::OpenDocumentFile(). (49KB)
39,primecon.zip
PrimeCon is a VC++ 6.0 sample which uses MFC in a console applicat
ion
.(60KB)
40,q1.zip
Q1 is a VC++ 6.0 project that creates two threads. (79KB)
41,scrl.zip
This dialog-based applicat
ion
shows how to use the CListCtrl::Scroll() member. (14KB)
42,spinrange.zip
SpinRange is a VC++ 6.0 project that shows how to subclass a CSpinButtonControl to dramatically extend the range of the control. (24KB)
43,splits.zip
This VC++ 5.0 project shows how to manage views within a splitter window. (36KB)
44,stealth.zip
This SDI applicat
ion
shows how to create an applicat
ion
that doesn't show up in the task bar in Windows 95 or Windows NT 4.0. (29KB)
45,tenhook.zip
Because the Windows dialog manager eats all keystrokes, you'll need to install a Windows keyboard hook if you want to get keyboard input to your dialog without other controls getting in the way. (19KB)
46,treestore.zip
Tree views are capable of storing hierarchical data, which isn't intuitively serialized. (41KB)
47,writeres.zip
This console applicat
ion
shows how to bake resources into console applicat
ion
s. (566KB)
48,xctrl.zip
The XCTRL sample is an ATL "full control" ATL Control. (100KB)
49,Button_Tute.zip
How to get a button control wired-in and working(34KB)
50,BetterBmpButton_src.zip
An improvement on the CBitmapButton class.(22KB)
51,hoverbutton.zip
A simple drop-in class that provides a 'hot' look button using the _TrackMouseEvent funct
ion
(17KB)
52,CLedButton_src.zip
A button that looks like a LED.(24KB)
53,EllipticalButtons.zip
A class that turns rectangular buttons into elliptic buttons.(29KB)
54,RoundButtons.zip
A class that turns rectangular buttons into round buttons.(17KB)
55,AniButton.zip
A class that show AVIs inside a button.(49KB)
56,CButtonST26.zip
A fully featured owner-draw button class - it's got the lot!(225KB)
57,coolbtn.zip
This article shows the use of a Push button with a drop down menu, similar to the one found in the
Office
2000 suite.(31KB)
58,CustomButtons.zip
A class to make working with radio buttons easier, and another for custom drawing buttons(45KB)
59,CWBButton.zip
CWBButton is a resizable bitmap button like GTK+ or Window Blinds.(44KB)
60,ComboDropWidth.zip
A simple tutorial explaining how to set the width of a combo dropdown list so that all items are fully visible(18KB)
61,ComboBox_Tut_demo.zip
An entry level tutorial on using the CComboBox control(65KB)
62,ListBox_Tut_src.zip
An entry level tutorial on using the CListBox control(62KB)
63,BitmapPickerCombo.zip
A combo box that can be used to display bitmaps(26KB)
64,mccombobox.zip
A multicolumn, customizable, editable combobox(27KB)
65,disableditemscombobox_src.zip
combobox with disabled items(3KB)
66,checkcombo.zip
A combo box with check boxes(21KB)
67,ColourPickerCB.zip
A combobox derived class that provides a simple color picker(36KB)
68,ComboBoxInit_src.zip
Learn how to programmatically initialize a combo box.(3KB)
69,IconComboBox_src.zip
2 Freeware MFC icon select
ion
combo box classes(19KB)
70,ComboComplet
ion
_demo.zip
A combobox that autocompletes as you type(17KB)
71,IDComboDemo.zip
An extremely simple but useful CComboBox entens
ion
(12KB)
72,MRUCombo.zip
A combobox that encapsulates the funct
ion
ality of CRecentFileList(29KB)
73,combobox_flatcombo.zip
A drop-in replacement combobox that gives your apps the flat
Office
-style look(53KB)
74,readonlycombo_src.zip
Show a disabled dropdown style combobox like a read only edit box.(2KB)
75,VBLikeCombo.zip
Creates a combo box similar to those in Visual Basic.(27KB)
76,ComboTree.zip
ComboBox with a tree control drop down(36KB)
77,multichecklistbox.zip
Extends the CCheckListBox class to have multiple check box columns(19KB)
78,disableditemslistbox_src.zip
Listbox with disabled items.(2KB)
79,ImageLB.zip
A list box for viewing images(25KB)
80,LVCustomDraw.zip
Using the custom-draw features in vers
ion
4.70 of the common controls to customise the look and feel of list controls(28KB)
81,ListCtrlDemo.zip
Everything you need to know about using the standard list control in your applicat
ion
s(68KB)
82,filedroplistctrl.zip
This article explains how to support file drag and drop in your CWnd-derived object(40KB)
83,DrivePickerList.zip
A control that shows drive names and icons like Explorer(23KB)
84,ListEditor.zip
This article shows you how you can navigate through a multi-column, editable list view(42KB)
85,LogControl_src.zip
Learn how to use printf-like funct
ion
ality to debug your GUI applicat
ion
s.(46KB)
86,PropertyListCtrl.zip
An object properties list control than can change based on the objects state.(64KB)
87,supergrid.zip
A combinat
ion
list control and tree control with checkbox capability(87KB)
88,Listview_callback.zip
Shows how to use text callbacks in list controls(16KB)
89,HeaderCtrlEx.zip
How to make the CListCtrl's header Multiline(29KB)
90,listPrint_demo.zip
Printing the contents of a CListCtrl or CListView with multiple pages(56KB)
91,TreeListCtrlGerolf.zip
A custom-drawn tree-list hybrid, with explanat
ion
s on how the control was developed.(39KB)
92,PrtTView_demo.zip
Code to add printing capabilities to a Tree View(32KB)
93,treelist.zip
A tree control / list control hybrid(81KB)
94,FileTree_src.zip
Implements a tree control similar to the left hand side of Windows Explorer.(46KB)
95,TreeOpt_src.zip
A freeware MFC class to provide a tree opt
ion
s control.(32KB)
96,ShTree.zip
A very simple manager for shared folders using tree control drag & drop (42KB)
97,NetworkTreeCtrl.zip
A CWaitingTreeCtrl-derived class to display network resources(40KB)
98,ProgressHourglassFX.zip
Two animat
ion
provider classes to add animat
ion
effects to any CWaitingTreeCtrl-derived class(33KB)
99,ShellTreeCtrl.zip
A CWaitingTreeCtrl-derived class to display Shell's resources(39KB)
100,WaitingTreeCtrl_src.zip
A CTreeCtrl derived class that populates the branches of a tree only when necessary, with opt
ion
al visual effects.(5KB)
101,PathPicker.zip
An article on Browsing my computer and the network using a TreeCtrl(82KB)
102,Tree2Excel.zip
This article is a light sample showing how to iterate and export a tree control content to an Excel file.(44KB)
103,lbtab.zip
A better looking tab control(89KB)
104,CXTabControl_demo.zip
An easier tab control(32KB)
105,ResizableProperties.zip
Two CPropertySheet/CPropertyPage derived classes to implement resizable property sheets or wizard dialogs with MFC(96KB)
106,saprefs.zip
A base class for a prefereneces dialog, similar to that used in Netscape(39KB)
107,wizardpropertysheet_src.zip
A simply class to turn CPropertySheet into wizard mode without needing to alert the property pages within(2KB)
108,AutoRichEditCtrl.zip
CAutoRichEditCtrl - automate rich edit formatting and RTF handling(49KB)
109,AutomaticSplitter.zip
A tutorial that shows how to automatically split a view, and also how to indicate which view has the focus(31KB)
110,usefulsplitter.zip
An
extens
ion
to MFCs CSplitterWnd that provides splitter locking and dynamic view replacement(25KB)
111,rulers_src.zip
Using fixed panes to add rulers to your view(5KB)
112,StaticCtrl_Tut_demo.zip
An entry level tutorial on using the CStatic control(64KB)
113,rotated_bevel.zip
A bevelline control that displays vertical and horizontal text(83KB)
114,Ticker.zip
A class that provides a news/stock ticker for your MFC applicat
ion
s(47KB)
115,StaticCounter.zip
A control to display time, floating point numbers or integers using an LED digital-style display(41KB)
116,CStaticTime.zip
A control to display times and numbers using an LED digital-style display(52KB)
117,alexf_histogram.zip
A simple histogram control for displaying data(23KB)
118,static_fader.zip
A CStatic class that gently fades text into view(99KB)
119,CLabel_demo.zip
A fully stocked owner drawn CStatic class(52KB)
120,DigiString.zip
A control to display text or numbers with a 14 or 7 segment display(176KB)
121,cstatic_filespec.zip
Lightweight class for displaying long filespecs that may need to be truncated(16KB)
122,tip_static.zip
A tip-of-the-day control that uses a cool sliding effect to show each tip(133KB)
123,UsingCtrlsInDialogs_Tut_demo.zip
An entry level tutorial on using one of the Windows Common Controls in a dialog(42KB)
124,CmdUIDemo.zip
A C++/MFC sample how to implement UI notificat
ion
s for user-defined controls(15KB)
125,SubclassDemo.zip
An introduct
ion
to subclassing the Windows common controls using MFC(19KB)
126,CustomControl.zip
An introduct
ion
to creating custom controls using MFC(22KB)
127,graph2d.zip
A comprehensive set of classes for displaying 2 dimens
ion
al data(386KB)
128,3dMeter_demo.zip
An Analog Meter Control for displaying real-time data(42KB)
129,analog_meter.zip
A control that displays a numerical value as an analog meter(45KB)
130,oscope.zip
A control that graphically displays numerical informat
ion
(31KB)
131,swing_demo.zip
A set of MFC classes the duplicate the Java Swing look and feel(76KB)
132,ReportCtrl.zip
An Outlook 98/2000 Style SuperGrid Report Control that tries to overcome some of the weaknesses of other implementat
ion
s.(179KB)
133,controls_pager.zip
This article presents a wrapper class for the pager control(28KB)
134,RulerCtrl.zip
A simple ruler control to allow users to set margins or indents(21KB)
135,CSizer.zip
A class that provides the ability to move and size controls at run-time (34KB)
136,controls_avi_demo.zip
Demonstrates the use of the windows animat
ion
control(145KB)
137,CMapPin_src.zip
A Freeware MFC class to implement Map pins.(286KB)
138,CFCtrl.zip
The simplest way to change color, font or set blinking mode for any standard control(53KB)
139,CPushPin_src.zip
A Freeware MFC PushPin button class.(15KB)
140,CWndSlider.zip
An article on using an Outlook style window slider control.(98KB)
141,cxwndAnimate_demo.zip
An animat
ion
control that uses a bitmap imagelist instead of an AVI file(25KB)
142,hyperlink.zip
A simple drop-in hyperlink control(28KB)
143,ViewObjSnap.zip
How to take a snapshot of an OCX without using HWNDs.(38KB)
144,lbspin.zip
A spin button whose arrows automatically disable themselves when they are at their maximum or minimum value.(27KB)
145,SubclassWnd_demo.zip
A plug in class that allows you to intercept and handle messages for any window class(266KB)
146,resize_at_runtime_demo.zip
A method to allow the user to visually resize and posit
ion
any control at run time(15KB)
147,RoundSliderCtrl.zip
A round slider control to allow users to adjust an angle or similar values(90KB)
148,EasyFavorite.zip
An applicat
ion
demonstrating the windows Thumbnail control(42KB)
149,TGroupBox.zip
A very simple group box replacement to enhance your user interface(3KB)
150,WndImg.zip
An easy-to-use control to display bitmaps (stretch, scale, tile)(128KB)
151,URLCell_src.zip
A new class that adds hyperlink support to the MFC Grid Control(3KB)
152,gridctrl.zip
A fully featured MFC grid control for displaying tabular data. The grid is a custom control derived from CWnd(381KB)
153,GridTreeCtrl.zip
A set of classes derived from CGridCtrl that embed a tree control, button controls, and virtual cells within the grid(221KB)
154,gridctrl_demo220.zip
Explains how to use comboboxes to edit cells in the MFC Grid Control(203KB)
155,AddHTMLy.zip
A quick and simple example of using MSHTML to modify the DOM(36KB)
156,Process_HTMLFORM.zip
A simple method to processing HTML forms From a CHtmlView(60KB)
157,ColorButton.zip
A simple modificat
ion
to Chris Maunder's "
Office
97 style Colour Picker" control(44KB)
158,ColorSpace_demo.zip
A replacement color picker control allowing you full visual control over RGB and HSB select
ion
s(288KB)
159,ColorDlg.zip
A simple color chooser dialog that uses slifer controls to allow the user to combine different RGB values(37KB)
160,choicelistbutton_demo.zip
A dropdown menu button with checkbox menu items(25KB)
161,HotList.zip
A control for selecting items from a list, with tool tips and mouse tracking(33KB)
162,colour_picker.zip
A simple drop in color chooser control(54KB)
163,progresswnd.zip
A popup window containing a progress control and cancel button - no resource file needed(34KB)
164,ProgressCtrlX.zip
An enhanced progress control that supports gradient shading, formatted text, 'snake' and reverse modes, and vertical modes(80KB)
165,GradientProgressCtrl.zip
Subclasses the standard CProgressCtrl to allow for gradient fills. Supports vertical progress controls as well.(52KB)
166,piectrl.zip
A progress control with a difference(149KB)
167,text_progressctrl_demo.zip
A smooth progress control with text(15KB)
168,ProgressBar.zip
An easy way to add a progress control to a status bar(33KB)
169,ProgressTimeToComplete.zip
A progress control that tells the user how long an operat
ion
has left to complete(26KB)
170,IProgressDialog_demo.zip
A wrapper class for the progress dialog provided by IE 5.(20KB)
171,rotary.zip
A rotary knob similar to that used in the Windows 2000 CD Player(67KB)
172,SizeDemo.zip
An MS-Word like drop down window for creating tables(37KB)
173,ToolTipEx.zip
A drop-in multiline extendable tooltip control(1052KB)
174,Multiline_Titletips_demo.zip
A class that allows you to display data for a control that is otherwise not large enough to display the full text(23KB)
175,CHtmlView_Search_demo.zip
Could be used to create a Visual C++ like search combo for CHtmlViews...
Update: Now you can highlight all matching words!(36KB)
176,Associat
ion
Grid.zip
Grid control with vertical column headers.(85KB)
VB编程资源大全(英文源码 其它)
6 , chunks.zip<br>This will open a file and read it in "Chunks" of a selected file.<END><br>7 , logging.zip<br>This is a bas that will log installat
ion
procedures so the file can be removed later.<END><br>8 , savetree.zip<br>This will save the info in a Tree View. "This technique allows a program to save hierarchical informat
ion
like the data in a TreeView in a way that is easy to understand."<END><br>11 , OLE.zip<br>Demonstrates the use of OLE.<END><br>12 , gradtxt2.zip<br>"A program for drawing horizontal, rectangular or spherical gradient texts."<END><br>13 , sweepgl.zip<br>This example greatly demonstrates how to use OpenGL in Visual Basic.<END><br>15 , drawdemo.zip<br>This is an excellent example of how to make a paint program with a few extras.<END><br>16 , cube.zip<br>This example demonstrates how to rotate a cube in visual basic.<END><br>17 , sprite1.zip<br>This is an Excellent example on how to use sprites in your program.<END><br>18 , charcreate.zip<br>This is an example of how to assign "characters" to differant pictureboxes. This would be a good starting point for VB game developers.<END><br>19 , breakthrough.zip<br>This demonstrates a simple game in Visual Basic. An excellent example.<END><br>26 , openlib.zip<br>These are the type libs that go with OpenGL. This is used to make 3D text.<END><br>27 , basMath.zip<br>This module contains funct
ion
s for various math equat
ion
s. <END><br>28 , calc.zip<br>This is a basic calculator written in Visual Basic.<END><br>29 , stopwatch.zip<br>This shows how to count off time in a Stop Watch format.<END><br>31 , taskhide.zip<br>This will hide your applicat
ion
from the taskbar, Alt+Tab, and Alt+Ctrl+Del.<END><br>32 , newbie.zip<br>This is a nicely done help file for programmers that are new to Visual Basic.<END><br>33 , vbfaq.zip<br>This is AOL's PC Dev Visual Basic FAQ. This is an excellent starting point for begginners.<END><br>34 , Bas.zip<br>it is very good modual for activex<END><br>35, paraviasource.zip<br>This is
一般软件使用
4,169
社区成员
38,473
社区内容
发帖
与我相关
我的任务
一般软件使用
Windows专区 一般软件使用
复制链接
扫一扫
分享
社区描述
Windows专区 一般软件使用
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章