Ir para conteúdo
Fórum Script Brasil

Churc

Veteranos
  • Total de itens

    1.198
  • Registro em

  • Última visita

Posts postados por Churc

  1. 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

  2. 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

  3. 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

  4. 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

  5. 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

  6. 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

  7. 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

  8. 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

  9. Caro amigo, compilei seu codigo e ele esta complilando normal parece que esta tudo OK.

    da erro em que parte?

    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

  10. 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;

  11. 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

  12. Jhonas, eu já baixei o arquivo "vcljpg50.blp", eu devo colocar em alguma pasta do delphi?

    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

  13. 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

  14. 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

  15. 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 ;)

×
×
  • Criar Novo...