Ir para conteúdo
Fórum Script Brasil
  • 0

Contribua para melhorar meu projeto (em JavaScript)


Eu o Mister HTML !!!

Pergunta

Oi pessoal, eu já postei no fórum de Windows sobre meu novo projeto (loadOnce), como ele funciona, as desvantagens e os termos de copyrighting. Se vocês querem contibuir com as correções e têm noções sobre HTML Application (*.hta) e o controle ActiveX Scripting.FileSystemObject, não deixe de enviar a correção para anteu311@ig.com.br ,desde que você concorde com os termos de copyrighting do projeto:

DEMO.HTA

<style>
BODY {filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=white,endColorstr=gainsboro)}
BUTTON {font-size: 8pt; color: dodgerblue; font-family: tahoma}
INPUT {font-family: tahoma; color: dodgerblue; font-size: 8pt; border: 1px solid gray; background: white; filter: progid:DXImageTransform.Microsoft.shadow(strength=3,color=gray,direction=135)}
SELECT {font-family: tahoma; color: dodgerblue; font-size: 8pt}
#statistics {background: maroon; color: white; font-size: 8pt; font-family: tahoma}
</style>

<body scroll=no style="margin: 0; padding: 0" onload="reloadStatistics()">

<title>Deutrix SatanForce LoadOnce (demonstação da tecnologia)</title>
<table width=100% height=100% cellspacing=0 cellpadding=0>
<tr height=36><td align=left><input id=httpaddress size=150 value="" onkeydown="if (event.keyCode == 13) verifyOnExistis()"">

<select onchange="eval(this.value)">
<option value="main.style.display = 'inline'; LOM.style.display = 'none';">Conteúdo principal</option>
<option value="main.style.display = 'none'; LOM.style.display = 'inline'; parent.LOMframe.location.reload()">Gerenciar loadOnce</option>
</select>

</td><td align=right><button onClick="LORecord()">» LO</button><button onClick="verifyOnExistis()">Carregar</button></td></tr>
<tr><td colspan=2>
<span id=main style="display: inline"><iframe allowTransparency=true width=100% height=100% src="" onload="LORecord(); reloadStatistics()" id=LOTec name=LOTec frameBorder=0></iframe></span>
<span id=LOM style="display: none"><iframe allowTransparency=true width=100% name="LOMframe" height=100% src="LOM.htm" frameBorder=0 application=yes></iframe></span>
</td></tr>
<tr height=30><td colspan=2 id=statistics>Estatística de sites salvos com LoadOnce indisponível.</td></table>
</table>

<!-- LoadOnce Module -->
<script>
var windowsExplorer = new ActiveXObject("Scripting.FileSystemObject")

function includeLinks(){
HTMLRes = ""
getOriginalPage = parent.LOTec.location.href

if (getOriginalPage.split('/')[getOriginalPage.split('/').length-1].indexOf('.') != -1){
getOriginalPage = getOriginalPage.substring(0, getOriginalPage.lastIndexOf('/')) + "/"
}

for (x=0;x<parent.LOTec.document.all.tags('link').length;x++){
HTMLRes += '<LINK rel="'+parent.LOTec.document.all.tags('link')[x].rel+'" type="'+parent.LOTec.document.all.tags('link')[x].type+'" href="'+getOriginalPage+''+parent.LOTec.document.all.tags('link')[x].href+'">'+unescape("%0D%0A")+''
}
return HTMLRes
}

function includeScripts(){
HTMLRes = ""

getOriginalPage = parent.LOTec.location.href
if (getOriginalPage.split('/')[getOriginalPage.split('/').length-1].indexOf('.') != -1){
getOriginalPage = getOriginalPage.substring(0, getOriginalPage.lastIndexOf('/')) + "/"
}

for (x=0;x<parent.LOTec.document.all.tags('script').length;x++){
if (parent.LOTec.document.all.tags('script')[x].src != ""){
HTMLRes += "<scr" + "ipt src=\"" + getOriginalPage + parent.LOTec.document.all.tags('script')[x].src + "\">" + "</scr" + "ipt>" + unescape("%0D%0A")
}}
return HTMLRes
}

function noScriptError(){
return "<scr" + "ipt>" + "window.onerror = new Function(\"return true\")" + "</scr" + "ipt>" + unescape("%0D%0A")
}

