Académique Documents
Professionnel Documents
Culture Documents
Belém - Pa
2001
“Exalta a sabedoria, e ela te
exaltará, e abraçando-a tu, ela te
honrará”.
Provérbios 4:8
AGRADECIMENTOS
i
UNIVERSIDADE DA AMAZÔNIA
CENTRO DE CIÊNCIAS EXATAS E TECNOLOGIA
AVALIADORES
__________________________________
__________________________________
__________________________________
NOTA: ____________________________
DATA: ____________________________
UNIVERSIDADE DA AMAZÔNIA
Belém - Pa
2001
SUMÁRIO
CAPÍTULO 1 – INTRODUÇÃO..........................................................................1
AGENTES. ......................................................................................................24
4.2. MODELAGEM..........................................................................................40
E REAGENTES .................................................................................................10
EM COMPUTADOR..........................................................................................23
INTRODUÇÃO
tecnológicas ocorrem em uma velocidade visivelmente maior do que a velocidade com a qual
que revolucionou, sem sombra de dúvida, a vida de toda a humanidade: a Internet. A Internet
veio para mudar a maneira de viver de cada cidadão que tenha acesso a ela, quebrar fronteiras,
mundo, surge uma tecnologia com ares de ficção científica, os “Agentes Inteligentes”.
que possamos pensar, a tecnologia de Agentes não está tão distante de nossa realidade. A
Internet é um campo vasto onde os agentes se proliferam e nos ajudam nas mais diversas
tarefas, sendo que como meros usuários, às vezes não tomamos conhecimento disso.
A tecnologia de agentes vem mudar radicalmente o modo como o usuário
utiliza seu computador, permitindo, por exemplo, que o software seja um assistente ao
usuário. Esta tecnologia deverá aproximar ainda mais o usuário do seu computador.
facilidades que são baseadas, como foi dito acima, em conceitos de inteligência artificial.
breve histórico sobre agentes e em seguida serão apresentados conceitos fundamentais para a
compreensão de todo o estudo que será feito. Ainda no segundo capítulo veremos as
agentes inteligentes. Ao final do capítulo são apresentadas algumas áreas nas quais os agentes
são aplicados.
são apresentadas os estudos que fundamentam a tecnologia de agentes. Também serão visto
neste capítulo as Linguagens que são utilizadas para desenvolvimento de agentes, linguagens
Artificial Distribuída (IAD) e suas técnicas, assim como um comparativo entre Agentes e
mesmo.
CAPÍTULO 2
2.1.HISTÓRICO
Nicholas Negroponte, Rodney Brooks e Pattie Maes, passaram a estudar problemas que
também o termo agente. Era a comunidade de agentes de software, que estava explorando o
estavam sendo usados para descrever agentes, como: intelligent agents, intelligent interfaces,
adaptive interfaces, knowbots, softbots, userbots, taskbots, personal agents e network agents,
dentre outros. Sendo que cada termo utilizado referenciava o papel exercido pelo agente.
2.2.DEFINIÇÃO DE AGENTES INTELIGENTES
especialmente na área de Inteligência Artificial. Nos últimos anos, o termo tornou-se muito
Para tornar mais clara toda a abordagem que será feita em torno dos Agentes
agentes inteligentes.
sugere várias definições diferentes, mas será utilizada a definição mais aplicável para o
Um agente é algo ou alguém que age em seu benefício, com sua permissão.
Considerando esta definição, cada um de nós 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 excursão, um agente de viagens
pode resolver e preparar tudo para você. Até mesmo o contador que prepara o seu imposto de
poderíamos transportar esta realidade dos agentes para o software? Quais são as qualidades
pertinentes aos agentes de software e como poderíamos compará-los aos agentes humanos? Se
você olhar os exemplos de agentes humanos anteriormente citados, assim como a definição de
se o software não está fazendo algo por/para você, ele não pode ser
que você não ficaria nada feliz se o seu corretor na bolsa resolvesse
Agentes fazem somente as coisas que você diz que tem que fazer; como usuários devemos
evitar utilizar agentes em tarefas para as quais eles não foram preparados.
Uma pessoa que toma boas decisões ou faz boas escolhas é considerada
inteligente. A partir disso, nós 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 são suas preferências. O seu agente tem que
saber quais são as opções disponíveis de roteiro assim como as opções não disponíveis. 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 balanço cuidadoso de todos
de qualquer profissional que se propõem a fazer um trabalho. Com agentes, humanos ou não,
representam em nossa ausência e tomam atitudes que nos afetam, no mínimo esperamos que
fato de usarmos a palavra “inteligente” só reforça esta idéia. Os agentes devem ser bons no
que fazem ou então ninguém fará uso deles. Tenhamos em mente que um agente de software
mal concebido/desenvolvido pode tornar a vida de uma pessoa que depende dele bem
complicada.
2.2.3.DEFINIÇÃO DE AGENTE INTELIGENTE
“Um agente é um software que sabe fazer coisas que provavelmente você
Ted Selker.
único. Contudo, concorda-se que a “autonomia” é seu ponto principal (SILVA e MENESES,
2001). Considerando este ponto, devemos atentar para o fato de que certas características, que
De forma mais clara; existem situações, por exemplo, em que a capacidade de aprendizado do
Embora não exista uma definição genérica formada para agentes, esta se faz
necessária para que o termo não 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 ações autônomas de forma flexível neste ambiente, a fim
de satisfazer seus objetivos de projeto”. Existem três conceitos nesta definição: ambiente,
autonomia e flexibilidade.
receber entrada através de sensores do ambiente e executar ações que alterem o mesmo de
Autonomia, aqui, significa dizer que o sistema pode executar tarefas sem o
intermédio do usuário e que possui o controle de suas ações e de seu estado interno.
independentes. Para tornar mais clara essa “separação”, as características serão apresentadas
em dois tópicos: Características Gerais de Agentes, que aborda as características comuns aos
como o próprio título diz, aborda as caracteríticas presentes somente nos Agentes Inteligentes.
interno;
background;
querem que um agente seja um sistema de computador que, além de ter as características
identificadas anteriormente, sejam implementados usando conceitos que são mais bem
aplicáveis aos humanos. Os agentes que se enquadram nesse grupo têm uma ou mais das
ações.
classificações que nos permitem visualizá-los de uma forma mais ampla. Essas classificações
são, por exemplo: quanto ao nível de inteligência, quando à tarefa que executam, quando à
primários.
oportunismo;
pode avisar o usuário que ele possui uma reunião marcada para
com os participantes);
2.4.3.Quanto à Mobilidade
• Agentes Estáticos - são agentes que não podem se mover pela rede,
pela rede.
existem duas categorias, segundo NWANA (1996) eles podem ser deliberativos e reativos.
um modelo simbólico e interno, utilizado para tomar decisões e executar tarefas necessárias
para alcançar seus objetivos. Estes agentes também são chamados de simbólicos ou
cognitivos.
quando estimulados, em resposta ao estado atual do ambiente no qual estão inseridos. Eles
não possuem um modelo simbólico e interno dos mesmos. Eles também são denominados
reflexivos.
2.4.5.QUANTO A ÊNFASE DADA A ALGUNS ATRIBUTOS PRIMÁRIOS
levando em conta a ênfase dada para alguns atributos primários e considerados ideais
Cooperação Aprendizagem
Autonomia
Figura. 2.2 - Classificação de Agentes quanto a ênfase dada a alguns atributos primários (NWANA, 1996).
NWANA (1996), reforça a idéia de que estas diferenças não são definitivas.
cooperação e autonomia do que sobre aprendizado, isto não quer dizer que os agentes
apresentadas anteriormente podem ser identificados vários tipos de agentes. (Figura. 2.3).
Agente
Agentes Agentes
Colaborativos Autônomo
Sistemas
Agentes de de Agentes
Interface Heterogêneos
Agentes Agentes
Móveis Híbridos
Agentes de Agentes
Informações Reativos
resultados.
necessariamente do usuário.
2.5.ÁREAS DE APLICAÇÃO
Abaixo são listadas as aplicações onde os Agentes de software fazem-se mais presentes, e
(NISSEN, 1995).
AGENTES INTELIGENTES
3.1.ARQUITETURA DE AGENTES
envolve técnicas e algorítmos utilizados por uma metodologia específica para a construção de
agentes. Isto determina a forma como os agentes devem ser decompostos para a construção de
conjunto total dos módulos e suas interações providenciam uma resposta para a questão de
como sensores de dados e o estado interno do agente determinam as ações e futuros estados
internos do agente.
3.1.1.Arquitetura Básica
-/.$021"3"46587:9
; .
"!$#%'&)(*#$+, <>='?
@"ACB"=$D'E F
Figura. 3.1 - Arquitetura básica de um Agente Autônomo Baseada em Computador (DAVIDSSON, 1992).
A seguir é apresentado uma breve descrição sobre cada uma das partes que
conhecimento.
usuário.
• Pesquisa: A tarefa não é completamente definida, o agente deve
trabalhar do usuário, ou dar " dicas " sobre com o utilizar melhor os
recursos do sistema.
tarefa ou ação.
1997).
Computação Inteligência
IAD
Distribuída Artificial
Inteligência Artificial
Distribuída
seguintes aspectos:
1
Computação Distribuída, consiste na possibilidade de utilizar mais de um processador para trabalhar sobre um
problema computacional (STONE e VELOSO, 1997).
2
Inteligência Artificial é o estudo de como fazer os computadores realizarem coisas que, no momento, as
pessoas fazem melhor (RICH e KNIGHT, 1993).
• Inteligência Artificial Distribuída - Preocupa-se com a interação e
Multi-Agentes (SMA).
• decomposição de tarefas;
• síntese de solução.
a pergunta que surge é: Como os agentes devem ser organizados para conseguirem maior
organizar a coordenação.
promova a união delas seria mais prática. Utiliza-se então a abordagem chamada de sistema
federado. É um sistema em que os agentes não se comunicam diretamente entre si, mas fazem
entre os diversos supervisores e estes por sua vez, encarregam-se da comunicação entre seus
agentes.
agentes possam: pedir informações de outros agentes, observar e saber das atividades de
(GIESE, 1998).
nesta aproximação.
(FININ, 1997).
cooperativamente.
virtual;
• LALO: É uma linguagem de programação orientada a agentes e um
objetos gráficos.
3.5.AGENTES X OBJETOS
Quem trabalha com orientação a objetos pode pensar por um momento que Agentes
são na verdade objetos pensantes. Na verdade existem algumas semelhanças e muitas
diferenças entre agentes e objetos. Objetos podem ser definidos como entidades de software
que encapsulam um estado, são habilidosos na execução de ações, ou métodos neste estado e
se comunicam através de mensagens. As semelhanças são muito claras: modularidade e
controle sobre seu estado interno (SILVA e MENESES, 2001).
POUCA GENTE SABE, MAS NADA IMPEDE QUE AGENTES SEJAM PROGRAMADOS
OBJETOS.
3.6.Agentes e Internet
É fato que a Internet, como foi citado anteriormente, foi uma das maiores
várias melhorias e facilidades oferecidas pela Internet, surgiram junto, alguns problemas:
1
http://java.stanford.edu
• O usuário pode receber como respostas, endereços desatualizados ou
incompletos;
• Interrupção na transmissão;
freqüentemente somente partes podem ser recuperadas, ou algumas vezes não se consegue
nada.
capazes de sanar tais problemas. Estes métodos são baseados no princípio do que é conhecido
dados providos com grande quantidade de índices para proporcionar ao usuário a informação
desejada. Com o auxílio de tais índices, o usuário verá se a informação solicitada pôde ou não
que não pode ser achada hoje, pode estar disponível amanhã. E o
também apresentam algumas desvantagens. Uma solução para este problema seria o uso dos
será sempre maior, os agentes poderão ser o único modo eficiente para procurar na Internet.
vantagens comparadas aos atuais métodos. Abaixo são apresentadas as características dos
agentes oferece:
serviços da Internet;
desaparecida.
rede;
4.1. APRESENTAÇÃO
completamente a forma como a sociedade analisa o seu processo evolutivo. Agora a história
da sociedade moderna pode ser divida em dois períodos: “antes da Internet” e “depois da
Internet”.
O fato da Internet ter alcançado o usuário doméstico fez com que ela
sofresse uma radical expansão tornando-a, por assim dizer, uma “moda definitiva”. No meio
manter atualizado e a “facilidade” com que a Internet permite o acesso a estes conteúdos fez
com que o usuário se perdesse entre sites e mais sites com os mais variados conteúdos.
que deseja, sem que sofra “stress tecnológico”, será apresentado o agente FLASH.
usuário, checa alterações no conteúdo do site, alerta o usuário da alteração efetuada e executa
componente de um contexto que age em favor do usuário ou por ele. Para que se faça uso de
um agente, ele deve preencher alguns requisitos que satisfaçam o usuário. Os requisitos que o
agente FLASH deve preencher para executar as tarefas para as quais ele se propõe, são
listados abaixo:
• O software deve permitir que o usuário insira a lista de sites que ele
detectada.
4.2.MODELAGEM
Sistema Operacional utilizado, a linguagem no qual será desenvolvido, existem de fato, outros
detalhes que devem ser cuidadosamente observados devido a natureza do software e a forma
de atuação do mesmo.
Alguns detalhes que devem ser considerados no momento de modelarmos
um Agente, são:
Internet;
alterada;
limita-se a lista de web sites que o usuário irá informar e não a toda
Internet.
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 são visíveis neste exemplo, são eles: os
“sensores”, que permitem que eles percebam a situação na qual estão inseridos; e os
reagentes atuam baseados nos eventos ocorridos. É importante que fique claro que os eventos
não são necessariamente os eventos nativos do Sistema Operacional em uso, podendo ser
eventos externos ao Sistema Operacional. No caso do Agente apresentado, o evento que irá
ativa-lo é um evento externo ao Sistema Operacional: a alteração de algum web site que esteja
como uma situação na qual ele deve atuar, e a partir daí ele executará as ações para o qual ele
foi designado, no caso, executar o browser default do usuário exibindo a página alterada.
4.3. Funcionamento
• O Agente possuirá uma lista de web sites. Esta lista poderá sofrer
site na lista;
(comparação de conteúdo);
minutos;
Pallmann (PALLMANN, 1999). Ele foi desenvolvido utilizando-se o Microsoft Visual C++ 6.
motivação para o estudo de agentes é o fato de esta tecnologia ser mais realidade do que
conceitos propriamente ditos, permitindo assim que faça-se um estudo dirigido de forma a
Neste trabalho procurou-se apresentar uma visão menos científica e teórica para se
apresentar uma visão mais didática e prática. O exemplo apresentado neste trabalho é
mostrar que os agentes inteligentes são mais simples do que se prega, são “pedaços” de
tecnologia de hoje tem se mostrado muito receptivo a eles. Neste trabalho foram citadas
FLASH também apresenta-se como fruto do desenvolvimento em uma das linguagens citadas
não se pode fazer, visto que a tecnologia de agentes ainda está em processo de
desenvolvimento e os grupos envolvidos nas pesquisas ainda exercem influência uns sobres
os outros.
Apesar de toda essa incerteza quanto ao futuro dos agentes, eles mostram-se presentes
nos dias atuais, em ferramentas que são utilizadas no dia-a-dia da Internet, como por exemplo:
potencial muito grande, mas que precisa de atenção e seriedade ao ser estudada. Assim como
amadurecimento, pode-se dizer que a tecnologia de agentes está caminhando para esta fase e
que é bem possível que no futuro, se próximo ou distante não se sabe, existirão mais destas
Cooperating Knowledge Based Systems. Selected Papers from the Workshop, p. 213-
26,1994.
versus the Engineering Approach. Lund University Cognitive Studies 12, ISSN 1101-
data and code to complete a given task. Java Report. SIGS Publications, Inc. New York,
NY, 1997.
Catarina, 1998
GRAY, R. S. - Agent Tcl: Alpha Release 1.1. Documentação do Sistema Agente Tcl,
IBM - Open Blueprint: Intelligent Agent Resource Manager. IBM Corporation, Número
1996.
development. 1998.
Wooldridge e Jennings (eds.), Lecture Notes in AI, 1193, p. 49-63, Springer-Verlag, 1997.
RICH, E., KNIGHT, K. - Artificial Intelligence. McGrawHill, Inc. Nova Iorque, USA,
1993
2001. p. 209-253.
2001].
HERMANS, B. - Intelligent Software Agents on the Internet [on line]. 1999. Disponível:
http://www.firstmonday.dek/issues/issue2_3/index.html
WORLD WIDE WEB CONSORTIUM. Mobile Code [on line]. Maio. 1997. Disponível:
http://www.w3.org/pub/WWW/MobileCode/ .
ANEXO I
CÓDIGOS FONTE
AGENTE FLASH
1. ARQUIVOS FONTE
FLASH.CPP
#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(); // CALL THIS WHEN USING MFC IN A
SHARED DLL
#ELSE
ENABLE3DCONTROLSSTATIC(); // CALL THIS WHEN LINKING TO MFC STATICALLY
#ENDIF
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
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CAboutDlg dialog used for App About
// Implementation
protected:
DECLARE_MESSAGE_MAP()
};
CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CFlashDlg dialog
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();
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;
}
// 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);
// 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 endereço.",
"Endereço necessário",
MB_ICONEXCLAMATION);
return;
} // End if
if (nSites == MAX_SITES)
{
MessageBox("O número máximo de sites foi alcançado.", "Limite
máximo alcançado", MB_ICONEXCLAMATION);
return;
} // End if
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;
if (nSiteIndex == -1)
{
MessageBox("Você não pode remover " + sURL
+ " porque ele não está na lista.",
"Endereço não encontrado", MB_ICONEXCLAMATION);
return;
} // End if
CWaitCursor wc;
m_urls_ctl.DeleteString(m_urls_ctl.GetCurSel());
}
void CFlashDlg::OnOK()
{
if (nSites == 0)
{
MessageBox("Você deve fornecer o endereço de 1 ou mais sites.",
"Nenhum site na lista", MB_ICONEXCLAMATION);
return;
} // End if
ShowWindow(SW_HIDE);
SaveURLs();
SetTimer(1, 1000, NULL);
}
// *******************
// * *
// * 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;
// ******************
// * *
// * OnTrayNotify *
// * *
// ******************
// Tray notification handler
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 CABEÇALHO
FLASH.H
#if
!defined(AFX_FLASH_H__385D4245_82F5_11D2_BD1F_00C04F96A9C3__INCLUDED_
)
#define AFX_FLASH_H__385D4245_82F5_11D2_BD1F_00C04F96A9C3__INCLUDED_
#ifndef __AFXWIN_H__
#error include 'stdafx.h' before including this file for PCH
#endif
/////////////////////////////////////////////////////////////////////////////
// CFlashApp:
// See Flash.cpp for the implementation of this class
//
// 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
#if
!defined(AFX_FLASHDLG_H__385D4247_82F5_11D2_BD1F_00C04F96A9C3__INCLU
DED_)
#define
AFX_FLASHDLG_H__385D4247_82F5_11D2_BD1F_00C04F96A9C3__INCLUDED_
////////////////////////////////////////////////////////////////////
// CFlashDlg dialog
#defineWM_TRAY_NOTIFY WM_USER + 0
// Dialog Data
//{{AFX_DATA(CFlashDlg)
enum { IDD = IDD_FLASH_DIALOG };
CComboBox m_urls_ctl;
CString m_urls;
//}}AFX_DATA
// Implementation
protected:
HICON m_hIcon;
//{{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
#if
!defined(AFX_STDAFX_H__385D4249_82F5_11D2_BD1F_00C04F96A9C3__INCLUDE
D_)
#define
AFX_STDAFX_H__385D4249_82F5_11D2_BD1F_00C04F96A9C3__INCLUDED_
//{{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_)