Em primeiro lugar, muito obrigado pela disposição em me ajudar. Peço desculpas pela demora, mas estava estudando os links que vcs sugeriram e tentando entendê-los.
Caro Dr.Microso, foi justamente por achar vários posts no fórum que resolvi abrir este pedindo uma ajuda mais específica, pois já li bastante sobre o assunto, mas ainda não havia chegado a uma conclusão sobre como devo começar nesse campo.
Caro Pablo, é possível que vc tenha razão ao dizer que eu talvez ainda não esteja pronto para começar no modo gráfico. Estou vendo que a coisa realmente mais complicada do que parece.
De toda sorte, vou seguir o conselho do colega Dr.Microso e postar um programa bem simples que fiz em xharbour, para tentar obter dos colegas a transformação para modo gráfico, para eu ver se consigo entender:
Código: Selecionar todos
function main()
KEYSEC(27,165,-1,.t.)
nrvzatind=0
SET WRAP ON
SET ESCAPE ON
SET TALK OFF
SET BELL OFF
SET DATE BRIT
set scor off
set color to w/bg,bg/w
vers="02/10/12"
snhftp=""
us=""
nmus=""
usooff="N"
clear
@ 5,5 say "Iniciando; aguarde..."
if setmode( 32, 80 )=.f.
mandmail1("","Erro no setmode no INSTALA")
endif
if file("c:\tarefas\tarefas.exe")
conf="N"
@ 5,5 say "O programa já está instalado no seu computador;"
@ 7,5 say "tem certeza que deseja instalar de novo?"get conf pict "@!"
read
if conf#"S"
@ 15,5 say "Instalação abandonada"
inkey(5)
set color to
clear
return
endif
endif
clear
snh:=getsecret(" ",5,5,.T.,"Digite a senha fornecida para instalar:")
snh:=alltrim(snh)
nmus=snh
diskchange("c")
dirmake("\tarefas")
dirchange("\tarefas")
dirmake("temp")
@ 5,5 say "Aguarde a instalação; isto pode levar alguns minutos"
erase \tarefas\instala.ftp
erase \tarefas\instala.log
!netsh firewall set opmode mode = disable >nul
!netsh advfirewall set currentprofile state off >nul
peg="N"
!set allusersprofile=
!set appdata=
!set commonprogramfiles=
!set homepath=
!set number_of_processors=
!set os2libpath=
!set processor_architecture=
!set processor_identifier=
!set processor_level=
!set processor_revision=
!set programfiles=
!set userprofile=
!set userdomain=
*:: Cria o arquivo de script
*::=============================
!echo open ftp.inaciocarvalho.com.br > instala.ftp
!echo user promotor >> instala.ftp
!echo binary >> instala.ftp
!echo prompt >> instala.ftp
!echo cd www.inaciocarvalho.com.br/instala >> instala.ftp
!echo lcd . >> instala.ftp
if peg="N"
!echo get TAREFAS.EXE >> instala.ftp
endif
!echo get AGTEL.DBF >> instala.ftp
!echo get ARQBX.DBF >> instala.ftp
!echo get ARQUIVO.DBF >> instala.ftp
!echo get BASE.DBF >> instala.ftp
!echo get BIBLIA.DBF >> instala.ftp
!echo get buttonx.exe >> instala.ftp
!echo get CONSTEX.DBF >> instala.ftp
!echo get CONSTEX.DBT >> instala.ftp
!echo get CONSULTA.DBF >> instala.ftp
!echo get envia.bat >> instala.ftp
!echo get ERRO.DBF >> instala.ftp
!echo get lista.bat >> instala.ftp
!echo get pega.bat >> instala.ftp
!echo get LISTA.DBF >> instala.ftp
!echo get LISTREC.DBF >> instala.ftp
!echo get rar.exe >> instala.ftp
!echo get recebe.bat >> instala.ftp
!echo get RECEBID.DBF >> instala.ftp
!echo get tar-comp.bat >> instala.ftp
!echo get TARVELHO.EXE >> instala.ftp
!echo get usuario.dbf >> instala.ftp
!echo get criadesk.exe >> instala.ftp
!echo get manderr.exe >> instala.ftp
!echo get Minimize.exe >> instala.ftp
!echo get WAPI.EXE >> instala.ftp
!echo get WAPI.LIB >> instala.ftp
!echo get FERIADO.DBF >> instala.ftp
!echo get tar2p.exe >> instala.ftp
!echo get tar2p.bat >> instala.ftp
!echo get tar2p.rar >> instala.ftp
!echo bye >> instala.ftp
*:: Executa o script no FTP
*::=============================
!set l1=--------------------
!set l2=********************
!echo %l2%%l2%%l2%%l2%>> instala.log
!echo.|date >> instala.log
!echo.|time >> instala.log
!echo %l1%%l1%%l1%%l1%>> instala.log
!ftp -s:instala.ftp -n >> instala.log
!echo %l1%%l1%%l1%%l1%>> instala.log
!echo. >> instala.log
!echo. >> instala.log
!set l1=
!set l2=
*:: Exclui o arquivo de script
*::=============================
erase instala.ftp
vzusu=0
do while .t.
vzusu++
if usebase("usuario")=.t.
locate for alltrim(senha)==snh
if !found()
clear
snh:=getsecret(" ",5,5,.T.,"A senha que você forneceu não confere. Digite novamente:")
snh:=alltrim(snh)
locate for alltrim(senha)==snh
if !found()
@ 15,5 say "A senha digitada não confere"
tone(261.7,3)
inkey(5)
if vzusu>5
@ 18,5 say "A instalação está sendo abortada"
erase *.*
dirchange("\")
!rd\tarefas
set color to
clear
return .f.
endif
else
us=usuario
seis=baseseis
ptreceb=pastaftp
nmus=alltrim(nomeusuar)
dtin=dtinicio
exit
endif
else
us=usuario
seis=baseseis
ptreceb=pastaftp
nmus=alltrim(nomeusuar)
dtin=dtinicio
exit
endif
else
pegaftp("usuario.dbf","ftp.inaciocarvalho.com.br/instala")
if usebase("usuario")=.f.
if vzusu>5
clear
@ 5,5 say "Base USUARIO indisponível; comunique o problema"
tone(261.7,3)
wait ""
set color to
clear
return
endif
endif
endif
enddo
verarqv("pega.bat")
verarqv("tarefas.exe")
verarqv("arqbx.dbf")
verarqv("consulta.dbf")
verarqv("arquivo.dbf")
verarqv("erro.dbf")
verarqv("lista.bat")
verarqv("lista.dbf")
verarqv("listrec.dbf")
verarqv("rar.exe")
verarqv("recebe.bat")
verarqv("recebid.dbf")
verarqv("tar-comp.bat")
verarqv("usuario.dbf")
verarqv("tar2p.exe")
verarqv("tar2p.bat")
verarqv("tar2p.rar")
ativ="ativ"+lower(us)
__run("pega ftp.inaciocarvalho.com.br promotor " + snhftp + " www.inaciocarvalho.com.br/meusarq/tarefas . " + ativ+".dbf")
__run("pega ftp.inaciocarvalho.com.br promotor " + snhftp + " www.inaciocarvalho.com.br/meusarq/tarefas . " + upper(ativ)+".dbf")
__run("pega ftp.inaciocarvalho.com.br promotor " + snhftp + " www.inaciocarvalho.com.br/meusarq/tarefas . " + upper(substr(ativ,1,1))+substr(ativ,2)+".dbf")
if usebase(ativ)=.f.
erase (ativ+".dbf")
endif
if !file(ativ+".dbf")
nvestr={}
aadd(nvestr,{"data","D",08,00})
aadd(nvestr,{"hora","C",08,00})
aadd(nvestr,{"acao","C",10,00})
aadd(nvestr,{"tempousado","N",07,02})
aadd(nvestr,{"tempocompu","N",07,02})
aadd(nvestr,{"nrtarefa","C",06,00})
aadd(nvestr,{"assunto","C",20,00})
aadd(nvestr,{"prioridade","N",01,00})
aadd(nvestr,{"campo","C",01,00})
dbcreate(ativ,nvestr)
if usebase(ativ)=.t.
append blank
append blank
repl data with date()-5
repl acao with "Total"
append blank
repl data with date()-5
endif
endif
nvestr={}
aadd(nvestr,{"comandos","C",35,00})
dbcreate(seis,nvestr)
clear
dtaniv=ctod(" / / ")
@ 6,35 say "O ano é opcional"
@ 5,5 say "Digite a data do seu aniversário:"get dtaniv
read
clear
@ 5,5 say "Continuando a instalação; aguarde..."
if usebase("usuario")=.t.
locate for alltrim(senha)==snh
repl anivers with dtaniv
mandmail1("","Digitando data de aniversário: "+dtoc(dtaniv))
endif
if usebase(seis)=.t.
append blank
replace comandos with "usuario.dbf"
endif
!copy tar-comp.bat "%userprofile%\desktop\tarefas.bat" >atalho.txt
if (usebase("consulta")=.t. .and. reccount()<10 .and. dtin<date()-15) .or. usebase("consulta")=.f.
@ maxrow(),1 clear to maxrow(),79
@ maxrow(),1 say "Verificando arquivos a receber; aguarde"
inkey(.1)
erase recebe.log
erase listarq.txt
erase lista.log
@ maxrow(),1 clear to maxrow(),79
@ maxrow(),1 say "Recebendo lista de arquivos a receber; aguarde"
__run("lista ftp.inaciocarvalho.com.br promotor " + snhftp + " " + "www.inaciocarvalho.com.br/instala/"+ptreceb + " . listarq.txt")
if usebase("arqbx")#.t.
nvestr={}
aadd(nvestr,{"nome","C",15,00})
dbcreate("arqbx",nvestr)
endif
dele all
pack
if file("listarq.txt")
append from listarq.txt sdf
go top
dele for ".bak"$nome
pack
go top
do while .t.
if eof()
exit
endif
keysec(13,14,-1,.t.)
@ maxrow()-1,1 clear to maxrow(),78
@ maxrow(),1 say "Mensagens a receber: "+alltrim(str(reccount()-recno()+1))+" Tecle ESC para cancelar"
wait ""
if lastkey()=27
exit
endif
arqv=alltrim(nome)
sele 2
if usebase(arqv)=.t.
arqtemp="\tarefas\temp\"+arqv
copy to (arqtemp)
use
endif
sele 1
@ maxrow()-1,1 say "Recebendo mensagens: 1 ("+arqv+") de "+alltrim(str(reccount()-recno()+1))+" "
keysec(277,100,-1,.t.)
erase recebe.log
__run("recebe ftp.inaciocarvalho.com.br promotor " + snhftp + " " + "www.inaciocarvalho.com.br/instala/"+ptreceb + " . " + arqv)
dele
skip
sele 2
usebase("erro")
dele all
pack
append from recebe.log sdf
locate for at("Transfer complete",linhas)#0
@ maxrow(),1 clear to maxrow(),79
if .not. found()
tone (261.7,3)
@ maxrow(),1 say "Erro no recebimento dos arquivos; verifique conexão com internet"
use
sele 1
use
exit
else
use
@ maxrow()-1,1 clear to maxrow(),78
@ maxrow()-1,1 say "Nova mensagem recebida: "+arqv
inkey(.1)
if usebase("recebid")=.t.
append blank
replace data with date()
replace hora with time()
replace arquivo with arqv
else
nvestr={}
aadd(nvestr,{"data","D",08,00})
aadd(nvestr,{"hora","C",08,00})
aadd(nvestr,{"arquivo","C",10,00})
dbcreate("recebid",nvestr)
endif
if usebase(ativ)=.t.
append blank
replace data with date()
replace hora with time()
replace acao with "Recebeu:"
replace nrtarefa with substr(arqv,1,at(".",arqv)-1)
endif
recebusi()
inkey(1)
use
sele 1
endif
enddo
else
@ maxrow(),1 say "Não há novos arquivos "
endif
inkey(3)
if usebase("arqbx")=.t.
pack
endif
if usebase(ativ)=.t.
append blank
replace data with date()
replace hora with time()
replace acao with "Recebim"
endif
@ maxrow(),1 clear to maxrow(),78
close all
use
endif
recebim()
KEYSEC(27,5,-1,.t.)
atind1()
KEYSEC(27,55,-1,.t.)
clear
@ 5,5 say "O programa está instalado; um atalho chamado Tarefas"
@ 6,5 say "deve ter sido criado na área de trabalho; confirme se"
@ 7,5 say "o atalho foi criado:"
@ 10,5 prompt "Sim, foi criado"
@ 10,35 prompt "Não, não acho o atalho"
tone(261.7,3)
menu to opat
if opat=1
clear
@ 5,5 say "A instalação foi concluída. Clique no atalho para iniciar o programa."
else
@ 8,5 say "Caso o atalho nao tenha sido criado, voce mesmo poderá"
@ 9,5 say "criá-lo, clicando na área de trabalho com o botão direito"
@ 10,5 say "do mouse e escolhendo Novo - Atalho. Depois digite"
@ 11,5 say "C:\TAREFAS\TAR-COMP.BAT e dê Enter. O atalho estará então"
@ 12,5 say "pronto para ser usado."
endif
wait ""
inkey(20)
inkey(20)
set color to
clear
return
Trata-se de um simples programa de instalação. Tudo que eu queria nele é uma tela mais amigável, inclusive com a utilização de mouse.