function LORecord(){
if (parent.LOTec.location.href == "about:blank"){}
else if (parent.LOTec.location.href.indexOf('http://') == 0){
getASCIIEncrypt = escape(parent.LOTec.location.href)
getASCIIEncrypt = getASCIIEncrypt.split('/')
getASCIIEncrypt = getASCIIEncrypt.join('[bar]')
getASCIIEncrypt = getASCIIEncrypt.split('.')
getASCIIEncrypt = getASCIIEncrypt.join('[point]')

for (x=0;x<parent.LOTec.document.images.length;x++){
parent.LOTec.document.images[x].src = parent.LOTec.document.images[x].src
}

for (x=0;x<parent.LOTec.document.links.length;x++){
try {
getPageCache = windowsExplorer.GetFile("C:\\LO\\Text-cache\\" + encryptFCacheName(parent.LOTec.document.links[x].href) + ".htm")
parent.LOTec.document.links[x].href = "C:\\LO\\Text-cache\\" + encryptFCacheName(parent.LOTec.document.links[x].href) + ".htm"
}
catch (isNotCached) {
parent.LOTec.document.links[x].href = parent.LOTec.document.links[x].href
}
}

for (x=0;x<parent.LOTec.document.all.tags('link').length;x++){
parent.LOTec.document.all.tags('link')[x].href = parent.LOTec.document.all.tags('link')[x].href
}

function captBodyAttributes(){
allBodyAttrib = parent.LOTec.document.body.attributes
HTMLRequest = new Array()

for (x=0;x<allBodyAttrib.length;x++){
if (allBodyAttrib[x].specified)
HTMLRequest[HTMLRequest.length] = allBodyAttrib[x].nodeName + "=" + "\"" + allBodyAttrib[x].nodeValue + "\""
}
return HTMLRequest.join(" ")
}

newCacheFile = windowsExplorer.CreateTextFile("C:\\LO\\Text-cache\\" + getASCIIEncrypt + ".htm")
newCacheFile.Write("<HTML><HEAD>" + includeLinks() + noScriptError() + "<TITLE>" + parent.LOTec.document.title + "</TITLE></HEAD><BODY " + captBodyAttributes() + ">" + includeScripts() + parent.LOTec.document.body.innerHTML + "</BODY></HTML>")
newCacheFile.Close()
httpaddress.value = parent.LOTec.location.href
reloadStatistics()
}}


function encryptFCacheName(decrypted){
getASCIIEncrypt = escape(decrypted)
getASCIIEncrypt = getASCIIEncrypt.split('/')
getASCIIEncrypt = getASCIIEncrypt.join('[bar]')
getASCIIEncrypt = getASCIIEncrypt.split('.')
getASCIIEncrypt = getASCIIEncrypt.join('[point]')
return getASCIIEncrypt
}

function reloadStatistics(){
byteLevelNames = new Array("B","KB","MB","GB","TB")
byteLevel = 0

getCache = windowsExplorer.GetFolder("C:\\LO\\Text-cache")
allHTMLFiles = new Enumerator(getCache.files)
totalFiles = 0

for (; !allHTMLFiles.atEnd(); allHTMLFiles.moveNext()){
totalFiles++
}

fullCapacity = getCache.size

for (x=0;x<1;x++){
if (fullCapacity >= 1024){
fullCapacity = fullCapacity/1024
byteLevel++
x = -1
}}

fullCapacity = parseFloat(0.01)+parseFloat(fullCapacity)
fullCapacity = new String(fullCapacity)
fullCapacity = fullCapacity.substring(0, fullCapacity.indexOf('.')+3)
fullCapacity = fullCapacity.split('.')
fullCapacity = fullCapacity.join(',')

statistics.innerHTML = "Tamanho do cache: " + fullCapacity + " " + byteLevelNames[byteLevel] + ", Total de sites salvos com loadOnce: " + totalFiles
}

function verifyOnExistis(){
captHTTP = escape(httpaddress.value)
captHTTP = captHTTP.split('/')
captHTTP = captHTTP.join('[bar]')
captHTTP = captHTTP.split('.')
captHTTP = captHTTP.join('[point]')

try {
doing_test = windowsExplorer.GetFile("C:\\LO\\Text-cache\\" + captHTTP + ".htm")
parent.LOTec.location.href = "C:\\LO\\Text-cache\\" + captHTTP + ".htm"
}
catch (loadOnce){
parent.LOTec.location.href = httpaddress.value
}}
</script>

