Ir para conteúdo
Fórum Script Brasil

Churc

Veteranos
  • Total de itens

    1.198
  • Registro em

  • Última visita

Tudo que Churc postou

  1. Hospede a imagem em um servidor, tipo o site da empresa de vocês por exemplo, e então ao invés de no caminho <img src=cid:> voce troca por <img src="http://www.sitedevoces.com.br/mailing/images/nomeimagem.jpg"> O caminho no servidor já é com você ;) Lembrando que assim qualquer email bloqueia imagens, o usuário tem que clicar em "Exibir imagens do email" ou coisa do tipo rs abraxx
  2. Opa, Mal só entrei agora hehe Viu, então sobre o Gmail, se ele só aceita o que está depois do <body> e sem fechar a tag <body> voce pode tipo var szBuff: String; i: Integer; begin szBuff := Memo1.Text; //puxa o codigo fonte html i := Pos('<body>', LowerCase(szBuff)); if i > 0 then begin Delete(szBuff, 1, i + (Length('<body>') - 1)); //para não remover a escrita <body> i := Pos('</body>', LowerCase(szBuff)); if i > 0 then Delete(szBuff, i, Length(szBuff)); //deleta ate o fim end; pronto, dessa forma você remove o que ta antes de <body> e de </body> em diante o código fonte estaria em szBuff Lembrando que, se estiver </ body> não funcionaria rs abrxx
  3. Fala meu amigo, beleza! Logicamente o problema está no cid:nomedaimg.jpg, o webbrowser não vai interpretar o caminho dela por esse parametro já que esse caminho não existe, existiria somente para arquivos em anexo e não em tempo de execução... como não sei como voce ta fazendo esse esquema, nunca fiz, no webbrowser carregue elas normalmente com o caminho delas local tipo <img src="C:\Caminho\imagem.jpg"> Na hora de enviar, você muda isso em tempo de execução... não sei se é por innerHTML ou outerHTML, possivelmente outer pra puxar o HTML do webbrowser você pode usar uses MSHTML; var document: IHTMLDocument2; slBuff: TStringList; begin document := WebBrowser1.Document as IHTMLDocument2; if Assigned(document) then begin slBuff := TStringList.Create; slBuff.Text := document.body.innerHTML; //ou outerHTML ShowMessage(slBuff.Text); //O HTML da mensagem está no slBuff, agora é só filtrar os src= das imagens para src=cid: e enviar ;) slBuff.Free; end; end; como eu nem sei como é que funciona talvez to falando besteira rsr abrx
  4. tente isto procedure TfrmEmailSuporte.Button1Click(Sender: TObject); var idText1: TidText; idText2: TidText; p: TidMessageParts; slBody: TStringList; i : integer; nomeimg : string; sistema : string; begin IdMessage1.Clear; IdMessage1.ClearBody; IdMessage1.ClearHeader; if rbsigi.Checked = True then begin nomeimg := 'suporte_sigi.jpg'; sistema := 'Sigi'; end; if rbsigicell.Checked = True then begin nomeimg := 'suporte_sigicell.jpg'; sistema := 'SigiCell'; end; if rbsigiconv.Checked = True then begin nomeimg := 'suporte_sigiconv.jpg'; sistema := 'SigiConv'; end; if rbsigigrupos.Checked = True then begin nomeimg := 'suporte_sigigrupos.jpg'; sistema := 'SigiGrupos'; end; // idMessage1 has the email addresses and // all the other info needed to send already set. with IdMessage1 do begin Recipients.EMailAddresses:=edt_email.Text; Subject:='Atualização sistema ' + sistema; ContentType :='multipart/mixed'; ContentDisposition :='inline'; Encoding :=meMIME; end; p := idMessage1.MessageParts; slBody := TstringList.Create; try slBody.Add('<html>'); slBody.Add('<head>'); slBody.Add('</head>'); slBody.Add('<body>'); slBody.Add('<img src="http://www.seusite.com/caminhodaimagem/'+ nomeimg +'" />'); //procedure slBody.Add('</body>'); slBody.Add('</html>'); idText1 := TidText.Create(p, slBody); idText1.ContentType := 'text/html'; idText2 := TidText.Create(p); idText2.ContentType := 'text/plain'; idText2.Body.Text := ''; idMessage1.Body.Assign(slBody); idMessage1.ContentType := 'multipart/mixed'; idSMTP1.Connect; idSMTP1.Send(idMessage1); finally idSMTP1.Disconnect; slBody.Free; Showmessage('Enviado'); end; end; única coisa que fiz foi alterar o caminho da imagem para a do seu site e remover os anexos abrax
  5. Muito difícil isso amigo, até porque mesmo que você adicionar num Memo ou qualquer coisa que seja ele virá com o conteúdo tudo estranho (binário) e não será possível modificar e salvar e depois o programa original ler. A menos que fosse em ASCII mas neste caso bastava abrir no bloco de notas mesmo... Pra você abrir uma determinada extensão de um programa, você teria que saber a estrutura do arquivo, os headers e tudo mais Muitooo difícil hehe abraxx
  6. Opa Pode colocar sim OnWork, OnBegin tranquilamente Thread-Safe não se deve chamar nada Visual como já comentamos, nesse caso não há problema exemplo type TSuaThread = class(TThread) private idFTP: TidFTP; ... procedure _OnWork(ASender: TObject; AWorkMode: TWorkMode; const AWorkCount: Integer); procedure _OnWorkBegin(ASender: TObject; AWorkMode: TWorkMode; const AWorkCountMax: Integer); ... procedure TSuaThread._OnWork(ASender: TObject; AWorkMode: TWorkMode; const AWorkCount: Integer); var begin //... end; procedure TSuaThread._OnWorkBegin(ASender: TObject; AWorkMode: TWorkMode; const AWorkCountMax: Integer); begin //... end; procedure TSuaThread.Execute; begin idFTP := TidFTP.Create; with idFTP do begin onWork := _OnWork; onWorkBegin := _OnWorkBegin; end; end; e por ai vai só pra voce ter uma idéia :) abrx
  7. vix rs estranho, aqui restaura normal... bom então acho que eu não vou poder te ajudar, não tenho a menor idéia do porque não restaura, pode ser inúmeras coisas espero que alguém saiba, tenha alguma idéia e tal
  8. então, testei aqui simulando uma janela no Tray (lado do relogio) escondida e enviando uma mensagem para restaurá-la, restarou normalmente teste ai e diga se restaura a janela do Tray... abra seu programa, deixe ele escondido no tray, crie outro programa e coloque o código var h: THandle; begin h := FindWindow('TForm1', nil); if h <> 0 then SendMessage(h, WM_SYSCOMMAND, SC_RESTORE, 0); troque "TForm1" por T + o nome do seu Form exemplo, se chama frmPrincipal como parece ser coloque "TfrmPrincipal" coloque o código no clique de um botão e veja se ele restaura a janela testa ai e me fala abrx
  9. Fala brother rs então, tente dar um ShowWindow primeiro antes do SendMessage ... if hPrevInst <> 0 then begin ShowWindow(hPrevInst, SW_SHOW); SendMessage(hPrevInst, WM_RESTFROMTRAY, 0, 0); end; ... ou ... if hPrevInst <> 0 then begin SendMessage(hPrevInst, WM_SYSCOMMAND, SC_RESTORE, 0); SendMessage(hPrevInst, WM_RESTFROMTRAY, 0, 0); end; ... testa e me fala ;) abrxx
  10. opa então, mas voce alterou em FromBackup de "-backup" para "-reiniciar" ? com seu código seria procedure AppRestart; begin AppName := PChar(Application.ExeName); ShellExecute(HANDLE_FLAG_INHERIT,'open', AppName, PChar('-reiniciar'), nil, SW_SHOWNORMAL); Application.Terminate; end;
  11. então acredito eu que você não esteja dando um CloseHandle(MutexHandle) ao finalizar o aplicativo ou não está finalizando ele corretamente, ta tipo matando o processo... de qualquer forma o que você pode fazer é usar Parametros de execução exemplo No source do programa você adiciona em uses declare - Messages; Var HprevHist : HWND; MutexHandle : THandle; szParams: String = ''; procedure GetParams; var i: Integer; begin for i := 1 to ParamCount do if (i = 1) then szParams := ParamStr(i) else szParams := szParams + ' ' + ParamStr(i); end; function OneInstanceAndRunning: Boolean; begin result := false; if (MutexHandle <> 0) and (GetLastError = ERROR_ALREADY_EXISTS) then begin MessageDlg('O Programa já está em Execução nessa Maquina!', mtWarning, [mbOK], 0); result := true; end; end; function fromBackup: Boolean; begin Result := Pos('-backup', LowerCase(szParams)) > 0; end; begin GetParams; MutexHandle := CreateMutex(nil, True, 'Administra'); if OneInstanceAndRunning and not (fromBackup) then begin hPrevInst := FindWindow('TFrmPrincipal', nil); if hPrevInst <> 0 then SendMessage(hPrevInst, WM_RESTFROMTRAY, 0, 0); CloseHandle(MutexHandle); Halt; end; try Application.Initialize; Application.Title := 'Administra'; frmAbertura := TfrmAbertura.Create(Application); // Cria o form de abertura frmAbertura.Show; frmAbertura.Update; Application.CreateForm(TfrmPrincipal, frmPrincipal); Application.CreateForm(TdtmPrincipal, dtmPrincipal); frmAbertura.Hide; frmAbertura.Free; Application.Run; finally if LongBool(MutexHandle) then CloseHandle(MutexHandle); end; Então na hora que você for reiniciar o programa, coloca na linha de comando o "-backup" ex WinExec(PChar('bla.exe -backup'), SW_SHOWNORMAL); testa ai e me fala abrax
  12. o erro da no vb6,eu so fiz a pergunta aki porque vai saber se eu declarei certinho para ser chamado pelo vb6 ou qualquer outro erro não visivel para o delphi 7... Tem que ver a forma em que você está importando a DLL no VB... tente 2 coisas primeiro no procedure retire o export deixe apenas o StdCall; segundo no export antes do begin, coloque um name junto com o nome pra ser exportado exports MaiorValor name 'MaiorValor'; Quanto ao VB não manjo nada, mas tente algo como Declare Sub MaiorValor Lib "SUADLL.dll" (ByVal num1 As Double, num2 As Double) abrx
  13. eee Alessandra, você nem viu o post que passei rs Lá tinha o EnumFiles :) procedure EnumFiles(szPath, szAllowedExt: String; iAttributes: Integer; Buffer: TStrings; bClear, bIncludePath: Boolean); StdCall; var res: TSearchRec; szBuff: String; begin if (bClear) then Buffer.Clear; szPath := IncludeTrailingBackslash(szPath); if (FindFirst(szPath + szAllowedExt, iAttributes, res) = 0) then begin repeat szBuff := res.Name; if ((szBuff <> '.') and (szBuff <> '..')) then if (bIncludePath) then Buffer.Add(szPath + szBuff) else Buffer.Add(szBuff); until FindNext(res) <> 0; FindClose(res); end; end;
  14. então... da uma olhada neste post, utilize a funcao EnumFiles http://scriptbrasil.com.br/forum/index.php...st&p=426589 Então no seu caso seria exemplo var sl: TStringList; i: Integer; begin sl := TStringList.Create; EnumFiles('CAMINHO DAS FIGURAS', '*.bmp', faanyfile - faDirectory, sl, False, False); //aqui o while ou o loop pegando sl[i] exemplo for i := 0 to sl.Count -1 do if Copy(LowerCase(sl[i]), 1, 4) = 'abcd' then qrmemo.lines.add(sl[i]); FreeandNil(sl); end; troque o .bmp pela extensao das imagens, se forem varias voce utiliza um EnumFile para cada extensão não dando um bClear para True senão ele apaga as que já foram pegas... Se quiser adicionar o caminho junto, coloque o bIncludePath para True abrax
  15. de uma olhada http://scriptbrasil.com.br/forum/index.php...amp;hl=CopyFile CopyFile(PChar(OpenPictureDialog1.FileName), PChar('C:\Minha Pasta\' + Codigo + InputBox... + ExtractFileExt(OpenPictureDialog1.FileName)), False); abrxx
  16. Coloca na sua pasta Lib, depois vai no menu component, install component, add, procura essa .bpl que voce salvou e pronto deverá ser instalado! abrx
  17. só uma dica quando a expressão é boolean não precisa fazer a comparação com if exemplo vKey[0] := (Key = 65); vKey[1] := (Key = 81); if (vKey[0]) and (vKey[1]) then //teclas A+Q begin vKey[0]:= false; vKey[1]:= false; showmessage('oi'); end; abrxx
  18. Churc

    PostMessage

    ixe rapaz, precisa manjar muito hein rs muito mesmo pra fazer algo desse tipo, sinceramente não saberia nem dizer a você onde começar, fora o trabalho que você teria... usando ferramentas de leitura de memória pra mapear todo o jogo pra saber quais são os endereços de memória pra cada coisa, item e tudo mais, fora que qualquer atualização do jogo que sai já te ferra pois muda tudo... então sinceramente, compra o tibiabot vale muito mais a pena rs não tenho o source não, acredito que ninguém tenha pois é um programa particular que é vendido e não é open source! abrxx
  19. Churc

    Tag MP3

    opa da uma olhada nisso, veja se presta rs http://sourceforge.net/projects/filerename/ abrx
  20. componente TPageControl da paleta Win32 faz isso tranquilamente... basicamente é a mesma coisa, porém é claro, os do FireFox e do Internet Explorer tem mais recursos, como o de fechar a aba... se quiser algum que faça isso vai ter que pegar de terceiros, tipo da TMS Software que é pago... http://www.tmssoftware.com/site/tmspack.as...isc&sbp=327 abrxx
  21. opa da uma olhada nisso http://en.allexperts.com/q/Delphi-1595/Add...nder-column.htm *ta em ingles abrxx
  22. Churc

    Duvida Delphi com DOS

    depende o comando da pra executar sim tipo os comandos de API que não utilizam nada visual agora amigo, pra que voce quer fazer um programa em modo DOS mas que mostra mensagens e tal porque tem que ser em modo DOS?
  23. então, quanto a instalação do componente, clique em Pesquisar na barra lá emcima do fórum e coloque "instalar componente" na busca, terá vários tópicos referente a como instalar componentes em várias versões do Delphi... Quanto ao uso do OnGuard, há uma pasta Demos nele que contém vários modelos demonstrando como usar os componentes!! qualquer dúvida poste ai abrxxx ;)
  24. amigo assim é facinho burlar, basta o cara alterar a data do sistema, abrir seu programa e depois corrigir a data novamente... aconselho voce usar outros metodos de proteção como o OnGuard por exemplo http://www.sourceforge.net/projects/tponguard abrxx
  25. Churc

    nome correto da janela

    opa para saber o nome da classe de uma janela aconselho voce usar o Windowse http://www.greatis.com/delphicb/windowse/ na Aba class voce visualizará a classe da janela principal e das janelas filhas e tudo mais abrxx
×
×
  • Criar Novo...