Ir para conteúdo
Fórum Script Brasil

Paulo Nobre

Membros
  • Total de itens

    717
  • Registro em

  • Última visita

Tudo que Paulo Nobre postou

  1. Obrigado Graymalkin, Vamos ver se alguém que já usou o componente sabe dizer alguma coisa. Abraços Paulo Nobre
  2. Percebi o óbvio: O caption não pode ser mudado, pois já vem com o programa(mostrar a caixa de diálogo). Em relação a segunda pergunta já vi como fazer basta fazer uma chamada a função. A terceira pergunta continua em aberto: Obrigado
  3. Estou tentando interceptar a tecla printscreen, mas não estou conseguindo. O que eu gostaria de fazer é o seguinte: O usuário tecla na printe o meu programa intercepta e manipula do jeito que interessa. Tentei If VK_Print ....e não deu certo. Tentei If vk_snapshot e também não deu certo. Os dois colocados no evento onkeydown do form Alguém sabe o que está errado? Como faço isso? Obrigado!
  4. Obrigado Graymalkin, Olhei o código do segundo link e fiquei na dúvida: Em que parte do código eu conseguiria (se e que é possível alterar) mudar o título da caixa de diálogo(caption do form), ou seja tirar aquele Brouse for folder que aparece e colocar algo que eu queira. uses ShellAPI, ShlObj; ... function BrowseDialog (const Title: string; const Flag: integer): string; var lpItemID : PItemIDList; BrowseInfo : TBrowseInfo; DisplayName : array[0..MAX_PATH] of char; TempPath : array[0..MAX_PATH] of char; begin Result:=''; FillChar(BrowseInfo, sizeof(TBrowseInfo), #0); with BrowseInfo do begin hwndOwner := Application.Handle; pszDisplayName := @DisplayName; lpszTitle := PChar(Title); ulFlags := Flag; end; lpItemID := SHBrowseForFolder(BrowseInfo); if lpItemId <> nil then begin SHGetPathFromIDList(lpItemID, TempPath); Result := TempPath; GlobalFreePtr(lpItemID); end; end; Pelo que entendi o title que aparece no código não é o caption da janela e sim o texto que pode aparecer acima da árvore de diretórios. Correto? Além disso como faria(desculpe a pergunta idiota talvez) faria para ao clicar no ok, tranferir o caminho para um txt, por exemplo. E a última pergunta seria, insistindo: Obrigado
  5. Prezados Colegas, Estou usando o componente ShellTreeView para fazer uma caixa de diálogo. Na hora de compilar aparece a seguinte mensagem: [Warning] UnitDiretorio.pas(7): Unit 'ShellCtrls' is specific to a platform Só funcionará na plataforma XP? Terei problemas ao rodar o programa no Windows 98 e ME? Uma outra dúvida(pertinente ao mesmo projeto) é a seguinte: A caixa de diálogo acima foi feitana mão, porém li uma vez não sei onde que existe a função Como posso acessá-la? Ela está em alguma Unit ou é da Api? Alguém poderia me fornecer um exemplo simples de código? Com está função pararei de receber a mensagem de warning acima? Muito obrigado.
  6. Apesar de você dizer que não sabe e eu também não, a sua dica acima deu certo. Obrigado, s3c
  7. Olá, s3c, O label é um TLabel que está sobre um TForm. Ele já vem com o caption pré-determinado. Tentei colocar num TPanel como você falou mas, continuou da mesma forma, com o mesmo problema. O que estou fazendo é numa janela inicial usando três labels para dar algumas dicas iniciais.
  8. Tenho uma janela que pode aparece duas vezes: -Quando o programa é usado pela primeira vez aprece sempre. -Quando o usuário clica com o botão direito do mouse e escolhe no menu(roda no tray o programa) mostrar a janela. O problema é o seguinte: Da segunda forma a janela aparece sem problema, ouseja, o label que está nela aparece instantaneamente junto com ela. Quando aparece na primeira vez primeiro apareec a janela e alguns segundos depois aparece o label. Fica ruim , muito ruim. Como posso consertat isti. Já tentei colocar frmPrincipal.show em diversas partes do oncreat, mas não adianta. Observe que ele está no oncreat, pois aparece obrigatóriamente na primeira vez, sendo que o programa procura no registro se é a primeira vez ou não para mostrar. Alguém pode ajudar?
  9. Olá s3c, Vou usar esta que você sugeriu. Obrigado.
  10. Vinha usando o código abaixo sem nenhum problema Var RS: TResourceStream; begin Caminho1:= ExtractFilePath(Application.ExeName)+'\ANIVERSARIANTES1.txt'; RS1:= TResourceStream.Create(HInstance, 'ANIVERSARIANTES1', RT_RCDATA); RS1.SaveToFile(Caminho1); RS1.Free; end; ou seja, usando e abusando do RT_RCDATA, com tudo que tenho direito; txt,bmp, exe. doc. Um belo dia resolvi usar de novo com um txt. Da mesma forma: Caminho2:= ExtractFilePath(Application.ExeName)+'\ANIVERSARIANTES2.txt'; RS2:= TResourceStream.Create(HInstance, 'ANIVERSARIANTES2', RT_RCDATA); RS2.SaveToFile(Caminho2); RS2.Free; Aí deu erro dizendo que não podia encontrar no resource(recursos.res) o arquivo aniversariantes2. A principio fiquei doido pois tinha feito tudo certo. Cheguei até a reconstruir o arquivo res. Depois de muito tempo descobri que o erro era porque o meu arquivo aniversariantes1.txt tinha zero bytes(desconfiei, coloquei uma letra no arquivo e aí deu certo). Acontece que preciso que este arquivo seja criado com zero bytes. Tem jeito ou RT_RCDATA só serve para arquivos com mais de zero bytes? Alguma Luz? Obrigado Paulo Nobre
  11. Valeu, CornN_Sk8. Guardei a sua função e depois vou testá-la. Acabei fazendo criando um timer em tempo de execução e usando a shellexecute da shellapi. Abraços Paulo Nobre
  12. Valeu pela dica Graymalkin!! A propósito onde está hospedado seu site. Um dia desse tentei visitá-lo para ver se tinha alguma atualização ou novos programas e deu erro. Abraços Paulo Nobre
  13. Tenho um programa que em um de seus menus chama um outro programa(exe)(digamos que o nome seja P2). Na instalação dentro da pasta só aparece o executável principal. Tudo está embutido num arquivo de recursos. Na hora de clicar no menu que chama o P2 ele é descarregado dentro da pasta do programa principal. Porém depois de usá-lo gostaria de destrui-lo. Como posso fazer isto? Como o programa roda no tray e só é fechado com o windows, não estou conseguindo destruí-lo colocando DeleteFile(Caminho para p2) no close do principal. A única coisa que estou fazendo para quebrar o galho é colocando o delete no oncreat, assim quando ele abre na nova inicialização do windows o program P2 é deletado do diretório principal. Na realidade o que eu gostaria de fazer é o seguinte: Ao fechar o P2, que neste momento se encontra no mesmo diretório do programa principal, pudesse colocar um código para apagá-lo do diretório principal, mas acho que não é possível. Pensei também, mas não sei como fazer, em após o programa fechar, algum código verificar isto via um timer talvez e caso a janela estivesse fechada dar o comando deletefile. O que vocês acham? É loucura da minha parte? Não sei se vi isto aqui neste forum alguma vez, mas se não me engano tinha a ver com dlls. Gostaria de algo mais simples.
  14. Graymalkin, Na realidade a grande dica sua foi ter traduzido o código do erro 183, depois olhando com mais calma vi que um outro subprograma estava gravando no diretório principal um arquivo com o mesmo nome que o subprograma supracitado. Aí você pergunta? Mas não foi isso que eu havia dito em relação ao significado do erro. Respondo: disse sim, só que criava uma pasta e o outro um arquivo que não era uma pasta. Mesmo sendo de caratér diferente, mas tendo o mesmo nome gerou este conflito. O porque não sei. Renomeei um deles e ficou tudo certo Muito obrigado Graymalkin Abraços Paulo Nonre
  15. O problema Graymalkin, é que ele não cria a pasta nas condições que o programa está estruturado.
  16. Tenho um programa em que preciso criar algumas pastas(sudiretórios) no mesmo diretório do executável principal. Digo isto pois quem usará estas pastas é um sub-programa executável que está em um arquivo de recurso. Acontece que quando uso a função MkDir o programa dá erro do tipo I/O 183. Quando faço um teste com o sub-programa no diretório onde quero criar as pastas sendo ele o criador delas - tudo bem, quando mando criar pelo programa original que irá chamar o sub que usará as pastas dá este erro. Alguma sugestão ou ajuda? Paulo Nobre
  17. s3c,Boa Noite Fiz o que você falou; ele passou pelo primeiro break e parou no segundo.. procedure TForm1.TcpClient1Connect(Sender: TObject); begin EnumWindows(@Pega_URLs, LParam(Memo1.Lines)); // Dispara a callback Pega_URLs end; Neste acima. Instalei o componente que você havia mencionado anteriormente fiz um outro progrma e o problema é o mesmo para também no segundo.
  18. S3c, Aqui no meu DElphi7 o componente que mais se assemelha(já que o que você falou não tenho) é o TcpCliente (socktes). Quando coloco no evento oNError ErrorCode := 0 ele não compila e manda a mensagem Undeclared identifier: 'ErrorCode' O que faço? Além disso quando me conectei para testar o memo não registra nada? Será que este componente está errado? Entre ouros componentes tem o TcpServes(socktes) e o UdpSocktes(socktes), mas acho que não tem nada a ver. Veja o código todo, por favor. unit UnitInternet; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls, OleCtrls, SHDocVw, Sockets; type TForm1 = class(TForm) Memo1: TMemo; Timer1: TTimer; TcpClient1: TTcpClient; procedure Timer1Timer(Sender: TObject); procedure FormCreate(Sender: TObject); procedure TcpClient1Connect(Sender: TObject); procedure TcpClient1Error(Sender: TObject; SocketError: Integer); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation function Pega_URLs(Hnd:THandle; URLs:TStringList):Boolean; stdcall; // callback var hIE, hIEFilha:THandle; Nome: array[0..255] of Char; begin Result := false; SendMessage(Hnd, WM_GetText, 255, LParam(@Nome[0])); // Acessa o caption hIE := FindWindow('IEFrame', Nome); // Checa se é o IE if hIE = 0 then Exit; hIEFilha := FindWindowEx(hIE, 0, 'WorkerW', nil); // Acessa a barra de ferramentas if hIEFilha > 0 then begin hIEFilha := FindWindowEx(hIEFilha, 0, 'ReBarWindow32', nil); // Acessa a barra de endereços if hIEFilha > 0 then begin hIEFilha := FindWindowEx(hIEFilha, 0, 'ComboBoxEx32', nil); // Acessa o combobox if hIEFilha > 0 then begin SendMessage(hIEFilha, WM_GETTEXT, 255, LParam(@Nome)); // Acesso o texto do combo URLs.Add(Nome); // Adiciona no memo end; end; end; Result := true; end; {$R *.dfm} procedure TForm1.Timer1Timer(Sender: TObject); begin if TcpClient1.Active then TcpClient1.Close; TcpClient1.Active := true; end; procedure TForm1.FormCreate(Sender: TObject); begin timer1.Enabled:= true; end; procedure TForm1.TcpClient1Connect(Sender: TObject); begin EnumWindows(@Pega_URLs, LParam(Memo1.Lines)); // Dispara a callback Pega_URLs end; procedure TForm1.TcpClient1Error(Sender: TObject; SocketError: Integer); begin //ErrorCode:=0; //If TcpClient1.OnError then ErrorCode:= 0; end; end.
  19. s3c a primeira vez que testei funcionou depois não. Além disso eu gostaria que todas as url ficassem registradas. Tirei o memo1.clear, mas não sei como fazer para acumular.. Algo do tipo: memo1.text:= memo1.text + ?? O que eu posso fazer? O que você que dizer com tentar navegar dentro de um timer. Desculpe a ignorância mas, nunca trabalhei com este componente e não sei como usá-lo.
  20. Muito Obrigado, s3c, Esse código realmente não iria conseguir montar nunca. Vou usá-lo
  21. Prezados amigos, Não tenho a mínima experiência com códigos associados a internet, porisso peço a ajuda de vocês para o seguinte: Gostaria de um código que me permitisse o seguinte: 1) alertasse a hora em que o computador se conectasse a internet(conexão consumada e não tentativa); 2) alertasse a hora da desconexão. 3) registrasse os endereços navegados. Isso é muito didícil? Isso exige componentes especiais? O meu propósito não é o de fazer nenhum grande programa de economia na internet. O objetivo é ter um mini controlador para eu ter aqui em casa mesmo. Repito, não tenho NENHUMA EXPERIÊNCIA, porisso peço uma ajuda detalhada se possível!! Agradeço desde já a atenção de todos. Paulo Nobre
  22. Mais uma vez valeu, Dhyegoo. Coisas do Tio Bill, fazer o quê né!?
  23. Prezado Dhyeggo Aceitarei a sua idéia e permanecerei com a NTFS. Muito Obrigado pela sua colaboração Abraços Paulo Nobre
  24. Valeu Dhyeggo pela explicação (muito boa por sinal) Tenho o XP Home. Ele veio, o computador, com o XPProfessional, só que tive que reinstalar(formatei) e aí coloquei o meu XPHome(não pirata). Todas as 3 partições que tenho estão com NFTS. Você aconselha, já que tenho o XPHome usar o partition Magic e mudar para FAT32? Ou como o computador é rápido (Pentium4-3.2) tanto faz? Obrigado Paulo Nobre
×
×
  • Criar Novo...