[/codebox]

LOM.htm:

[codebox]<style>
#allSavedSites TR TD {color: dodgerblue; font-family: tahoma; font-size: 8pt; cursor: hand}
BODY {filter: progid:DXImageTransform.Microsoft.gradient(startColorStr=white,endColorStr=gainsboro); overflow: hidden}
H1 {font-family: BankGothic LT BT; color: orangered; font-weight: normal; font-size: 21pt; text-align: center}
SPAN {color: dimgray; font-family: tahoma; font-size: 8pt}
</style>

<script>
var windowsExplorer = new ActiveXObject("Scripting.FileSystemObject")
</script>

<h1>Sites salvos com LoadOnce, do SatanForce Tecnology</h1>

<div style="width: 100%; height: 500; overflow: auto">
<table id=allSavedSites width=100%>
<script>
getCache = windowsExplorer.GetFolder("C:\\LO\\Text-cache")
allSites = new Enumerator(getCache.files)

for (; !allSites.atEnd(); allSites.moveNext()){
document.write("<tr onClick=\"getInfo()\" oncontextmenu=\"deletePage(); return false\"><td cacheFile=\"" + allSites.item() + "\">" + strDec(allSites.item()) + "</td></tr>")
}

function strDec(encryptedWWWAddress){
encryptedWWWAddress = new String(encryptedWWWAddress)
encryptedWWWAddress = encryptedWWWAddress.substring(encryptedWWWAddress.lastIndexOf('\\')+1, encryptedWWWAddress.lastIndexOf('.'))
encryptedWWWAddress = unescape(encryptedWWWAddress)
encryptedWWWAddress = encryptedWWWAddress.split('[bar]')
encryptedWWWAddress = encryptedWWWAddress.join('/')
encryptedWWWAddress = encryptedWWWAddress.split('[point]')
encryptedWWWAddress = encryptedWWWAddress.join('.')
return encryptedWWWAddress
}

function deletePage(){
printScreen = event.srcElement
if (confirm("Deseja realmente excluir a página '" + printScreen.innerText + "' para que seja permitida que o endereço seje carregado da próxima vez do seu endereço original?")){
windowsExplorer.DeleteFile(printScreen.cacheFile)
location.reload()
}}

function getInfo(){
printScreen = event.srcElement
selCacheWWW = windowsExplorer.GetFile(printScreen.cacheFile)

filteredDCInfo = new Array()
month_text2num = new Array()
month_text2num["Jan"] = 1
month_text2num["Feb"] = 2
month_text2num["Mar"] = 3
month_text2num["Apr"] = 4
month_text2num["May"] = 5
month_text2num["Jun"] = 6
month_text2num["Jul"] = 7
month_text2num["Aug"] = 8
month_text2num["Sep"] = 9
month_text2num["Oct"] = 10
month_text2num["Nov"] = 11
month_text2num["Dec"] = 12


receiveDCInfo = ''+selCacheWWW.DateCreated+''
receiveDCInfo = receiveDCInfo.split(' ')
filteredDCInfo[0] = receiveDCInfo[3].substring(0, receiveDCInfo[3].lastIndexOf(':'))
filteredDCInfo[1] = receiveDCInfo[2] + "/" + month_text2num[receiveDCInfo[1]] + "/" + receiveDCInfo[5]
filteredDCInfo[1] = filteredDCInfo[1].split('/')
filteredDCInfo[1] = gregorian2tryen(filteredDCInfo[1][0],filteredDCInfo[1][1],filteredDCInfo[1][2])
alert("Data de criação: " + "\t\t" + filteredDCInfo[1] + "\n" + "Horário de criação: " + "\t\t" + filteredDCInfo[0] + "\n" + "Tamanho: " + "\t\t" + byte2varbyte(printScreen.cacheFile))
}

function byte2varbyte(file){
byteLevelNames = new Array("B","KB","MB","GB","TB")
byteLevel = 0

getCacheFile = windowsExplorer.GetFile(file)
fsize = getCacheFile.size

for (x=0;x<1;x++){
if (fsize >= 1024){
fsize = fsize/1024
byteLevel++
x = -1
}}

fsize = parseFloat(0.01)+parseFloat(fsize)
fsize = new String(fsize)
fsize = fsize.substring(0, fsize.indexOf('.')+3)
fsize = fsize.split('.')
fsize = fsize.join(',')
return fsize + " " + byteLevelNames[byteLevel]
}


