Jump to content

Elias Assad Neto

Membros
  • Content count

    37
  • Joined

  • Last visited

  • Days Won

    2

Elias Assad Neto last won the day on April 18 2017

Elias Assad Neto had the most liked content!

Community Reputation

3 Neutro

1 Follower

About Elias Assad Neto

  • Rank
    Membro
  • Birthday 06/03/1958

Profile Information

  • Gender
    Male
  • Location
    São Pailo / SP
  1. Portal Unico Siscomex DUE (Documento Único de Exportação) Alguém aqui tem alguma experiencia usando o AutoIt para a autenticação e envio de XML no Portal Único Siscomex Aqui explica como acessar mas estou bem perdido ainda mais na autenticação URL: https://val.portalunico.siscomex.gov.br/docs/api/#autentica-o Abaixo pode ser que ajude. PUCOMEX MSDN https://social.msdn.microsoft.com/Forums/pt-BR/72c6fefa-6b77-48ce-af32-c5b67d8f7c3f/enviar-xml-via-json-rest-preciso-de-ajuda-urgente?forum=aspnetpt PUSiscomex.au3 #Region ;**** Directives created by AutoIt3Wrapper_GUI **** #AutoIt3Wrapper_UseX64=y #AutoIt3Wrapper_Res_Fileversion=0.0.0.0 #AutoIt3Wrapper_Res_LegalCopyright=Elias Assa Neto Informatica ME 2018 #AutoIt3Wrapper_Run_Au3Stripper=y #Au3Stripper_Parameters=/so /mo #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI **** #cs ---------------------------------------------------------------------------- AutoIt Version: 3.3.14.2 Author: Elias Assad Neto Script Function: Acesso Portal Unico Siscomex https://val.portalunico.siscomex.gov.br/docs/api/#autentica-o POST https://<url>/portal/api/autenticar Pedido se suporte 7/ago/2018 16:32 Solicitação de Serviço 2018SS/0000626704 criada com sucesso! #ce ---------------------------------------------------------------------------- ; Script Start - Add your code below here #include "_sVar.au3" ; Debug #include "WinHttp.au3" Opt("MustDeclareVars", 1) Global $sPUSVal = "val.portalunico.siscomex.gov.br" ; Teste Validação Global $sPUS = ""; "portalunico.siscomex.gov.br" Global $sAtenticar = "portal/api/autenticar" ; Autenticação ;https://val.portalunico.siscomex.gov.br/portal/api/autenticar?Role-Type=IMPEXP If Not @Compiled Then $sPUS = $sPUSVal ; No desenvolvimento trabalha com a Validação ; !!!Note that this example will fail because of invalid username and password!!! ; Use real data for authentication ;Global $sUserName = "SomeUserName" ;Global $sPassword = "SomePassword" ;Global $sDomain = "www.google.com" ;Global $sPage = "accounts/ClientLogin" ; Visit http://code.google.com/apis/accounts/docs/AuthForInstalledApps.html for more informations ;Global $sAdditionalData = "accountType=HOSTED_OR_GOOGLE&Email=" & $sUserName & "&Passwd=" & $sPassword & "&service=mail&source=Gulp-CalGulp-1.05" ; Visit http://code.google.com/apis/accounts/docs/AuthForInstalledApps.html for more informations ;Global $sAdditionalData = Default Global $sDomain = $sPUS ; Portal Unico Siscomex Global $sPage = $sAtenticar ; Autenticação Global $sAdditionalData = "Role-Type:IMPEXP" ; Initialize and get session handle Global $hOpen = _WinHttpOpen() ; Get connection handle Global $hConnect = _WinHttpConnect($hOpen, $sDomain) ; SimpleSSL-request it... Global $sReturned = _WinHttpSimpleSSLRequest($hConnect, "POST", $sPage, Default, $sAdditionalData) WErrorWinHttp("_WinHttpSimpleSSLRequest",@error) _Var($sReturned,"$sReturned") ; #FUNCTION# ==================================================================================================================== ;_WinHttpSimpleSSLRequest($hConnect, $sType = Default, $sPath = Default, $sReferrer = Default, $sData = Default, $sHeader = Default, $fGetHeaders = Default, $iMode = Default, $sCredName = Default, $sCredPass = Default, $iIgnoreCertErrors = 0) ; Name...........: _WinHttpSimpleSSLRequest ; Description ...: A function to send a SSL request in a simpler form ; Syntax.........: _WinHttpSimpleSSLRequest($hConnect [, $sType [, $sPath [, $sReferrer = Default [, $sData = Default [, $sHeader = Default [, $fGetHeaders = Default [, $iMode = Default ]]]]]]]) ; Parameters ....: $hConnect - Handle from _WinHttpConnect ; $sType - [optional] GET or POST (default: GET) ; $sPath - [optional] request path (default: "" - empty string; meaning 'default' page on the server) ; $sReferrer - [optional] referrer (default: $WINHTTP_NO_REFERER) ; $sData - [optional] POST-Data (default: $WINHTTP_NO_REQUEST_DATA) ; $sHeader - [optional] additional Headers (default: $WINHTTP_NO_ADDITIONAL_HEADERS) ; $fGetHeaders - [optional] return response headers (default: False) ; $iMode - [optional] reading mode of result ; |0 - ASCII-text ; |1 - UTF-8 text ; |2 - binary data ; Return values .: Success - response data if $fGetHeaders = False (default) ; |Array if $fGetHeaders = True ; | [0] - response headers ; | [1] - response data ; Failure - 0 and set @error ; |1 - could not open request ; |2 - could not send request ; |3 - could not receive response ; |4 - $iMode is not valid ; Author ........: ProgAndy ; Modified.......: trancexx ; Related .......: _WinHttpSimpleRequest, _WinHttpSimpleSendSSLRequest, _WinHttpSimpleSendRequest, _WinHttpQueryHeaders, _WinHttpSimpleReadData ; =============================================================================================================================== ; Close handles _WinHttpCloseHandle($hConnect) _WinHttpCloseHandle($hOpen) ; See what's returned MsgBox(0, "Returned", $sReturned) Func WErrorWinHttp($sFunc,$R = 0, $error = @error, $extended = @extended) ; Mostra a descrição do erro de WinHttp.au3 If $error = 0 Then Return SetError($error, $extended) Static $sau3 = FileRead("WinHttp.au3") Local $sPattern = "(?s); Name...........: " & $sFunc & ".*?Failure .*?(" & $error & " - .*?)\r" ;ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $sPattern = ' & $sPattern & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console Local $aErr = StringRegExp($sau3,$sPattern,1) Local $sErr = "" If UBound($aErr) > 0 Then $sErr = $sFunc & " @error: " & $aErr[0] ConsoleWrite("!" & $sErr & @CRLF) Return SetError($error, $extended) EndFunc _sVar.au3 WinHttp.au3 PUSiscomex.au3
  2. Erro após _IENavigate

    Aqui um exemplo de como fazer #include <IE.au3> Global $oIE, $hIE Global $errTest = True ; Simula o erro para todas as situações Exemple1() exit Func Exemple1() If CreateIE() = 0 Then Return ; Cria o a instancia IE sem ir a Pagina e inicializa Global $oIE e $hIE, se retornar 0 nada a fazer $sUrl = "https://instagram.com/explore/tags/marvel" _IENavigate($oIE, $sUrl,0) ; Vai para a Pagina e não aguarda a mesma carregar assim podemos simular o erro durante a carga da pagina ou ver se o erro acontece antes do _IELoadWait If FindLostIE() = 0 Then Return ; Executa antes de cada chamada _IExxxx ou onde costuma perder o Objeto $oIE, se o reultado for 0 não conseguiu reanexar _IELoadWait($oIE) If FindLostIE() = 0 Then Return ; Executa antes de cada chamada _IExxxx ou onde costuma perder o Objeto $oIE, se o reultado for 0 não conseguiu reanexar If Not _IEPropertyGet($oIE,"locationurl") Then Return ; Não foi para a pagina Sleep(2000) If FindLostIE() = 0 Then Return ; Executa antes de cada chamada _IExxxx ou onde costuma perder o Objeto $oIE, se o reultado for 0 não conseguiu reanexar _IENavigate($oIE, "http:\\www.uol.com.br") ; Vai para a Pagina ; Script If FindLostIE() = 0 Then Return ; Executa antes de cada chamada _IExxxx ou onde costuma perder o Objeto $oIE, se o reultado for 0 não conseguiu reanexar _IENavigate($oIE, "http:\\www.google.com") ; Vai para a Pagina ; Script EndFunc Func CreateIE($sUrl = "about:blank") ; _IECreate ( [$sUrl = "about:blank" [, $iTryAttach = 0 [, $iVisible = 1 [, $iWait = 1 [, $iTakeFocus = 1]]]]] ) $oIE = _IECreate() If @error Then Return ; Aqui deu ERRO mesmo nada a fazer $hIE = _IEPropertyGet($oIE, "hwnd") If @error Then Return 0 ; Aqui deu ERRO mesmo nada a fazer Return 1 EndFunc Func FindLostIE($err = @error, $ln = @ScriptLineNumber) ; Acha a janela perdida do IE retorna 1 se OK If @error Then ConsoleWrite('@@ Debug(' & $ln & ') : @error = ' & $err & @CRLF) ;### Debug Console If $errTest Then $oIE = 0 ; Simulando perda da conexão If IsObj($oIE) Then Return 1 ; Nada a fazer esta tudo OK If IsHWnd($hIE) Then ; Teenta Reanexar $oIE = _IEAttach($hIE, "HWND") ; restaura Objeto perdido If @error Then $hIE = 0 ; Não existe mais o Hwnad do IE If Not @Compiled Then ConsoleWrite("!ERRO ao tentar Reanexar por $hIE ScriptLine=" & $ln & @CRLF) Return 0 Else If Not @Compiled Then ConsoleWrite(">Reanexando por $hIE ScriptLine=" & $ln & @CRLF) Return 1 ; OK Recuperado EndIf EndIf If Not @Compiled Then ConsoleWrite("!ERRO não tem $hIE valido ScriptLine=" & $ln & @CRLF) Return 0 ; Não tem como se recuperar EndFunc
  3. Erro após _IENavigate

    Já tive problema do Objeto $oIE perder a conexão em algumas maquinas A solução quando da erro foi usar $oIE = _IEAttach(...) para recuperar a conexão ao objeto Há muitas opções de como usar essa Func Obs: depois q reanexa uma vez no meu caso não parece precisar reanexar novamente q ai não perde mais a conexão. em todo caso pode fazer uma Func q verifica se o objeto $oIE esta Ativo, caso não esteja ela usa o $oIE = _IEAttach(...) para recuperar a conexão
  4. Uma coisa importante aqui é converter as Entidades, nnn; nn; e &aaa; para os respectivos carácteres Acredito q deve ter uma chamada de DLL para isso mas não achei Tem um Script q faz isso mas achei muito ineficiente então fiz outro baseado nesse q vou colocar aqui no tópico visto q quando se extrai o texto de um HTML haverá Entidades principalmente dos caracteres acentuados e alguns símbolos Nesse Include tem duas Func _HTMLExtracText($text [, $flg]) Que extrai todo o texto eliminando as tags (ele ja chama o _HTMLEntityNDecod no final) _HTMLEntityNDecode($text) Que converte todas as entidades para os respectivos caracteres Pagina onde se encontra o Script q usei como base para fazer a Func _HTMLEntityNDecode($text) https://www.autoitscript.com/forum/topic/51084-html-entity-udf/ Abaixo o Script q Fiz #include-once ;============================================================ ; ; Autor Elias Assad Neto ; ; 3/abr/2017 ; ; ;============================================================ Func _HTMLExtracText($sHTML, $flg = 0) ; Extrai texto de HTML removendo todas as TAGs Local $xdSPC = " +" ; BitAnd(flg,1) = 0 Substitue multiplos espaços por 1 espaço If BitAND($flg,1) Then $xdSPC = "" ; Não elilina espaços multiplos por apenas um espaço Local $xoTD = " ", $xcTD = "" ; BitAnd(flg,2) = 0 Separa intens de tabelas com 1 espaço antes de cada item If BitAND($flg,2) Then Local $xoTD = "[", $xcTD = "]" ; Separa linhas tabelas com [xxxx][xxxx][xxxx] Local $aRER[][2] = [ _ ["(?i)(.*<body[^>]*?>)(.*?)(</body>.*)","\2"], _ ; Pega somente o corpo da mensagem ["(?ms)^\s+|\s*[\r\n]+|",""], _ ; Trim espaços antes e depois e Elimina todas as mudanças de linha ["(?ms) " & $xdSPC," "], _ ; Elimina todos os expaços multiplos ["(?i)<head[^>]*?>.*?</head>",""], _ ; Remove invisible content ["(?i)<style[^>]*?>.*?</style>",""], _ ["(?i)<script[^>]*?.*?</script>",""], _ ["(?i)<object[^>]*?.*?</object>",""], _ ["(?i)<embed[^>]*?.*?</embed>",""], _ ["(?i)<applet[^>]*?.*?</applet>",""], _ ["(?i)<noframes[^>]*?.*?</noframes>",""], _ ["(?i)<noscript[^>]*?.*?</noscript>",""], _ ["(?i)<noembed[^>]*?.*?</noembed>",""], _ ["(?i)</?((div)|(h[1-9])|(ins)|(isindex)|(p)|(pre))[^>]*>",@CRLF], _ ["(?i)</?((form)|(button)|(fieldset)|(legend)|(input))[^>]*>",""], _ ["(?i)</?((address)|(blockquote)|(center)|(del))[^>]*>",@CRLF], _ ["(?i)</?((dir)|(dl)|(dt)|(dd)|(li)|(menu)|(ol)|(ul))[^>]*>",@CRLF], _ ["(?i)</?((table)|(th)|(caption))[^>]*>",@CRLF], _ ["(?i)<((tr)|(img))[^>]*>",""], _ ["(?i)</((tr)|(img))[^>]*>",@CRLF], _ ["(?i)<(td)[^>]*>",$xoTD], _ ["(?i)</(td)[^>]*>",$xcTD], _ ["(?i)</?((label)|(select)|(optgroup)|(option)|(textarea))[^>]*>",@CRLF], _ ["(?i)</?((frameset)|(frame)|(iframe))[^>]*>",@CRLF], _ ["(?i)(<((span)|(a))[^>]*>)+"," "], _ ; Sequencias de "span" e "a" substitue por um unico spaço ["(?i)</((span)|(a))[^>]*>",""], _ ["(?i)<((br)|(hr))[^>]*>",@CRLF], _ ; Substitue quebras de linha por CRLF ["<[^>]*>",""], _ ; Elimina Tudo mais q não foi pego acima ["(?m)^( +)"," "], _ ; Remove exesso de espaços antes [" *\r\n",@CRLF], _ ; Remove espaços depois ["(\r\n){3,}",@CRLF &@CRLF &@CRLF] _ ; Remove excesso de linhas em brabco ] Local $s = $sHTML $x = "" For $i=0 To UBound($aRER)-1 If $i > 11 Then ;$x = " (" & StringRegExpReplace($aRER[$i][0],"[^\w\|]","") & ")" $s = StringRegExpReplace($s,$aRER[$i][0], $x & $aRER[$i][1]) Else $s = StringRegExpReplace($s,$aRER[$i][0],$aRER[$i][1]) EndIf Next Return _HTMLEntityNDecode($s) ; Decodifica as entidades no texto EndFunc Func _HTMLEntityNDecode($Text) ; Implemantação Elias Local $amp = Chr(1) ; Caracter de susbtituição das Entidades & , & e & No Final é restaurada a "&" para evitar substituição dupla em casos especiais $Text = StringRegExpReplace($Text,"&|&|&",$amp) ; Isso evita converter casos como &amp; ou amp; para && que tem q resultar como & Local $aX = StringRegExp($Text,"?\d+;",3) ; Pega todos as Entidades do tipo nn; e nnn; Local $aE = StringRegExp($Text,"&[A-Za-z\d]{2,6};",3) ; Pega todos as Entidades do tipo &lll; Local $sX, $sE For $i=0 to UBound($aX)-1 ; Cria String Unico das Entidades nnn; e nn; If StringInStr($sX, $aX[$i],1,1) = 0 Then $sX &= $aX[$i] & @LF Next For $i=0 to UBound($aE)-1 ; Cria String Unico das Entidades &lll; If StringInStr($sE, $aE[$i],1,1) = 0 Then $sE &= $aE[$i] & @LF Next If $sX <> "" Then ; Substitue todas as ocorrencias nn; e nnn; $aX = StringSplit($sX,@LF,3) ; Cria array das Entidades nnn; e nn; a serem substituidas For $i=0 to UBound($aX)-2 ; (-2) pq ultima entrada esta em branco, Substitue todas as ocorrencias nn; e nnn; If StringLeft($aX[$i], 3) = "" Then ;Check for Dec/Hex variations... HEX is with x. Local $strHex = StringTrimRight(StringTrimLeft($aX[$i], 3),1) $Text = StringReplace($Text,$aX[$i],ChrW(Dec($strHex)),0,1) Else Local $strDec = StringTrimRight(StringTrimLeft($aX[$i], 2),1) $Text = StringReplace($Text,$aX[$i],ChrW($strDec),0,1) EndIf Next EndIf If $sE <> "" Then $aE = StringSplit($sE,@LF,3) ; Cria array das Entidades &lll; a serem substituidas If UBound($aE) > 1 Then Static $sT = _ ; Lista &Entidade;=nnn onde nnn é o AscW da Entidade "&=38 =160¡=161¢=162£=163¤=164¥=165¦=166§=167¨=168©=169ª=170«=171¬=172­=173" & _ "®=174¯=175°=176±=177²=178³=179´=180µ=181¶=182·=183¸=184¹=185º=186»=187¼=188" & _ "½=189¾=190¿=191À=192Á=193Â=194Ã=195Ä=196Å=197Æ=198Ç=199È=200É=201" & _ "Ê=202Ë=203Ì=204Í=205Î=206Ï=207Ð=208Ñ=209Ò=210Ó=211Ô=212Õ=213Ö=214×=215" & _ "Ø=216Ù=217Ú=218Û=219Ü=220Ý=221Þ=222ß=223à=224á=225â=226ã=227ä=228" & _ "å=229æ=230ç=231è=232é=233ê=234ë=235ì=236í=237î=238ï=239ð=240ñ=241ò=242" & _ "ó=243ô=244õ=245ö=246÷=247ø=248ù=249ú=250û=251ü=252ý=253þ=254ÿ=255"=34" & _ "'=39<=60>=62" For $i=0 to UBound($aE)-2 ;(-2) pq ultima entrada esta em branco, Substitue todas as ocorrencias &lll; Local $strDEC = StringRegExpReplace($sT,"(.*)(" & $aE[$i] & "=)(\d+)(.*)","\3",1) ; pega o valor da entidade, deferencia maiusculas e minusculas If @extended Then $Text = StringReplace($Text,$aE[$i],ChrW($strDec),0,1) ; Susbtitue todas as entidades desse tipo Next EndIf EndIf $Text = StringReplace($Text,$amp,"&",0,1) ; Restaura os "&" Originais convertidos nas primeiras linhas dessa Func Return $Text EndFunc
  5. Show de Bola mesmo esse WinHTTP.au3 tem exemplos de cada uma das Funcs o q é ótimo https://github.com/dragana-r/autoit-winhttp/tree/master/WinHttp_Examples Andei testando varias coisas e funciona super bem.
  6. O lance desse é o TRYIT FREE para mim não compensa , já esta funcionando legal assim apesar da janela popup mas o mais importante mesmo é saber como usar o elemento file, pq eu faço automação e não é só para o google isso pode ter outros casos q eu preciso usar ainda não aconteceu mas quando acontecer quero estar preparado
  7. Olá o Objeto INPUT do tipo "file" não aceita ser escrito o valor .Value talvez com a informação aqui de para descobrir como fazer input type=file element | input type=file object https://msdn.microsoft.com/pt-br/library/windows/apps/hh466145.aspx
  8. Esse meu código faz parte de um programa q fiz para traduzir legendas de filmes em ".srt" O Codigo inteiro é bem mais complicado pq eu removo as marcações de tempo e depois reconstituo mesmas na tradução alem de q ele quebra o arquivo em blocos com menos de 32KB quando necessário, Tem um exemplo de como fazer isso enviando texto grande tipo 32KB para o Google e recebendo a tradução? pq só por essa dica a coisa complica bastante?
  9. Olá, a questão aqui é como fazer para preencher um Objeto INPUT do tipo File diretamente. Se alguém souber como fazer isso agradeço muito. Apos rodar o programa o INPUT "file" fica assim @@ Debug(61) : $sFile = C:\fakepath\Teste.au3 O input "file" é somente leitura, e independente do Drive e caminho é sempre: C:\fakepath\ ; O Exemplo abaixo é só para demostrar um script q já funciona e onde exatamente esta a parte q desejo mudar ; O Objetivo é conseguir passar o arquivo sem precisar abri a Janela POPUP quando se clica no [Procurar] do GoogleTranslate ; assim o procedimento pode ser feito em uma janela invisivel sem ficar aparecendo a janela POPUP mesmo q por uns ms #include <IE.au3> Global $LFrom = "auto" ; from Defalt Language (Detec language) Global $LTo = "pt" ; to Defalt Language Global $url_GoogleTranslateF = "https://translate.google.com.br/?tr=f#" & $LFrom & "/" & $LTo & "/" ; Translate from file, suport txt, doc.. etc.. returns UTF-8 in full IE window Global $oIE = _IECreate($url_GoogleTranslateF) If @error Then Exit SetInputFileByName($oIE,"file",@ScriptFullPath) ; Aqui no Path do arquivo estou usando o proprio só como exemplo mas pode ser qualquer arquivo texto ; OBS se o arquivo não existir da erro ; O Tamanho do arquivo esta Limitado a 32KB, arquivos maiores tem a tradução truncada Func SetInputFileByName($obj, $sname, $sPtah) Local $R Local $oFile = _IEGetObjById($obj, "file") If @error Then Return 0 Local $sFile = _IEFormElementGetValue($oFile) ; Mostra valor do INPUT "file" ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $sFile = ' & $sFile & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console ; === Essa Parte Abre a a janela POPUP para colocar o nome do arquivo. ; Essa parte q quero fazer de uma forma q não abra a janela PopUp pedindo o arquivo Static $ClassFileUpload = StringFormat("DUIViewWndClassName\nDirectUIHWND\nCtrlNotifySink\nNamespaceTreeControl") ; Identify Window $R = _IEAction($oFile, "focus") If @error Then Return 0 $hObj = _IEPropertyGet($obj, "hwnd") If @error Then Return 0 $R = ControlSend($hObj, "", "Internet Explorer_Server1", " "); Envia um espaço, pois se clicar fica travado If $R <> 1 Then Return SetError($_IEStatus_NoMatch,0,0) Local $Ok = 0, $ti = TimerInit() Do ; Wait Window to Open Sleep(10) $S = WinGetClassList("[Active]", "") $Ok = StringInStr($S, $ClassFileUpload, 1) ; Janela PopUP para inserir o nome do arquivo de UpLoad Until $Ok = 1 Or TimerDiff($ti) > 5000 ; Timeout 5 Sec If $Ok = 0 Then Return SetError($_IESTATUS_LoadWaitTimeout, 0, 0) ; Error Janela não encontrada (Time Out) $hWnd = WinWaitActive("[Active]", "", 1) ; Window HWND If $hWnd = 0 Then Return SetError($_IEStatus_NoMatch,0,0) $R = ControlSetText($hWnd, "", "Edit1", $sPtah) ; ClassnameNN: Edit1, Coloca o caminho do arquivo If $R <> 1 Then Return SetError($_IEStatus_NoMatch,0,0) $R = ControlClick($hWnd, "", "Button1") ; Clica no Botão [Abrir] If $R <> 1 Then Return SetError($_IEStatus_NoMatch,0,0) ;==================================================================== Local $k = 0 ; leva um tempinho até o arquivo ser lido e o INPUT "file" ser preenchido Do $k +=1 Sleep(100) $sFile = _IEFormElementGetValue($oFile) ; Mostra valor do INPUT "file" Until $sFile <> "" Or $k > 20 ; TimeOut 2 seg ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $sFile = ' & $sFile & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console Return $R EndFunc
  10. IE Button Click Trava

    Em Alguns casos quem se envia uma ação tipo Local $oIE = _IE_Example("form") Local $oSubmit = _IEGetObjByName($oIE, "submitExample") _IEAction($oSubmit, "click") _IELoadWait($oIE) O Script Trava até q a Janela PopUp q aparece seja fechada pelo usuário impossibilitando o Script de continuar A sugestão no Manual do AutoIt nem sempre resolve Local $oIE = _IE_Example("form") Local $oSubmit = _IEGetObjByName($oIE, "submitExample") Local $hWnd = _IEPropertyGet($oIE, "hwnd") _IEAction($oSubmit, "focus") ControlSend($hWnd, "", "[CLASS:Internet Explorer_Server; INSTANCE:1]", "{Enter}") A solução q encontrei foi ao Invés de enviar um ENTER para o Controle foi enviar um Espaço ControlSend($hWnd, "", "Internet Explorer_Server1", " "); Envia um espaço é como clicar no controle Isso aconteceu quando foi automatizar o Upload File no GoogleTranslator https://translate.google.com.br/?tr=f&hl=pt-BR Ao se clicar no [Procurar] ai abere a janela para escolher o arquivo e ficava travado.
  11. O lance de quando vc Lê um arquivo em ANSI ele normalmente assume no Windows como codepage Western Europe 1252 q seria o "0 - ANSI code page" Ai se é um arquivo.BAT tem q estar em OEM da maquina, se o texto tem acentuação ai q reside o problema Formato ANSI sem a acentuação é igual ao ASCII, o problema é q cada língua usa um codepage diferente Com o UTF-8 Se resolve tudo isso mas nos comandos DOS ele não interpreta UTF-8 Por essas e outras q sempre é bom evitar acentuação em nome de arquivos. Quando for Gravar de UNICODE para OEM tem q usar: Filewrite("Arquivo_DOS_OEM.txt",_WinAPI_WideCharToMultiByte($s, 1)) ; 1 - OEM code page E quando for Ler um arquivo q esta em ANSI OEM tem q usar: _WinAPI_MultiByteToWideChar(FileRead("Arquivo_DOS_OEM.txt"), 1,0,True) ; 1 - OEM code page, O True é para devolver string, o defaul é False q devolve DllStruct
  12. Nas versões mais antigas do AutoIt quando se usava FileWrite("nome do arquivo",$texto) Estou usando o Windows 7 64bits AutoIrScript 3.3.14.2 Ele salvava em ANSI no CodePage da maquina ai quando se executava um arquivo BAT salvo dessa forma as palavras acentuadas apareciam corretamente. Atualmente com UNICODE o FileRead já identifica corretamente mas para escrever ela faz em UTF-8 Sem BOM por default Eu tentei salvar em ANSI usando FileOpen($hFile,$FO_ANSI) mas ele salva em Windows 1252 (Western Europen) $FO_ANSI (512) = Use ANSI reading and writing mode O Programa abaixo "teste.au3" esta salvo em UTF-8, pode-se fazer isso abrindo o arquivo com o NotePad e salvando o mesmo em UTF-8 $s = "Isto é um teste não deve ter problemas na acentuação" FileWrite("Texto.txt",$s) _FileWriteWindows1252("textoANSI.txt",$s) Func _FileWriteWindows1252($sFile,$text) $hF = FileOpen($sFile, $FO_OVERWRITE + $FO_ANSI) $R = FileWrite($hF, $text) FileClose($hF) EndFunc Para Testar abra uma janela DOS e execute Type TextoANSI.txt O q aparece é o abaixo: >type textoANSI.txt Isto Ú um teste nÒo deve ter problemas na acentuaþÒo > >type texto.txt Isto ├® um teste n├úo deve ter problemas na acentua├º├úo > se Abrir com o NotePad.exe aparece corretamente, nos dois casos RESOLVIDO em 22 Jan 2016 as 20:54 ============================================================ Consegui resolver, levei dias e nada, agora q postei o tópico achei a solução. #include <FileConstants.au3> #include <WinAPI.au3> ; Isso tb funciona mas nesse caso não sei se suporta caracteres acima de ASCII 127 ainda a testar FileWrite("Arquivo_DOS_OEM.txt",_WinAPI_WideCharToMultiByte($s, 1)) Func FileWriteOEM($sFile, $text, $CodePage = 1); Grava String UNICODE em CodePage OEM (1- CodePage atual do PC) $text = _WinAPI_WideCharToMultiByte($text, $CodePage) ; Devolve String no codigo da pagina ; Converte de UNICODE para a CodePage $hF = FileOpen($sFile, $FO_OVERWRITE + $FO_ANSI) $R = FileWrite($hF, $text) If $R Then FileClose($hF) Return SetError(@error, @extended, $R) EndFunc ;==>_FileWriteOEM Abaixo a tabela de CodePage 0 - ANSI code page 1 - OEM code page 2 - Macintosh code page 3 - The Windows ANSI code page for the current thread 42 - Symbol code page 037 - IBM037 IBM EBCDIC US-Canada 437 - IBM437 OEM United States 500 - IBM500 IBM EBCDIC International 708 - ASMO-708 Arabic (ASMO 708) 709 - Arabic (ASMO-449+, BCON V4) 710 - Arabic - Transparent Arabic 720 - DOS-720 Arabic (Transparent ASMO); Arabic (DOS) 737 - ibm737 OEM Greek (formerly 437G); Greek (DOS) 775 - ibm775 OEM Baltic; Baltic (DOS) 850 - ibm850 OEM Multilingual Latin 1; Western European (DOS) 852 - ibm852 OEM Latin 2; Central European (DOS) 855 - IBM855 OEM Cyrillic (primarily Russian) 857 - ibm857 OEM Turkish; Turkish (DOS) 858 - IBM00858 OEM Multilingual Latin 1 + Euro symbol 860 - IBM860 OEM Portuguese; Portuguese (DOS) 861 - ibm861 OEM Icelandic; Icelandic (DOS) 862 - DOS-862 OEM Hebrew; Hebrew (DOS) 863 - IBM863 OEM French Canadian; French Canadian (DOS) 864 - IBM864 OEM Arabic; Arabic (864) 865 - IBM865 OEM Nordic; Nordic (DOS) 866 - cp866 OEM Russian; Cyrillic (DOS) 869 - ibm869 OEM Modern Greek; Greek, Modern (DOS) 870 - IBM870 IBM EBCDIC Multilingual/ROECE (Latin 2); IBM EBCDIC Multilingual Latin 2 874 - windows-874 ANSI/OEM Thai (same as 28605, ISO 8859-15); Thai (Windows) 875 - cp875 IBM EBCDIC Greek Modern 932 - shift_jis ANSI/OEM Japanese; Japanese (Shift-JIS) 936 - gb2312 ANSI/OEM Simplified Chinese (PRC, Singapore); Chinese Simplified (GB2312) 949 - ks_c_5601-1987 ANSI/OEM Korean (Unified Hangul Code) 950 - big5 ANSI/OEM Traditional Chinese (Taiwan; Hong Kong SAR, PRC); Chinese Traditional (Big5) 1026 - IBM1026 IBM EBCDIC Turkish (Latin 5) 1047 - IBM01047 IBM EBCDIC Latin 1/Open System 1140 - IBM01140 IBM EBCDIC US-Canada (037 + Euro symbol); IBM EBCDIC (US-Canada-Euro) 1141 - IBM01141 IBM EBCDIC Germany (20273 + Euro symbol); IBM EBCDIC (Germany-Euro) 1142 - IBM01142 IBM EBCDIC Denmark-Norway (20277 + Euro symbol); IBM EBCDIC (Denmark-Norway-Euro) 1143 - IBM01143 IBM EBCDIC Finland-Sweden (20278 + Euro symbol); IBM EBCDIC (Finland-Sweden-Euro) 1144 - IBM01144 IBM EBCDIC Italy (20280 + Euro symbol); IBM EBCDIC (Italy-Euro) 1145 - IBM01145 IBM EBCDIC Latin America-Spain (20284 + Euro symbol); IBM EBCDIC (Spain-Euro) 1146 - IBM01146 IBM EBCDIC United Kingdom (20285 + Euro symbol); IBM EBCDIC (UK-Euro) 1147 - IBM01147 IBM EBCDIC France (20297 + Euro symbol); IBM EBCDIC (France-Euro) 1148 - IBM01148 IBM EBCDIC International (500 + Euro symbol); IBM EBCDIC (International-Euro) 1149 - IBM01149 IBM EBCDIC Icelandic (20871 + Euro symbol); IBM EBCDIC (Icelandic-Euro) 1200 - utf-16 Unicode UTF-16, little endian byte order (BMP of ISO 10646); available only to managed applications 1201 - unicodeFFFE Unicode UTF-16, big endian byte order; available only to managed applications 1250 - windows-1250 ANSI Central European; Central European (Windows) 1251 - windows-1251 ANSI Cyrillic; Cyrillic (Windows) 1252 - windows-1252 ANSI Latin 1; Western European (Windows) 1253 - windows-1253 ANSI Greek; Greek (Windows) 1254 - windows-1254 ANSI Turkish; Turkish (Windows) 1255 - windows-1255 ANSI Hebrew; Hebrew (Windows) 1256 - windows-1256 ANSI Arabic; Arabic (Windows) 1257 - windows-1257 ANSI Baltic; Baltic (Windows) 1258 - windows-1258 ANSI/OEM Vietnamese; Vietnamese (Windows) 1361 - Johab Korean (Johab) 10000 - macintosh MAC Roman; Western European (Mac) 10001 - x-mac-japanese Japanese (Mac) 10002 - x-mac-chinesetrad MAC Traditional Chinese (Big5); Chinese Traditional (Mac) 10003 - x-mac-korean Korean (Mac) 10004 - x-mac-arabic Arabic (Mac) 10005 - x-mac-hebrew Hebrew (Mac) 10006 - x-mac-greek Greek (Mac) 10007 - x-mac-cyrillic Cyrillic (Mac) 10008 - x-mac-chinesesimp MAC Simplified Chinese (GB 2312); Chinese Simplified (Mac) 10010 - x-mac-romanian Romanian (Mac) 10017 - x-mac-ukrainian Ukrainian (Mac) 10021 - x-mac-thai Thai (Mac) 10029 - x-mac-ce MAC Latin 2; Central European (Mac) 10079 - x-mac-icelandic Icelandic (Mac) 10081 - x-mac-turkish Turkish (Mac) 10082 - x-mac-croatian Croatian (Mac) 12000 - utf-32 Unicode UTF-32, little endian byte order; available only to managed applications 12001 - utf-32BE Unicode UTF-32, big endian byte order; available only to managed applications 20000 - x-Chinese_CNS CNS Taiwan; Chinese Traditional (CNS) 20001 - x-cp20001 TCA Taiwan 20002 - x_Chinese-Eten Eten Taiwan; Chinese Traditional (Eten) 20003 - x-cp20003 IBM5550 Taiwan 20004 - x-cp20004 TeleText Taiwan 20005 - x-cp20005 Wang Taiwan 20105 - x-IA5 IA5 (IRV International Alphabet No. 5, 7-bit); Western European (IA5) 20106 - x-IA5-German IA5 German (7-bit) 20107 - x-IA5-Swedish IA5 Swedish (7-bit) 20108 - x-IA5-Norwegian IA5 Norwegian (7-bit) 20127 - us-ascii US-ASCII (7-bit) 20261 - x-cp20261 T.61 20269 - x-cp20269 ISO 6937 Non-Spacing Accent 20273 - IBM273 IBM EBCDIC Germany 20277 - IBM277 IBM EBCDIC Denmark-Norway 20278 - IBM278 IBM EBCDIC Finland-Sweden 20280 - IBM280 IBM EBCDIC Italy 20284 - IBM284 IBM EBCDIC Latin America-Spain 20285 - IBM285 IBM EBCDIC United Kingdom 20290 - IBM290 IBM EBCDIC Japanese Katakana Extended 20297 - IBM297 IBM EBCDIC France 20420 - IBM420 IBM EBCDIC Arabic 20423 - IBM423 IBM EBCDIC Greek 20424 - IBM424 IBM EBCDIC Hebrew 20833 - x-EBCDIC-KoreanExtended IBM EBCDIC Korean Extended 20838 - IBM-Thai IBM EBCDIC Thai 20866 - koi8-r Russian (KOI8-R); Cyrillic (KOI8-R) 20871 - IBM871 IBM EBCDIC Icelandic 20880 - IBM880 IBM EBCDIC Cyrillic Russian 20905 - IBM905 IBM EBCDIC Turkish 20924 - IBM00924 IBM EBCDIC Latin 1/Open System (1047 + Euro symbol) 20932 - EUC-JP Japanese (JIS 0208-1990 and 0121-1990) 20936 - x-cp20936 Simplified Chinese (GB2312); Chinese Simplified (GB2312-80) 20949 - x-cp20949 Korean Wansung 21025 - cp1025 IBM EBCDIC Cyrillic Serbian-Bulgarian 21027 - (deprecated) 21866 - koi8-u Ukrainian (KOI8-U); Cyrillic (KOI8-U) 28591 - iso-8859-1 ISO 8859-1 Latin 1; Western European (ISO) 28592 - iso-8859-2 ISO 8859-2 Central European; Central European (ISO) 28593 - iso-8859-3 ISO 8859-3 Latin 3 28594 - iso-8859-4 ISO 8859-4 Baltic 28595 - iso-8859-5 ISO 8859-5 Cyrillic 28596 - iso-8859-6 ISO 8859-6 Arabic 28597 - iso-8859-7 ISO 8859-7 Greek 28598 - iso-8859-8 ISO 8859-8 Hebrew; Hebrew (ISO-Visual) 28599 - iso-8859-9 ISO 8859-9 Turkish 28603 - iso-8859-13 ISO 8859-13 Estonian 28605 - iso-8859-15 ISO 8859-15 Latin 9 29001 - x-Europa Europa 3 38598 - iso-8859-8-i ISO 8859-8 Hebrew; Hebrew (ISO-Logical) 50220 - iso-2022-jp ISO 2022 Japanese with no halfwidth Katakana; Japanese (JIS) 50221 - csISO2022JP ISO 2022 Japanese with halfwidth Katakana; Japanese (JIS-Allow 1 byte Kana) 50222 - iso-2022-jp ISO 2022 Japanese JIS X 0201-1989; Japanese (JIS-Allow 1 byte Kana - SO/SI) 50225 - iso-2022-kr ISO 2022 Korean 50227 - x-cp50227 ISO 2022 Simplified Chinese; Chinese Simplified (ISO 2022) 50229 - ISO 2022 Traditional Chinese 50930 - EBCDIC Japanese (Katakana) Extended 50931 - EBCDIC US-Canada and Japanese 50933 - EBCDIC Korean Extended and Korean 50935 - EBCDIC Simplified Chinese Extended and Simplified Chinese 50936 - EBCDIC Simplified Chinese 50937 - EBCDIC US-Canada and Traditional Chinese 50939 - EBCDIC Japanese (Latin) Extended and Japanese 51932 - euc-jp EUC Japanese 51936 - EUC-CN EUC Simplified Chinese; Chinese Simplified (EUC) 51949 - euc-kr EUC Korean 51950 - EUC Traditional Chinese 52936 - hz-gb-2312 HZ-GB2312 Simplified Chinese; Chinese Simplified (HZ) 54936 - GB18030 Windows XP and later: GB18030 Simplified Chinese (4 byte); Chinese Simplified (GB18030) 57002 - x-iscii-de ISCII Devanagari 57003 - x-iscii-be ISCII Bengali 57004 - x-iscii-ta ISCII Tamil 57005 - x-iscii-te ISCII Telugu 57006 - x-iscii-as ISCII Assamese 57007 - x-iscii-or ISCII Oriya 57008 - x-iscii-ka ISCII Kannada 57009 - x-iscii-ma ISCII Malayalam 57010 - x-iscii-gu ISCII Gujarati 57011 - x-iscii-pa ISCII Punjabi 65000 - utf-7 Unicode (UTF-7) 65001 - utf-8 Unicode (UTF-8)
  13. Márcio, bom dia Esse erro ocorre pq vc não esta com a Planilha aberta no nome do arquivo q vc esta querendo anexar ou vc não esta colocando o nome com caminho completo O modo default é: FilePath - Full path to the open workbook (default) então tem q ter o caminho completo para funcionar Se o arquivo "C:\Users\xxxx\Documents\teste.xls" esta aberto, tem q fazer $sWorkbook = "C:\Users\xxxx\Documents\teste.xls ou mudar o $sMode de anexar a planilha, leia o Help dasa func e veja os exemplos #include <Excel.au3> _Excel_BookAttach ( $sString [, $sMode = "FilePath" [, $oInstance = Default]] ) Parameters $sString String to search for $sMode [optional] specifies search mode: FileName - Name of the open workbook FilePath - Full path to the open workbook (default) Title - Title of the Excel window $oInstance [optional] Object of the Excel instance to be searched (default = keyword Default = all instances) Ex: $sWorkbook = "FullPath\teste.xls" o arquivo teste.xls tem q estar aberto no Excel para isso funcionar $oWorkbook = _Excel_BookAttach($sWorkbook)
  14. Tratamento de erro conexao com o SQL

    Novato, boa tarde Dde uma olhada nesse post de 2010 q coloquei no forum americano https://www.autoitscript.com/forum/topic/51952-_sqlau3-adodbconnection/?do=findComment&comment=856721 É uma GUI SQL que fiz, dali vc pode ver como funciona todo o código e tratamento de erros tem uma UDF _sql.au3 q facilita muito Att, Elias
×