Churc
-
Total de itens
1.198 -
Registro em
-
Última visita
Posts postados por Churc
-
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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;
-
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" exWinExec(PChar('bla.exe -backup'), SW_SHOWNORMAL);
testa ai e me fala
abrax
-
Tem que ver a forma em que você está importando a DLL no VB...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...
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 comoDeclare Sub MaiorValor Lib "SUADLL.dll" (ByVal num1 As Double, num2 As Double)
abrx
-
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;
-
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
-
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
-
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
-
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
-
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
-
-
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
-
opa
da uma olhada nisso
http://en.allexperts.com/q/Delphi-1595/Add...nder-column.htm
*ta em ingles
abrxx
-
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?
-
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 ;)
-
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
-
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
Email pro GMAIL...
em Delphi, Kylix
Postado
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