function gregorian2tryen(day, month, year){
tryenDaysPast = 0
todayTryen = new Date()
todayDay = todayTryen.getDate(year,month,day)
todayMonth = todayTryen.getMonth()
todayYear = todayTryen.getYear()
daysMonth = new Array("31","28","31","30","31","30","31","31","30","31","30","31")
if (todayYear%4==0){daysMonth[1]="29"}
tryenDaysPast=parseFloat(parseFloat(tryenDaysPast)+parseFloat(26))

for (x=2006;x<todayYear;x++){
if (x%4=="0"){
tryenDaysPast=parseFloat(parseFloat(tryenDaysPast)+parseFloat(366))}
else {tryenDaysPast=parseFloat(parseFloat(tryenDaysPast)+parseFloat(365))}
}

if (todayMonth=="1"){tryenDaysPast=parseFloat(parseFloat(tryenDaysPast)+parseFloat(todayDay))}
else if (todayMonth=="2"){tryenDaysPast=parseFloat(parseFloat(tryenDaysPast)+parseFloat(daysMonth[0])+parseFloat(todayDay))}
else if (todayMonth=="3"){tryenDaysPast=parseFloat(parseFloat(tryenDaysPast)+parseFloat(daysMonth[0])+parseFloat(daysMonth[1])+parseFloat(todayDay))}
else if (todayMonth=="4"){tryenDaysPast=parseFloat(parseFloat(tryenDaysPast)+parseFloat(daysMonth[0])+parseFloat(daysMonth[1])+parseFloat(daysMonth[2])+parseFloat(todayDay))}
else if (todayMonth=="5"){tryenDaysPast=parseFloat(parseFloat(tryenDaysPast)+parseFloat(daysMonth[0])+parseFloat(daysMonth[1])+parseFloat(daysMonth[2])+parseFloat(daysMonth[3])+parseFloat(todayDay))}
else if (todayMonth=="6"){tryenDaysPast=parseFloat(parseFloat(tryenDaysPast)+parseFloat(daysMonth[0])+parseFloat(daysMonth[1])+parseFloat(daysMonth[2])+parseFloat(daysMonth[3])+parseFloat(daysMonth[4])+parseFloat(todayDay))}
else if (todayMonth=="7"){tryenDaysPast=parseFloat(parseFloat(tryenDaysPast)+parseFloat(daysMonth[0])+parseFloat(daysMonth[1])+parseFloat(daysMonth[2])+parseFloat(daysMonth[3])+parseFloat(daysMonth[4])+parseFloat(daysMonth[5])+parseFloat(todayDay))}
else if (todayMonth=="8"){tryenDaysPast=parseFloat(parseFloat(tryenDaysPast)+parseFloat(daysMonth[0])+parseFloat(daysMonth[1])+parseFloat(daysMonth[2])+parseFloat(daysMonth[3])+parseFloat(daysMonth[4])+parseFloat(daysMonth[5])+parseFloat(daysMonth[6])+parseFloat(todayDay))}
else if (todayMonth=="9"){tryenDaysPast=parseFloat(parseFloat(tryenDaysPast)+parseFloat(daysMonth[0])+parseFloat(daysMonth[1])+parseFloat(daysMonth[2])+parseFloat(daysMonth[3])+parseFloat(daysMonth[4])+parseFloat(daysMonth[5])+parseFloat(daysMonth[6])+parseFloat(daysMonth[7])+parseFloat(todayDay))}
else if (todayMonth=="10"){tryenDaysPast=parseFloat(parseFloat(tryenDaysPast)+parseFloat(daysMonth[0])+parseFloat(daysMonth[1])+parseFloat(daysMonth[2])+parseFloat(daysMonth[3])+parseFloat(daysMonth[4])+parseFloat(daysMonth[5])+parseFloat(daysMonth[6])+parseFloat(daysMonth[7])+parseFloat(daysMonth[8])+parseFloat(todayDay))}
else if (todayMonth=="11"){tryenDaysPast=parseFloat(parseFloat(tryenDaysPast)+parseFloat(daysMonth[0])+parseFloat(daysMonth[1])+parseFloat(daysMonth[2])+parseFloat(daysMonth[3])+parseFloat(daysMonth[4])+parseFloat(daysMonth[5])+parseFloat(daysMonth[6])+parseFloat(daysMonth[7])+parseFloat(daysMonth[8])+parseFloat(daysMonth[9])+parseFloat(todayDay))}
else if (todayMonth=="12"){tryenDaysPast=parseFloat(parseFloat(tryenDaysPast)+parseFloat(daysMonth[0])+parseFloat(daysMonth[1])+parseFloat(daysMonth[2])+parseFloat(daysMonth[3])+parseFloat(daysMonth[4])+parseFloat(daysMonth[5])+parseFloat(daysMonth[6])+parseFloat(daysMonth[7])+parseFloat(daysMonth[8])+parseFloat(daysMonth[9])+parseFloat(daysMonth[10])+parseFloat(todayDay))}
return tryenDaysPast + " AT"
}
</script>
</table>
</div>

