Escolar Documentos
Profissional Documentos
Cultura Documentos
Belm - Pa
2001
AGRADECIMENTOS
entrega
crena
em
nossa
capacidade de vitria.
RESUMO
O trabalho apresenta a tecnologia de agentes de forma clara e objetiva, no
tendo como meta abordar por completo o tema agentes inteligentes, e sim apenas
desmistificar a viso que sugere que agentes inteligentes uma tecnologia distante da atual
realidade.
Todo contedo apresentado de forma a oferecer uma compreenso
progressiva do assunto procurando oferecer um claro entendimento do mesmo.
A tecnologia de agentes estudada por vrios profissionais da rea de
computao e uma tecnologia presente nos dias atuais e que no futuro dever estar
constantemente em evidncia.
Sero abordados tpicos que foram considerados importantes no estudo de
agentes inteligentes e ao final do trabalho apresentado um exemplo bsico de agente que
pode ser utilizados no dia-dia e permite futuros incrementos e adies.
UNIVERSIDADE DA AMAZNIA
CENTRO DE CINCIAS EXATAS E TECNOLOGIA
AVALIADORES
__________________________________
__________________________________
__________________________________
NOTA: ____________________________
DATA: ____________________________
UNIVERSIDADE DA AMAZNIA
Universidade
da
Amaznia, para obteno do grau em
Tecnlogo em Processamento de Dados,
sob a orientao do Professor Cludio
Alex Rocha.
Belm - Pa
2001
SUMRIO
CAPTULO 1 INTRODUO..........................................................................1
LISTA DE FIGURAS
CAPTULO 1
INTRODUO
CAPTULO 2
VISO GERAL DE AGENTES
2.1.HISTRICO
Para tornar mais clara toda a abordagem que ser feita em torno dos Agentes
Inteligentes, neste trabalho, ser examinada a definio das palavras Agente e
Inteligente/Inteligncia isoladamente e logo aps apresentaremos um conceito formal sobre
agentes inteligentes.
Um agente algo ou algum que age em seu benefcio, com sua permisso.
Considerando esta definio, cada um de ns j usou algum tipo de agente em nossas vidas.
Se voc um dia resolveu comprar uma casa, provavelmente contratou um corretor para cuidar
da procura para voc. Se voc pretende fazer uma viagem ou excurso, um agente de viagens
pode resolver e preparar tudo para voc. At mesmo o contador que prepara o seu imposto de
renda seu agente.
Uma pessoa que toma boas decises ou faz boas escolhas considerada
inteligente. A partir disso, ns podemos assumir que os agentes inteligentes devem ser bons
no que fazem. Consideremos como exemplo um agente de viagens. Antes de mais nada, o seu
agente precisa saber onde voc quer ir e quais so suas preferncias. O seu agente tem que
saber quais so as opes disponveis de roteiro assim como as opes no disponveis. E
finalmente o seu agente tem que vislumbrar a melhor escolha de roteiro considerando todo o
perfil que voc forneceu a ele; isto indiscutivelmente requer um balano cuidadoso de todos
os prs e contras da situao.
Embora no exista uma definio genrica formada para agentes, esta se faz
necessria para que o termo no acabe por perder seu significado. WOOLDRIDGE (1999)
define agente como: Um agente um sistema de computador que est situado em algum
ambiente e que capaz de executar aes autnomas de forma flexvel neste ambiente, a fim
de satisfazer seus objetivos de projeto. Existem trs conceitos nesta definio: ambiente,
autonomia e flexibilidade.
Autonomia, aqui, significa dizer que o sistema pode executar tarefas sem o
intermdio do usurio e que possui o controle de suas aes e de seu estado interno.
devem
exibir
um
comportamento
oportunista
Segundo WOOLDRIDGE (1999) as trs caractersticas citadas, reativo, prativo e social, so suficientes para classificar um agente como inteligente.
mais bem
aplicveis aos humanos. Os agentes que se enquadram nesse grupo tm uma ou mais das
seguintes caractersticas (GIESE, 1998):
Pr-Atividade:
um
agente
deve
exibir
oportunismo
condies,
porm,
normalmente
no
demonstram
oportunismo;
Gopher - so agentes que executam tarefas mais simples, baseandose em suposies e regras pr-especificadas. Por exemplo, o agente
pode avisar o usurio que ele possui uma reunio marcada para
sexta-feira as 14:00 hs;
2.4.3.Quanto Mobilidade
2.4.5.QUANTO
NFASE DADA
Cooperao
Agentes de Aprendizado
Colaborativo
Aprendizagem
Autonomia
Agentes Colaborativos
Agentes de Interface
Figura. 2.2 - Classificao de Agentes quanto a nfase dada a alguns atributos primrios (NWANA, 1996).
baseando-se nas
classes
de agentes
apresentadas anteriormente podem ser identificados vrios tipos de agentes. (Figura. 2.3).
Agente
Agentes
Autnomo
Agentes
Colaborativos
Sistemas
de Agentes
Heterogneos
Agentes de
Interface
Agentes
Mveis
Agentes
Hbridos
Agentes de
Informaes
Agentes
Reativos
pelo
usurio,
ou
seja
possuem
determinado
2.5.REAS DE APLICAO
restaurao
do
servio.
limitada, e utiliza isto para ser apto para responder questes sobre
suas experincias passadas (WOOLDRIDGE e JENNINGS, 1995).
CAPTULO 3
AGENTES INTELIGENTES
3.1.ARQUITETURA DE AGENTES
3.1.1.Arquitetura Bsica
Figura. 3.1 - Arquitetura bsica de um Agente Autnomo Baseada em Computador (DAVIDSSON, 1992).
A seguir apresentado uma breve descrio sobre cada uma das partes que
compe a arquitetura do agente:
da Computao
Computao
Distribuda
IAD
Inteligncia
Artificial
Inteligncia Artificial
Distribuda
Computao Distribuda, consiste na possibilidade de utilizar mais de um processador para trabalhar sobre um
problema computacional (STONE e VELOSO, 1997).
2
Inteligncia Artificial o estudo de como fazer os computadores realizarem coisas que, no momento, as
pessoas fazem melhor (RICH e KNIGHT, 1993).
decomposio de tarefas;
sntese de soluo.
3.3.2.Sistema Multi-Agentes
Conforme
GENESERETH
KETCHPEL
(1994),
existem
duas
linguagens
propostas
para realizar a
de
agentes
protocolos
de
forem
coordenao
construdos.
serem
definidos
ACL:
Agent
Communication
Language
Linguagem
de
gostos)
(IBM,
1995).
conhecimento
sobre
representao
de
conhecimento,
KQML:
Knowledge
Query and
Manipulation
Language
sistemas
inteligentes
para
resoluo
de
problemas
cooperativamente.
KQML concentra-se a um conjunto extensivo de primitivas as quais
define as operaes permitidas que os agentes podem realizar sobre
o conhecimento e objetivos de cada outro agente (FININ, 1997).
sistema
Tcl/Tk
pode
ser
configurado
para
trabalhar
3.5.AGENTES X OBJETOS
Quem trabalha com orientao a objetos pode pensar por um momento que Agentes
so na verdade objetos pensantes. Na verdade existem algumas semelhanas e muitas
diferenas entre agentes e objetos. Objetos podem ser definidos como entidades de software
que encapsulam um estado, so habilidosos na execuo de aes, ou mtodos neste estado e
se comunicam atravs de mensagens. As semelhanas so muito claras: modularidade e
controle sobre seu estado interno (SILVA e MENESES, 2001).
Agentes so capazes de comportamento flexvel (reatividade, pratividade e sociabilidade) e o modelo padro de orientao a objetos
no diz nada sobre este comportamento;
LINGUAGENS
ORIENTADAS
EXISTEM
TEMPLATE1). OU SEJA,
TEMPLATES
PACOTES
PARA
3.6.Agentes e Internet
fato que a Internet, como foi citado anteriormente, foi uma das maiores
revolues da humanidade. A Internet apresenta-se como um ambiente apropriado para a
utilizao de agentes inteligentes. A Internet um enorme banco de dados acessvel
mundialmente, ela promove melhorias e facilidades jamais vistas. Porm, acompanhando as
vrias melhorias e facilidades oferecidas pela Internet, surgiram junto, alguns problemas:
http://java.stanford.edu
Interrupo na transmisso;
Captulo 4
Exemplo de Agente Agente Flash
4.1. APRESENTAO
O fato da Internet ter alcanado o usurio domstico fez com que ela
sofresse uma radical expanso tornando-a, por assim dizer, uma moda definitiva. No meio
de todo o rebolio causado pelo crescimento desacelerado da Internet, a necessidade de se
manter atualizado e a facilidade com que a Internet permite o acesso a estes contedos fez
com que o usurio se perdesse entre sites e mais sites com os mais variados contedos.
Provou-se que a to pregada facilidade no to real assim.
Quando foi definido o termo Agente neste trabalho, foi dito que este um
componente de um contexto que age em favor do usurio ou por ele. Para que se faa uso de
um agente, ele deve preencher alguns requisitos que satisfaam o usurio. Os requisitos que o
agente FLASH deve preencher para executar as tarefas para as quais ele se prope, so
listados abaixo:
O software deve permitir que o usurio insira a lista de sites que ele
gostaria que fossem monitorados;
4.2.MODELAGEM
Foi dito neste trabalho que o Agente um ator em um contexto, e que ele
possui recursos que fazem com que ele atue no contexto. Quando feita a modelagem de um
Agente, deve-se considerar que recursos do Agente aplicar-se-o realidade na qual ele ser
inserido. Dois dos recursos que os Agentes possuem so visveis neste exemplo, so eles: os
sensores, que permitem que eles percebam a situao na qual esto inseridos; e os
reagentes que so os responsveis por atuar no contexto.
4.3. Funcionamento
O Agente possuir uma lista de web sites. Esta lista poder sofrer
incluses e adies a qualquer tempo. Esta lista ser salva em um
arquivo de texto. No caso do Agente estar sendo executado pela
primeira vez, ser solicitado ao usurio a incluso de pelo menos 1
site na lista;
CAPTULO 5
CONCLUSO
Neste trabalho procurou-se apresentar uma viso menos cientfica e terica para se
apresentar uma viso mais didtica e prtica. O exemplo apresentado neste trabalho
aplicvel a contextos simples e est passvel de incrementos e melhorias, o intuito foi de
mostrar que os agentes inteligentes so mais simples do que se prega, so pedaos de
software com caractersticas especiais. Apesar desta aparente simplicidade, a tecnologia de
agentes seriamente estudada e aplicada em algumas reas de muita importncia.
Fazer previses sobre qual ser o papel dos agentes inteligentes no futuro algo que
no se pode fazer, visto que a tecnologia de agentes ainda est em processo de
desenvolvimento e os grupos envolvidos nas pesquisas ainda exercem influncia uns sobres
os outros.
Apesar de toda essa incerteza quanto ao futuro dos agentes, eles mostram-se presentes
nos dias atuais, em ferramentas que so utilizadas no dia-a-dia da Internet, como por exemplo:
Comrcio Eletrnico, Ensino a Distncia, Mecanismos de Busca, entre outros.
REFERNCIAS BIBLIOGRFICAS
GRAY, R. S. - Agent Tcl: Alpha Release 1.1. Documentao do Sistema Agente Tcl,
Departamento de Cincias da Computao, Faculdade Dartmouth, Hanover, 1995.
IBM - Open Blueprint: Intelligent Agent Resource Manager. IBM Corporation, Nmero
do Documento G325-6592-00, 1995.
RICH, E., KNIGHT, K. - Artificial Intelligence. McGrawHill, Inc. Nova Iorque, USA,
1993
AUER,
K.
Agents
[on line].
Jan.
1997.
Disponvel:
HERMANS, B. - Intelligent Software Agents on the Internet [on line]. 1999. Disponvel:
http://www.firstmonday.dek/issues/issue2_3/index.html
ORCHARD,
D.
Intelligent Agents
[on line].
Nov. 1996.
Disponvel:
WORLD WIDE WEB CONSORTIUM. Mobile Code [on line]. Maio. 1997. Disponvel:
http://www.w3.org/pub/WWW/MobileCode/ .
ANEXO I
CDIGOS FONTE
AGENTE FLASH
1. ARQUIVOS FONTE
FLASH.CPP
// FLASH.CPP : DEFINES THE CLASS BEHAVIORS FOR THE APPLICATION.
//
#INCLUDE "STDAFX.H"
#INCLUDE "FLASH.H"
#INCLUDE "FLASHDLG.H"
#IFDEF _DEBUG
#DEFINE NEW DEBUG_NEW
#UNDEF THIS_FILE
STATIC CHAR THIS_FILE[] = __FILE__;
#ENDIF
/////////////////////////////////////////////////////////////////////////////
// CFLASHAPP
BEGIN_MESSAGE_MAP(CFLASHAPP, CWINAPP)
//{{AFX_MSG_MAP(CFLASHAPP)
// NOTE - THE CLASSWIZARD WILL ADD AND REMOVE MAPPING MACROS HERE.
// DO NOT EDIT WHAT YOU SEE IN THESE BLOCKS OF GENERATED CODE!
//}}AFX_MSG
ON_COMMAND(ID_HELP, CWINAPP::ONHELP)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CFLASHAPP CONSTRUCTION
CFLASHAPP::CFLASHAPP()
{
// TODO: ADD CONSTRUCTION CODE HERE,
// PLACE ALL SIGNIFICANT INITIALIZATION IN INITINSTANCE
}
/////////////////////////////////////////////////////////////////////////////
// THE ONE AND ONLY CFLASHAPP OBJECT
CFLASHAPP THEAPP;
/////////////////////////////////////////////////////////////////////////////
// CFLASHAPP INITIALIZATION
BOOL CFLASHAPP::INITINSTANCE()
{
AFXENABLECONTROLCONTAINER();
// STANDARD INITIALIZATION
// IF YOU ARE NOT USING THESE FEATURES AND WISH TO REDUCE THE SIZE
// OF YOUR FINAL EXECUTABLE, YOU SHOULD REMOVE FROM THE FOLLOWING
// THE SPECIFIC INITIALIZATION ROUTINES YOU DO NOT NEED.
#IFDEF _AFXDLL
ENABLE3DCONTROLS();
SHARED DLL
#ELSE
ENABLE3DCONTROLSSTATIC();
#ENDIF
// CALL
MFC
CFLASHDLG DLG;
M_PMAINWND = &DLG;
INT NRESPONSE = DLG.DOMODAL();
IF (NRESPONSE == IDOK)
{
// TODO: PLACE CODE HERE TO HANDLE WHEN THE DIALOG IS
// DISMISSED WITH OK
}
ELSE IF (NRESPONSE == IDCANCEL)
{
// TODO: PLACE CODE HERE TO HANDLE WHEN THE DIALOG IS
// DISMISSED WITH CANCEL
}
// SINCE THE DIALOG HAS BEEN CLOSED, RETURN FALSE SO THAT WE EXIT THE
// APPLICATION, RATHER THAN START THE APPLICATION'S MESSAGE PUMP.
RETURN FALSE;
}
FLASHDLG.CPP
// FlashDlg.cpp : implementation file
//
IN A
#include "stdafx.h"
#include "Flash.h"
#include "FlashDlg.h"
#include "CRobot.h"
#include "CRobotInternet.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CAboutDlg dialog used for App About
class CAboutDlg : public CDialog
{
public:
CAboutDlg();
enum { IDD = IDD_ABOUTBOX };
protected:
virtual void DoDataExchange(CDataExchange* pDX);
// Implementation
protected:
DECLARE_MESSAGE_MAP()
};
CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
}
void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
}
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CFlashDlg dialog
CFlashDlg::CFlashDlg(CWnd* pParent /*=NULL*/)
: CDialog(CFlashDlg::IDD, pParent)
{
m_urls = _T("");
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
void CFlashDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Control(pDX, IDC_URLS, m_urls_ctl);
DDX_CBString(pDX, IDC_URLS, m_urls);
}
BEGIN_MESSAGE_MAP(CFlashDlg, CDialog)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_ADD, OnAdd)
ON_BN_CLICKED(IDC_REMOVE, OnRemove)
ON_WM_TIMER()
ON_MESSAGE(WM_TRAY_NOTIFY, OnTrayNotify)
ON_COMMAND(IDC_CONFIGURE, CFlashDlg::OnMenuConfigure)
ON_COMMAND(IDC_EXIT, CFlashDlg::OnMenuExit)
END_MESSAGE_MAP()
////////////////////////////////////////////////////////////////////
// CFlashDlg message handlers
BOOL CFlashDlg::OnInitDialog()
{
CDialog::OnInitDialog();
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
CString strAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING,
strAboutMenu);
}
}
IDM_ABOUTBOX,
SetIcon(m_hIcon, TRUE);
// Set big icon
SetIcon(m_hIcon, FALSE);
// Set small icon
nSites = 0;
LoadURLs();
m_nTrayData.cbSize = sizeof(NOTIFYICONDATA) ;
m_nTrayData.hWnd = m_hWnd;
m_nTrayData.uID = 0 ;
m_nTrayData.hIcon = LoadIcon (AfxGetInstanceHandle(),
MAKEINTRESOURCE(IDR_MAINFRAME));
m_nTrayData.uCallbackMessage = WM_TRAY_NOTIFY;
strcpy (m_nTrayData.szTip, "Agente Flash");
m_nTrayData.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP;
Shell_NotifyIcon (NIM_ADD, &m_nTrayData);
bHidden = false;
if (nSites > 0)
{
ShowWindow(SW_MINIMIZE);
SetTimer(1, 1000, NULL);
} // End if
return TRUE;
}
void CFlashDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
else
{
CDialog::OnSysCommand(nID, lParam);
}
}
// If you add a minimize button to your dialog, you will need the code below
// to draw the icon. For MFC applications using the document/view model,
// this is automatically done for you by the framework.
void CFlashDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // device context for painting
SendMessage(WM_ICONERASEBKGND,(WPARAM) dc.GetSafeHdc(), 0);
// Center icon in client rectangle
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;
// Draw the icon
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialog::OnPaint();
}
}
// The system calls this to obtain the cursor to display while the user drags
// the minimized window.
HCURSOR CFlashDlg::OnQueryDragIcon()
{
return (HCURSOR) m_hIcon;
}
void CFlashDlg::OnAdd()
{
// Validate the input
UpdateData(true);
if (m_urls == "")
{
MessageBox("Por favor, informe um endereo.",
"Endereo necessrio",
MB_ICONEXCLAMATION);
return;
} // End if
if (nSites == MAX_SITES)
{
MessageBox("O nmero mximo de sites foi alcanado.",
mximo alcanado",
MB_ICONEXCLAMATION);
return;
} // End if
// Add the site
"Limite
CWaitCursor wc;
sSiteURL[nSites] = m_urls;
sSiteHTML[nSites] = "";
m_urls_ctl.AddString(m_urls);
nSites++;
m_urls = "";
UpdateData(false);
GetDlgItem(IDC_URLS)->SetFocus();
}
void CFlashDlg::OnRemove()
{
CString sURL;
UpdateData(true);
sURL = m_urls;
int nSiteIndex = -1;
for (int nSite = 0; nSite < nSites; nSite++)
{
if (sSiteURL[nSite] == sURL)
{
nSiteIndex = nSite;
nSite = nSites;
} // End if
} // End for
if (nSiteIndex == -1)
{
MessageBox("Voc no pode remover "
+ sURL
+ " porque ele no est na lista.",
"Endereo no encontrado",
MB_ICONEXCLAMATION);
return;
} // End if
CWaitCursor wc;
// Delete URL from site variables
for (nSite = nSiteIndex; nSite < nSites - 1; nSite++)
{
sSiteURL[nSite] = sSiteURL[nSite + 1];
sSiteHTML[nSite] = sSiteHTML[nSite + 1];
} // End for
sSiteURL[nSites].Empty();
sSiteHTML[nSites].Empty();
nSites--;
// Delete URL from the list box
m_urls_ctl.DeleteString(m_urls_ctl.GetCurSel());
}
void CFlashDlg::OnOK()
{
if (nSites == 0)
{
MessageBox("Voc deve fornecer o endereo de 1 ou mais sites.",
"Nenhum site na lista",
MB_ICONEXCLAMATION);
return;
} // End if
ShowWindow(SW_HIDE);
SaveURLs();
SetTimer(1, 1000, NULL);
}
void CFlashDlg::OnTimer(UINT nIDEvent)
{
KillTimer(1);
if (bHidden)
{
ShowWindow(SW_HIDE);
bHidden = true;
} // End if
CheckWebPages();
SetTimer(1, 3 * 60 * 1000, NULL);
CDialog::OnTimer(nIDEvent);
}
// *******************
// *
*
// * CheckWebPages *
// *
*
// *******************
// Description: Visits each web page to see if it has changed
void CFlashDlg::CheckWebPages()
{
// Check web pages
CRobotInternet internet;
CString sHTML;
int nResult;
CString sErrMsg;
for (int nSite = 0; nSite < nSites; nSite++)
{
if (internet.httpGet(sSiteURL[nSite],
nResult,
{
if (sSiteHTML[nSite] != sHTML)
{
if (sSiteHTML[nSite] != "")
ShellExecute(NULL,
sSiteURL[nSite],
NULL,
SW_SHOWNORMAL);
sSiteHTML[nSite] = sHTML;
} // End if
} // End if
} // End for nSite
}
sHTML,
sErrMsg))
"open",
NULL,
// ******************
// *
*
// * OnTrayNotify *
// *
*
// ******************
// Tray notification handler
LRESULT CFlashDlg::OnTrayNotify(WPARAM wParam, LPARAM lParam)
{
// ---- Right-button down: Pop-up menu ---if (lParam == WM_RBUTTONDOWN)
{
CMenu menu;
VERIFY(menu.LoadMenu(IDR_MENU1));
CMenu* pPopup = menu.GetSubMenu(0);
ASSERT(pPopup != NULL);
CRect screen;
GetDesktopWindow()->GetWindowRect(screen);
pPopup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON,
screen.right, screen.bottom, AfxGetMainWnd());
} // End if
return LRESULT(0);
}
void CFlashDlg::OnMenuConfigure()
{
KillTimer(1);
ShowWindow(SW_NORMAL);
}
void CFlashDlg::OnMenuExit()
{
Shell_NotifyIcon (NIM_DELETE, &m_nTrayData);
EndDialog(0);
}
// **************
// *
*
// * LoadURLs *
// *
*
// **************
// Description: Loads URL list from previous session
// If Flash.url file exists, loads URLS from it
// (one URL per line)
//
// Outputs: nSites ........ Number of URLs
// sSiteURL[] .... Contains the actual URLs
void CFlashDlg::LoadURLs()
{
CStdioFile file;
CString sLine;
nSites = 0;
m_urls_ctl.ResetContent();
if (file.Open("flash.url", CFile::modeRead))
{
while (file.ReadString(sLine))
{
sSiteURL[nSites] = sLine;
nSites++;
m_urls_ctl.AddString(sLine);
} // End while
file.Close();
} // End if
}
// **************
// *
*
// * SaveURLs *
// *
*
// **************
// Description: Saves URL list for the sake of future sessions
// Creates file Flash.url and writes one URL per
// line to it
//
// Inputs: nSites ........ Number of URLs
// sSiteURL[] .... Contains the actual URLs
void CFlashDlg::SaveURLs()
{
CStdioFile file;
file.Open("flash.url", CFile::modeCreate|CFile::modeWrite);
for (int u = 0; u < nSites; u++)
file.WriteString(sSiteURL[u] + "\n");
file.Close();
}
2. ARQUIVOS DE CABEALHO
FLASH.H
// Flash.h : main header file for the FLASH application
//
#if
!defined(AFX_FLASH_H__385D4245_82F5_11D2_BD1F_00C04F96A9C3__INCLUDED_
)
#define AFX_FLASH_H__385D4245_82F5_11D2_BD1F_00C04F96A9C3__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#ifndef __AFXWIN_H__
#error include 'stdafx.h' before including this file for PCH
#endif
#include "resource.h"
// main symbols
/////////////////////////////////////////////////////////////////////////////
// CFlashApp:
// See Flash.cpp for the implementation of this class
//
class CFlashApp : public CWinApp
{
public:
CFlashApp();
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CFlashApp)
public:
virtual BOOL InitInstance();
//}}AFX_VIRTUAL
// Implementation
//{{AFX_MSG(CFlashApp)
// NOTE - the ClassWizard will add and remove member functions here.
// DO NOT EDIT what you see in these blocks of generated code !
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
/////////////////////////////////////////////////////////////////////////////
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous
line.
#endif
//
!defined(AFX_FLASH_H__385D4245_82F5_11D2_BD1F_00C04F96A9C3__INCLUDED_
)
FLASHDLG.H
// FlashDlg.h : header file
//
#if
!defined(AFX_FLASHDLG_H__385D4247_82F5_11D2_BD1F_00C04F96A9C3__INCLU
DED_)
#define
AFX_FLASHDLG_H__385D4247_82F5_11D2_BD1F_00C04F96A9C3__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
////////////////////////////////////////////////////////////////////
// CFlashDlg dialog
#defineWM_TRAY_NOTIFY
WM_USER + 0
CString sSiteURL[MAX_SITES];
CString sSiteHTML[MAX_SITES];
int nSites;
BOOL bHidden;
void LoadURLs();
void SaveURLs();
void CheckWebPages();
void OnMenuConfigure();
void OnMenuExit();
// Dialog Data
//{{AFX_DATA(CFlashDlg)
enum { IDD = IDD_FLASH_DIALOG };
CComboBox m_urls_ctl;
CString
m_urls;
//}}AFX_DATA
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CFlashDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX);
//}}AFX_VIRTUAL
// DDX/DDV support
// Implementation
protected:
HICON m_hIcon;
// Generated message map functions
//{{AFX_MSG(CFlashDlg)
virtual BOOL OnInitDialog();
afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
afx_msg void OnPaint();
afx_msg HCURSOR OnQueryDragIcon();
afx_msg void OnAdd();
afx_msg void OnRemove();
virtual void OnOK();
afx_msg void OnTimer(UINT nIDEvent);
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous
line.
#endif
//
!defined(AFX_FLASHDLG_H__385D4247_82F5_11D2_BD1F_00C04F96A9C3__INCLU
DED_)
STDAFX.H
// stdafx.h : include file for standard system include files,
// or project specific include files that are used frequently, but
//
are changed infrequently
//
#if
!defined(AFX_STDAFX_H__385D4249_82F5_11D2_BD1F_00C04F96A9C3__INCLUDE
D_)
#define
AFX_STDAFX_H__385D4249_82F5_11D2_BD1F_00C04F96A9C3__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#define VC_EXTRALEAN
#include <afxwin.h>
// MFC core and standard components
#include <afxext.h>
// MFC extensions
#include <afxdisp.h>
// MFC Automation classes
#include <afxdtctl.h>
// MFC support for Internet Explorer 4 Common Controls
#ifndef _AFX_NO_AFXCMN_SUPPORT
#include <afxcmn.h>
// MFC support for Windows Common Controls
#endif // _AFX_NO_AFXCMN_SUPPORT
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous
line.
#endif
//
!defined(AFX_STDAFX_H__385D4249_82F5_11D2_BD1F_00C04F96A9C3__INCLUDE
D_)