<span>
A tecnologia LoadOnce, ainda em fases de aperfeiçoamento, vai permitir ao usuário velocidade total ao carregar as páginas, prinicpalmente aquelas que forem visitadas mais de uma vez. Como próprio nome diz, você carrega a informação do servidor remoto uma única vez para ser acessada mesmo que você esteje desconectado da Internet posteriormente. Mas é recomendável você excluir páginas do cache, caso desconfie que aquela página é velha demais. Assim, o programa irá regrao arquivo atualizado no cache.<br><br>
<center>Clique com o botão esquerdo para obter informações e com botão direito para excluir uma página do cache</center>
</span>

É isso. Espero que não enchi o saco de ninguém com essa divulgação do meu projeto novo em JavaScript. E vocês podem ir até o site da Microsoft MSDN (em inglês) para ter noção de HTML Application e Scripting.FileSystemObject. A descrição se encontra clicando em INFO e o download em BAIXAR (os dois links se encontram na minha assinatura)

Planejamento

LoadOnce 1.0* (Disponível em forma de teste)

LoadOnce 1.1 (Em desenvolvimento, será lançado integrado ao projeto em HTML Application Deutrix millennium Browser 2008)

LoadOnce 2.0 (Em fase de planejamento [nem um byte foi digitado], será lançado junto com o sucessor do DMB 2008, que tem o nome de "Deutrix Millennium Browser Satanforce", provavelmente em 2009)

Boas sugestões!

Editado por Eu o Mister HTML !!!
Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

Eu não consigo baixar, o megaupload não acha o link.

Não tem como você botar num servidor free? É bem melhor...

Tenho algumas dúvidas sobre o projeto. Ele colocaria os arquivos html em cache, estou certo? Mas isso já não é feito pelos navegadores?

Eu quero entender e testar o seu código, conserta lá o link por favor. Eu tenho um projeto desktop também usando javascript, não sei nada sobre hta, estou agora interessado em saber mais sobre o assunto.

Akelabrassssss

ps: Ahh...o meu projeto ta no site que ainda estou construindo, tá no meu perfil o link caso queira dar uma olhada.

Link para o comentário
Compartilhar em outros sites

  • 0
Eu não consigo baixar, o megaupload não acha o link.

Não tem como você botar num servidor free? É bem melhor...

Tenho algumas dúvidas sobre o projeto. Ele colocaria os arquivos html em cache, estou certo? Mas isso já não é feito pelos navegadores?

Eu quero entender e testar o seu código, conserta lá o link por favor. Eu tenho um projeto desktop também usando javascript, não sei nada sobre hta, estou agora interessado em saber mais sobre o assunto.

Akelabrassssss

ps: Ahh...o meu projeto ta no site que ainda estou construindo, tá no meu perfil o link caso queira dar uma olhada.

Engraçado esse MEGAUPLOAD, consegui acessar meu login apenas uma vez e depois digitei meus dados tudo correto e o MEGAUPLOAD diz que está incorreto, sabendo-se que era correto.

O loadOnce (LO) se diferencia do amarzenamento em cache por seguintes motivos

  1. Transforma páginas em cache disponível off-line (o IE faz isso?)
  2. Na segunda vez que você acessar a mesma página, o LO faz uma verificação no cache antes de carregar a página. Se encontrar, o LO redireciona a página para a página do cache ao invés de carregar novamente do servidor remoto original. Isso faz que as páginas carregem mais rápido. Como o Objeto ActiveX não consegue interagir com servidores remotos, ele apenas salva o código fonte, e transforma endereços relativos (pasta/arq.ext) em absoluto (http://site.com/pasta/arq.ext), para que o browser não pense que o arquivo está no cache do LO
  3. A versão do LO está desatualizada (1.0). Foi feita uma versão 1.01 do mesmo, com correções em referência de arquivos CSS e JS, além do mais, ele acrescenta o código
    <script>window.onerror = new Function("return true")</script>

    para não mostrar a cx de diálogo "Erro no script dessa página". A versão 1.01 ainda não está disponível on-line

  4. Com essa TECNOLOGIA, o LO carrega páginas mais rápido do que o IE. Mas ainda precisa mostrar mais rápido que firefox, opera, safari e navigator.
  5. Tem o LOM (LO manager), um gerenciador, que permite que você possa ter informações e também a possibilidade de deletar páginas no cache, caso suspeite que ela é muito antiga
é sempre bom consultar o MICROSOFT MSDN pois lá você pode aprender sobre HTA

Link para o comentário
Compartilhar em outros sites

  • 0

Hum....

Bom eu vou esperar mais um pouco pra fazer o download porque o megaupload está dizendo que estão temporariamente usando toda a banda para usuários premium.

Vou dar uma olhada no msdn.

Link para o comentário
Compartilhar em outros sites

  • 0

Ola KaKarotto, fico feliz que você tenha entendido como o loadOnce (pronucia-se ludánuce) funciona. Enquanto ao MegaUpload, eu não uso uma conta premium, pois não quero pagar para o servidor. Essa conta é mesmo limitada. Infelizmente, parece que não tem uma função de anexar arquivos no fórum... por isso uso essa conta no megaUpload.

Dá para botar tudo para funcionar sem fazer o download:

No disco rígido (C:\) crie uma pasta denominada LO, ficando C:\LO. Crie os arquivos "demo.hta" e "LOM.htm", cujo conteúdo corresponde ao script que passei no primeiro post.

Crie dentro da pasta LO, uma pasta que vai ser o cache (Text-cache), ficando C:\LO\Text-cache

Duplo clique em demo.hta

NOTA: Já existe uma versão 1.01, que ainda não coloquei disponibilidade na Internet, que corrige o problema de sites mal-formatados e com muitos erros de script

A versão 1.1 fará parte do Deutrix Millennium Browser 2008 (Um navegador que usa o loadOnce, mas está em desenvolvimento). A versão 1.1 não usa uma pasta, mas um arquivo .XML. Além disso, o conteúdo do arquivo precisa ser "criptografado" para evitar que haja erros no arquivo XML. Quando ele é acessado, o navegador cria um arquivo temporário (temp.htm), mas dessa vez é devidamente descriptografado. Mas ainda mantêm as vantagens da versão 1.01.

(Vou tentar postar a versão 1.01 no meu post sábado agora)

A versão 1.1 não vai estar disponível enquanto eu não lanço o Millennium

Link para o comentário
Compartilhar em outros sites

  • 0

Ué..to louco?

Você tentou editar o seu primeiro post? O tópico? Edição completa?

Eu já coloquei um arquivo pra baixar: http://scriptbrasil.com.br/forum/index.php?showtopic=113386

Agora você falando que não conseguiu me surgiu a dúvida se membros podem anexar arquivos...

Seguinte, o LO não funcionou até que eu colocasse o cabeçalho hta e definisse o documento como html.

Eu queria dar umas sugestões...não tenho a solução dos seus problemas, mas eu acho que deveria documentar o projeto em um site ou disponibilizar via txt. Comentar os códigos também seria uma boa.

Digo isso porque precisa de tempo pra entender o projeto todo, estou falando do script não a idéia. A idéia da pra entender rapidamente, mas o script precisa gastar um bom tempo pra entender para ajudar. Então, comentários, documentação seria interessante para outros desenvolvedores ajudarem e tal. Se você fizer api também seria interessante, assim o programador não precisaria perder tempo tentando entender scripts que não precisa entender...

Bom, boa sorte ae o/. Seu post foi extremamente importante pra mim porque eu não conhecia o hta application e este solucionou 90% dos problemas que eu tinha como meu projeto.

QUando surgir luz e tempo tentarei ajudar de alguma forma ;)

Akelabrassssssssssssss

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...