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. É verdade mas no meu caso preciso mudar da cruz para a seta(normal). O que foi fornecido pelo s3c funciona perfeitamente porém, estou com um problema que não consigo resolver. Fiquei ontem umas 4 horas em cima e nada. Veja se vocês podem me ajudar. Preciso, que ao clicar na tecla F3 o cursor mude para cruz e ao soltar a F3 volte para a seta(normal). Alguém diria, por exemplo coloque no onkeydown SetSystemCursor(LoadCursor(0, IDC_Normal), OCR_Normal); e depois no onkeyup SetSystemCursor(LoadCursor(0, IDC_Normal), OCR_Normal); fazendo a chamada por if key = VK_F3 then. O problema é que meu programa, que é um capturador da parte da tela do screen, funciona da seguinte maneira: Você fica com f3 clicada(enquanto isto o código de captura está sendo executado) e arrasta o mouse. Nesta arrastada do mouse é que o cursor muda para a cruz. Só que quando solto(onkeyup) ora o cursor termina na cruz ora termina na seta(onkeyup). Parece que ficar com F3 clicada equivale a ficar fazendo apertar(down) e soltar(up) um número n de vezes. Já tentei de tudo: Coloquei uma variável inteira para ver quantas vezes a tecla f3 ficou premida no onkeydown e verificar no onkeyup se é para ou ímpar no keyup e com um if ver se precisofazer duas vezes SetSystemCursor(LoadCursor(0, IDC_Normal), OCR_Normal); ou uma . Fiz a mesma coisa jogando para o registro e fazendo a leitura no registro pelo onkeyup. Só que nada deu certo. Sempre na saída do onkeyup o resultado é aleatório ora termina na cruz ora termina na seta. Eu preciso que termine na seta. Engraçado é que achava que tinha que dar certo pois se fosse ímpar o número de vezes(descobria pelo uso do MOD) você estava indo para a seta e se fosse para voltando para a cruz. Aí fazendo a leitura com um if você acertava no final? Alguém poderia me ajudar com algum código? Obrigado.
  2. É realmente estranho, vou testar o código mais tarde. Obrigado s3c
  3. Para voltar seria SetSystemCursor(LoadCursor(0, IDC_Normal), OCR_Normal); ou SetSystemCursor(Screen.cursor[crNormal]), OCR_Normal);
  4. Mais detalhes sobre API's do Windows: www.allapi.net - Mencionou o colega Denis No site acima sugerido pelo Denis existe um programa que contém todas(ou quase todas) APIS do windows. Acontece que os exemplos são todos para VB e VB.net, que não estou acostumado. O delphi nos acostumou mal com o uso das APIs( sem álias user lib etc...) Alguém que já precisou mudar o cursor e depois voltar para o defaut poderia me ajudar postando o código de como fazer isto. Gostaria de passar para crCross e depois voltar para o default. Ficaria muito grato.
  5. Ok, s3c, entendi. Vou colocar.
  6. Denis obrigado pela atenção. Você pode me dizer se estas funções estão "encapsuladas"(nem sei se é este o termo), em alguma UNIT do delphi, por exemplo a WINDOWS. Estou sem o delphi neste momento. Pelo que você colocou talvez eu precise apenas da função setcursor, pois usarei apenas o cursor cross num determinado momento e depois voltarei para o padrão.
  7. Prezados Colegas Gostaria de saber como faço para mudar o meu cursor fora do domínio do programa, ou seja, que ele assuma, por exemplo o formato de uma cruz quando estiver em cima do screen. Só estou conseguindo fazer isto em cima do form. Estou fazendo screen.cursor:= crCross, porém, só aparece a cruz em cima do form e não na tela toda. Obrigado Paulo Nobre
  8. Obrigado, Graymalkin pela atenção. Vou verificar Abraços Paulo Nobre
  9. Um dia destes baixei um projeto delphi na internet e tentei fazer umas modificações para estudo, para minha surpresa o código estava travado. Embora fazendo um simples ctrl + c e ctrl +v, pudesse mecher no~código em outro lugar(arquivo), ali ele estava travado. Como faço para que o código de uma unit fique travado? Alguém tem como destravá-lo, no sentido que falei acima. Existe dentro do ambiente delphi, uma maneira de evitar o ctrl+c eo ctrl + v?
  10. Tenho um programa, de terceiros, que abre junto com o windows. Olhando o registro na parte windows currentversion run e observei que não tinha nada lá. Alguém sabe quais são todos os lugares do registro em que o windows veerifica para abrir um programa? Só uso o registro, sei que algumas pessoas usam o sistema antigo de arquivos ini, que não uso. Por um acaso esse programa que mencionei usa um arquivo ini para consulta de dados. É possível fazer um programa abrir com o windows consultando antes o ini? Será que é assim que este programa funciona, ou existe um outro lugar no registro, sem ser o run, onde o windows consulta? Alguém sabe?
  11. Entendi, s3c. Mas objetivando a pergunta. Tenho um programa cahmado WINKEY(não sei se você comhece).Ele serve para você associar a diversas combinações de teclas com a tecla windows(por exemplo WINDOWS + A). Por exemplo faço o word abrir no meu computador com a combinação Windows + W. Ele abre automáticamente com windows. A título de estudo fiz o meu winkey, que roda no tray e abre com o windows. Conforme você mesmo disse a minha tecla WIndows + W não faz nada pelo meu programa, pois pelo WINKEY ela já está registrada para abrir o word. Se ela já foi registrada e se pode ser registrada apenas uma vez, como eu poderia fazer para meu programa rodar primeiro e portanto registrar primeiro? Isto é muito complicado de fazer? Se é que pode se fazer. Entendeu? No meu caso particular deixo de usar o winkwy e uso o meu programa, mas se no computador de alguém as teclas forem registradas antes, meu programa não funcionaria. Os dois abrem pelo RUN. Lá existe ordem de prioridade(para que o programa seja aberto) ou é por ordem alfabética? O que você acha?
  12. Se um programa que esteja rodando está usando RegisterHotKey(Handle, 1, MOD_CONTROL, $65); Como posso fazer para que o meu programa tenha prioridade em relação a esta tecla de atalho? Tentei colocar UnRegisterHotKey no oncreat e depois RegisterHotKey, mas não funcionou.
  13. Obrigado s3c, havia entendido, só que escrevi errado. Obrigado
  14. Entendi, s3c, quando se usa o decimal é que se coloca o $. Obrigado
  15. Desculpe, não havia logado. Micheus, Muito obrigado por sua atenção em ler o código e vejo que você tem toda a razão. No mínimo estou consumindo muita memória desnecessariamente. Obrigado pelo toque. Abraços Paulo Nobre
  16. RegisterHotKey(Handle, 1, MOD_CONTROL, $41); // Ctrl+a SErve para registrar a combinação ctrl +a, Mas, percebi que para usar a tecla windows serve RegisterHotKey(Handle, 1, MOD_Win, $41); // win+a ou RegisterHotKey(Handle, 1, MOD_CONTROL, $65); // Win+A(se não me engano é o 65 a maiúscula do a) O que quiz dizer é que com o MOD_win não tá fazendo diferença entre a maiusculo e minusculo. Alguém sabe se é isso mesmo? Outra coisa: Usei 65 ao invés de $65 e funcionou. Sempre funciona? Coloquei o código ascii. De início havia colocado VK_A, mas não teve nada a ver. Quando uso uma coisa ou outra? Alguém poderia comentar? obrigado.
  17. s3c, Muito obrigado por sua atenção neste problema, mas vou deixar de lado até porque o programa não deixa de funcionar por conta disto. Abraços Paulo Nobre
  18. Compilo sem erros. O form aceita o código e executa, apenas não completa. Por exemplo, aqui não completa. (pedaço do oncreat) Else begin MkDir(ExtractFileDir(Application.exename)+'\SCREEN'); reg.WriteString('Primeira Vez','Não'); reg.WriteString('QuerSom?','Sim'); reg.WriteString('Tray','Não'); reg.WriteString('Inicia com windows','Não'); reg.WriteInteger('Número do último screen salvo',0); reg.WriteInteger('Screens Salvos',0); reg.WriteInteger('Hora Inicial',0); reg.WriteInteger('Minuto Inicial',0); reg.WriteInteger('Hora Final',0); reg.WriteInteger('Minuto Final',0); reg.WriteString('Já mostrou Dicas','Não'); reg.WriteInteger('Segundos',1); reg.WriteString('Último Shot',''); reg.WriteString('Formato','JPEG'); reg.WriteString('Capturar','A tela toda'); reg.WriteString('Timer','Não'); reg.WriteString('Diretório de Destino',PChar(ExtractFilePath(application.ExeName))+'SCREEN'); //Faz aparecer o menu retirar o som mnuColocarSons.Visible:= False; mnuRetirarSons.Visible:= True; reg.CloseKey; end; se eu digitar reg aparece outro tipo de procedimento depois do ponto mais não o writestring em alguns lugares não aparece nada.
  19. Olá, s3c, estou mandando o código como você pediu. Este código é do form que dá o problema. unit UnitPrincipal; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Menus, RXShell, ExtCtrls, StdCtrls,MMSystem, Buttons, ColHint, ExtDlgs,JPEG,ClipBrd,Registry,ads_GraphicConversion,GIFImage; type TfrmPrincipal = class(TForm) PopupMenu1: TPopupMenu; mnuRestaurar: TMenuItem; mnuFechar: TMenuItem; RxTrayIcon1: TRxTrayIcon; N1: TMenuItem; mnuColocarSons: TMenuItem; mnuRetirarSons: TMenuItem; N2: TMenuItem; mnuConfig: TMenuItem; cmdConfig: TSpeedButton; ColHint1: TColHint; Panel1: TPanel; Panel2: TPanel; Panel3: TPanel; Panel4: TPanel; Image1: TImage; rdbFormato: TRadioGroup; Label1: TLabel; Label2: TLabel; mnuSobreFlash: TMenuItem; mnuDicas: TMenuItem; cmdScreens: TSpeedButton; OpenPictureDialogScreen: TOpenPictureDialog; Timer1: TTimer; cmdSobre: TSpeedButton; mnuNumArq: TMenuItem; Panel5: TPanel; procedure FormCreate(Sender: TObject); procedure mnuRestaurarClick(Sender: TObject); procedure mnuFecharClick(Sender: TObject); procedure RxTrayIcon1Click(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure mnuColocarSonsClick(Sender: TObject); procedure mnuRetirarSonsClick(Sender: TObject); procedure FormShow(Sender: TObject); procedure mnuConfigClick(Sender: TObject); procedure cmdConfigClick(Sender: TObject); procedure cmdConfigMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure rdbFormatoClick(Sender: TObject); procedure Panel3MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure Panel3MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure Panel3MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure mnuDicasClick(Sender: TObject); procedure cmdScreensMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure cmdScreensClick(Sender: TObject); procedure Image1Click(Sender: TObject); procedure FormActivate(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure Timer1Timer(Sender: TObject); procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); procedure cmdSobreMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure cmdSobreClick(Sender: TObject); procedure Panel3Click(Sender: TObject); procedure mnuSobreFlashClick(Sender: TObject); procedure mnuNumArqClick(Sender: TObject); procedure Panel5MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure Panel5MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure Panel5MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); private { Private declarations } {*****************************************************} //A procedure abaixo serve para capturar a mensagem de //minimizar ou maximizar do windows. procedure WMSysCommand(var Msg: TWMSysCommand); message WM_SYSCOMMAND; {**********************************************************} //A procedure abaixo serve para manipular a tecla //Print que esta sendo capturada pelo programa. procedure WMHotKey(var Msg: TWMHotKey); message WM_HOTKEY; procedure NumeroDeArquivos(Pasta:String); public { Public declarations } Procedure CapturarSalvarBitmap(Filename:TFilename); Procedure CapturarSalvarJPEG(Filename:TFilename); Procedure CapturarSalvarGIF(Filename:TFilename); end; var frmPrincipal: TfrmPrincipal; reg:TRegistry; Muda: Integer;//Variavel para alternar entre strch e não estrech implementation {$R *.dfm} Uses UnitConfiguracoes, UnitDiretorio,UnitSobreFlash,UnitDicas; //A procedure abaixo serve para contar o número de arquivos // da pasta onde estão armazenadas as imagens. procedure TfrmPrincipal.NumeroDeArquivos(Pasta:String); Var RetornoBMP:TSearchRec; RetornoGIF:TSearchRec; RetornoJPEG:TSearchRec; qtBMP:Integer; qtGIF:Integer; qtJPEG:Integer; Total:Integer; begin qtBMP:=0; qtGIF:=0; qtJPEG:=0; If(FindFirst(Pasta + '\*.bmp',faArchive,RetornoBMP)=0) then Repeat qtBMP:= qtBMP + 1; Until FindNext(RetornoBMP)<>0; FindClose(RetornoBMP); If(FindFirst(Pasta + '\*.gif',faArchive,RetornoGIF)=0) then Repeat qtGIF:= qtGIF + 1; Until FindNext(RetornoGIF)<>0; FindClose(RetornoGIF); If(FindFirst(Pasta + '\*.jpeg',faArchive,RetornoJPEG)=0) then Repeat qtJPEG:= qtJPEG + 1; Until FindNext(RetornoJPEG)<>0; FindClose(RetornoJPEG); Total:= qtBMP + qtGIF + qtJPEG; Messagebox(0,PChar('O número de arquivos encontrados é igual a '+ IntToStr(Total)+ '. '+#13+ 'Sendo '+ IntToStr(qtBMP)+ ' salvos no formato bmp.'+#13+ 'Sendo '+ IntToStr(qtGIF)+ ' salvos no formato gif.'+#13+'Sendo '+ IntToStr(qtJPEG)+ ' salvos no formato jpeg.'+#13+'Desejando vê-los, clique em Mostrar Imagens Gravadas na janela principal. '),'TOTAL DE ARQUIVOS DE IMAGENS',MB_IconInformation); end; //A função abaixo serve para escolher qual ato irá acontecer //caso minimize ou feche, ou seja, ela intercepta a mensagem //do windows. procedure TfrmPrincipal.WMSysCommand(var Msg: TWMSysCommand); Var H : HWnd; begin inherited; if (Msg.CmdType = SC_MINIMIZE) then begin If reg.ReadString('Timer')='Sim' then begin frmConfig.cmdPararCaptura.ShowHint:= True; frmConfig.cmdPararCaptura.Enabled:= True; frmConfig.TimerCaptura.Interval:= 60000*reg.ReadInteger('Segundos'); frmConfig.TimerCaptura.Enabled:= True; end; //O código abaixo esconde a aplicação da barra // de tarefas. H := FindWindow(Nil,'FLASH'); If H <> 0 then ShowWindow(H,SW_HIDE); frmPrincipal.Hide; frmPrincipal.RxTrayIcon1.Active := True; end; if (Msg.CmdType = SC_CLOSE) then begin Application.Terminate; end; end; //A procedure abaixo serve para salvar o desktop mostrar e salvar //bitmap no diretório escolhido. Procedure TfrmPrincipal.CapturarSalvarBitmap(Filename:TFilename); Var Bmp:TBitmap; begin Bmp := TBitmap.Create; Bmp.LoadFromClipboardFormat(CF_BitMap, Clipboard.GetAsHandle(CF_Bitmap), 0); Image1.Picture.Bitmap.Assign(Bmp); Bmp.SaveToFile(FileName); Bmp.Free; end; //A procedure abaixo serve para salvar o desktop mostrar e salvar //jpeg no diretório escolhido. Procedure TfrmPrincipal.CapturarSalvarJPEG(Filename:TFilename); Var JPEG:TJPEGImage; begin //Primeiro você cria o JPEG: JPEG := TJPEGImage.Create; //Depois você carrega o bitmap do Image pelo Clipboard: Image1.Picture.Bitmap.LoadFromClipboardFormat(CF_BitMap,Clipboard.GetAsHandle(CF_BitMap),0); //Depois você assinala o JPEG a partir do Bitmap: JPEG.Assign(Image1.Picture.Bitmap); //Depois você salva o JPEG: JPEG.SaveToFile(FileName); JPEG.Free; end; //A procedure abaixo serve para salvar o desktop mostrar e salvar //gif no diretório escolhido. Procedure TfrmPrincipal.CapturarSalvarGIF(Filename:TFilename); Var Bitmap: TBitmap; Gif:TGifImage; begin Bitmap := TBitmap.Create; Gif:= TGifImage.Create; Image1.Picture.Bitmap.LoadFromClipboardFormat(CF_BitMap,Clipboard.GetAsHandle(CF_BitMap),0); BitmapToGif(Bitmap,Gif); Gif.Assign(Image1.Picture.Bitmap); Gif.SaveToFile(FileName); Bitmap.Free; Gif.Free; end; //A procedure abaixo é a principal, pois manipula //dizendo o que será feito depois do usuário clicar //na tecla print. procedure TfrmPrincipal.WMHotKey (var Msg : TWMHotKey); begin if Msg.HotKey = 500 then begin {== habilita a tecla Print Screen ==} UnRegisterHotkey( Handle, 500 ); reg.RootKey:=HKEY_LOCAL_MACHINE; reg.OpenKey('SOFTWARE\NOBRE INFORMÁTICA\FLASH',FALSE); If reg.ReadString('Capturar')= 'A tela toda' then begin Clipboard.Clear;//Se não colocar dá erro Keybd_Event(VK_Snapshot,0, 0, 0); end Else If reg.ReadString('Capturar')= 'A janela ativa' then begin Clipboard.Clear;//Se não colocar dá erro Keybd_Event(VK_Snapshot,1, 0, 0); end; {== Desabilita a tecla Print Screen ==} RegisterHotkey( Handle, 500, 0, VK_SNAPSHOT ); reg.CloseKey; Timer1.Enabled:=True; end; end; procedure TfrmPrincipal.FormCreate(Sender: TObject); begin {== Desabilita a tecla Print Screen ==} RegisterHotkey( Handle, 500, 0, VK_SNAPSHOT ); frmPrincipal.Caption:= 'FLASH - CAPTURADOR DE IMAGENS'; Application.ShowMainForm:= False; Application.HintPause:= 3000; Application.HintHidePause:= 3000; reg:= TRegistry.Create; reg.RootKey:=HKEY_LOCAL_MACHINE; reg.OpenKey('SOFTWARE\NOBRE INFORMÁTICA\FLASH',TRUE); reg.CloseKey; reg.RootKey:=HKEY_LOCAL_MACHINE; reg.OpenKey('SOFTWARE\NOBRE INFORMÁTICA\FLASH',False); If reg.ValueExists('Primeira Vez')= True Then begin If reg.ReadString('QuerSom?')= 'Sim' then begin //Faz aparecer o menu retirar o som mnuColocarSons.Visible:= False; mnuRetirarSons.Visible:= True; reg.CloseKey end Else begin //Faz aparecer o menu colocar o som mnuColocarSons.Visible:= True; mnuRetirarSons.Visible:= False; reg.CloseKey; end; end Else begin MkDir(ExtractFileDir(Application.exename)+'\SCREEN'); reg.WriteString('Primeira Vez','Não'); reg.WriteString('QuerSom?','Sim'); reg.WriteString('Tray','Não'); reg.WriteString('Inicia com windows','Não'); reg.WriteInteger('Número do último screen salvo',0); reg.WriteInteger('Screens Salvos',0); reg.WriteInteger('Hora Inicial',0); reg.WriteInteger('Minuto Inicial',0); reg.WriteInteger('Hora Final',0); reg.WriteInteger('Minuto Final',0); reg.WriteString('Já mostrou Dicas','Não'); reg.WriteInteger('Segundos',1); reg.WriteString('Último Shot',''); reg.WriteString('Formato','JPEG'); reg.WriteString('Capturar','A tela toda'); reg.WriteString('Timer','Não'); reg.WriteString('Diretório de Destino',PChar(ExtractFilePath(application.ExeName))+'SCREEN'); //Faz aparecer o menu retirar o som mnuColocarSons.Visible:= False; mnuRetirarSons.Visible:= True; reg.CloseKey; end; reg.RootKey:=HKEY_LOCAL_MACHINE; reg.OpenKey('SOFTWARE\NOBRE INFORMÁTICA\FLASH',FALSE); If reg.ReadString('Tray')= 'Não' then begin frmPrincipal.RxTrayIcon1.Active := False; frmPrincipal.show; SetForegroundWindow(handle); reg.CloseKey; end Else begin frmPrincipal.Hide; frmPrincipal.RxTrayIcon1.Active := True; reg.CloseKey; end; reg.RootKey:=HKEY_LOCAL_MACHINE; reg.OpenKey('SOFTWARE\NOBRE INFORMÁTICA\FLASH',FALSE); If reg.ReadString('Formato')= 'JPEG' then begin rdbFormato.ItemIndex := 2; reg.CloseKey; end Else If reg.ReadString('Formato')= 'GIF' then begin rdbFormato.ItemIndex := 1; reg.CloseKey; end Else If reg.ReadString('Formato')= 'BMP' then begin rdbFormato.ItemIndex := 0; reg.CloseKey; end; end; procedure TfrmPrincipal.mnuRestaurarClick(Sender: TObject); Var h1, h2: THandle; pSom: PChar; begin //Código do Som //O código abaixo toca o som ou não de acordo //com a preferência do usuário reg:= TRegistry.Create; reg.RootKey:=HKEY_LOCAL_MACHINE; reg.OpenKey('SOFTWARE\NOBRE INFORMÁTICA\FLASH',FALSE); If reg.ReadString('QuerSom?')= 'Sim' then begin h1:= FindResource(HInstance,'FOTO','WavFile'); h2:= LoadResource(HInstance,h1); pSom:= LockResource(h2); SNDPlaySound(pSom,SND_ASYNC or Snd_Memory); UnlockResource(h2); reg.CloseKey; end Else begin reg.CloseKey; end; frmPrincipal.Show; frmPrincipal.RxTrayIcon1.Active := false; If frmConfig.chkTemporizador.State = cbChecked then begin frmConfig.TimerCaptura.Enabled:= False; Messagebox(0,'A captura foi interrompida momentaneamente. '+#13+ 'Minimizando a janela principal, o FLASH voltará a capturar normalmente.','INTERRUPÇÃO DA CAPTURA',MB_IconExclamation); end; end; procedure TfrmPrincipal.mnuFecharClick(Sender: TObject); begin reg.RootKey:=HKEY_LOCAL_MACHINE; reg.OpenKey('SOFTWARE\NOBRE INFORMÁTICA\FLASH',FALSE); reg.WriteInteger('Screens salvos',0); reg.closekey; application.Terminate; end; procedure TfrmPrincipal.RxTrayIcon1Click(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin frmPrincipal.show; SetForegroundWindow(handle); frmPrincipal.RxTrayIcon1.Active := false; If frmConfig.chkTemporizador.State = cbChecked then begin frmConfig.TimerCaptura.Enabled:= False; Messagebox(0,'A captura foi interrompida momentaneamente. '+#13+ 'Minimizando a janela principal, o FLASH voltará a capturar normalmente.','INTERRUPÇÃO DA CAPTURA',MB_IconExclamation); end; end; procedure TfrmPrincipal.FormClose(Sender: TObject; var Action: TCloseAction); begin reg.Free; end; procedure TfrmPrincipal.mnuColocarSonsClick(Sender: TObject); begin reg.RootKey:=HKEY_LOCAL_MACHINE; reg.OpenKey('SOFTWARE\NOBRE INFORMÁTICA\FLASH',False); reg.WriteString('QuerSom?','Sim'); MessageBox(handle,'A partir de agora os sons do programa serão ouvidos.','COLOCAÇÃO DOS SONS',MB_IconInformation); mnuColocarSons.Visible:= False; mnuRetirarSons.Visible:= True; reg.CloseKey; end; procedure TfrmPrincipal.mnuRetirarSonsClick(Sender: TObject); begin reg.RootKey:=HKEY_LOCAL_MACHINE; reg.OpenKey('SOFTWARE\NOBRE INFORMÁTICA\FLASH',False); reg.WriteString('QuerSom?','Não'); MessageBox(handle,'A partir de agora os sons do programa NÃO serão ouvidos.','RETIRADA DOS SONS',MB_IconInformation); mnuColocarSons.Visible:= True; mnuRetirarSons.Visible:= False; reg.CloseKey; end; procedure TfrmPrincipal.FormShow(Sender: TObject); Var h1, h2: THandle; pSom: PChar; Destino:String; //H : HWnd; begin //O código abaixo esconde a aplicação da barra // de tarefas. //************************************* {H := FindWindow(Nil,'FLASH'); If H <> 0 then ShowWindow(H,SW_HIDE); //*************************************} //Código do Som //O código abaixo toca o som ou não de acordo //com a preferência do usuário reg:= TRegistry.Create; reg.RootKey:=HKEY_LOCAL_MACHINE; reg.OpenKey('SOFTWARE\NOBRE INFORMÁTICA\FLASH',FALSE); If reg.ReadString('QuerSom?')= 'Sim' then begin h1:= FindResource(HInstance,'FOTO','WavFile'); h2:= LoadResource(HInstance,h1); pSom:= LockResource(h2); SNDPlaySound(pSom,SND_ASYNC or Snd_Memory); UnlockResource(h2); reg.CloseKey; end Else begin //Não faz nada. reg.closekey; end; begin reg.RootKey:=HKEY_LOCAL_MACHINE; reg.OpenKey('SOFTWARE\NOBRE INFORMÁTICA\FLASH',FALSE); Destino:=reg.ReadString('Último Shot'); If Destino <>'' then begin try Image1.Picture.LoadFromFile(Destino); except reg.CloseKey; //MessageBox(0,'Não existe nenhum arquivo armazenado','AVISO',MB_IconExclamation); end; end Else begin reg.CloseKey; Abort; end; reg.CloseKey; end; end; procedure TfrmPrincipal.mnuConfigClick(Sender: TObject); Var h1, h2: THandle; pSom: PChar; begin //Código do Som //O código abaixo toca o som ou não de acordo //com a preferência do usuário reg:= TRegistry.Create; reg.RootKey:=HKEY_LOCAL_MACHINE; reg.OpenKey('SOFTWARE\NOBRE INFORMÁTICA\FLASH',FALSE); If reg.ReadString('QuerSom?')= 'Sim' then begin h1:= FindResource(HInstance,'NAVIO','WavFile'); h2:= LoadResource(HInstance,h1); pSom:= LockResource(h2); SNDPlaySound(pSom,SND_ASYNC or Snd_Memory); UnlockResource(h2); reg.CloseKey; end Else begin reg.CloseKey; end; frmConfig.Show; end; procedure TfrmPrincipal.cmdConfigClick(Sender: TObject); Var h1, h2: THandle; pSom: PChar; begin //Código do Som //O código abaixo toca o som ou não de acordo //com a preferência do usuário reg:= TRegistry.Create; reg.RootKey:=HKEY_LOCAL_MACHINE; reg.OpenKey('SOFTWARE\NOBRE INFORMÁTICA\FLASH',FALSE); If reg.ReadString('QuerSom?')= 'Sim' then begin h1:= FindResource(HInstance,'NAVIO','WavFile'); h2:= LoadResource(HInstance,h1); pSom:= LockResource(h2); SNDPlaySound(pSom,SND_ASYNC or Snd_Memory); UnlockResource(h2); reg.CloseKey; end Else begin reg.CloseKey; end; frmConfig.Show; end; procedure TfrmPrincipal.cmdConfigMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin cmdConfig.Font.Style := [fsBold]; cmdConfig.Font.Color:= clRed; end; procedure TfrmPrincipal.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin cmdConfig.Font.Style := []; Panel3.Font.Style := []; Panel3.Font.Color:= clBlack; Panel5.Font.Style := []; Panel5.Font.Color:= clBlack; cmdSobre.Font.Color:= clBlack; cmdScreens.Font.Color:= clBlack; cmdConfig.Font.Color:= clBlack; cmdScreens.Font.Style := []; cmdSobre.Font.Style := []; end; procedure TfrmPrincipal.rdbFormatoClick(Sender: TObject); begin reg.RootKey:=HKEY_LOCAL_MACHINE; reg.OpenKey('SOFTWARE\NOBRE INFORMÁTICA\FLASH',FALSE); If rdbFormato.ItemIndex = 0 then reg.WriteString('Formato','BMP'); If rdbFormato.ItemIndex = 1 then reg.WriteString('Formato','GIF'); If rdbFormato.ItemIndex = 2 then reg.WriteString('Formato','JPEG'); reg.CloseKey; end; procedure TfrmPrincipal.Panel3MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin Panel3.BevelInner := bvLowered; end; procedure TfrmPrincipal.Panel3MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin Panel3.BevelInner := bvSpace; end; procedure TfrmPrincipal.Panel3MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin Panel3.Font.Style := [fsBold]; Panel3.Font.Color:= clRed; end; procedure TfrmPrincipal.mnuDicasClick(Sender: TObject); Var h1, h2: THandle; pSom: PChar; begin //Código do Som //O código abaixo toca o som ou não de acordo //com a preferência do usuário reg:= TRegistry.Create; reg.RootKey:=HKEY_LOCAL_MACHINE; reg.OpenKey('SOFTWARE\NOBRE INFORMÁTICA\FLASH',FALSE); If reg.ReadString('QuerSom?')= 'Sim' then begin h1:= FindResource(HInstance,'FOTO','WavFile'); h2:= LoadResource(HInstance,h1); pSom:= LockResource(h2); SNDPlaySound(pSom,SND_ASYNC or Snd_Memory); UnlockResource(h2); reg.CloseKey; end Else begin reg.CloseKey; end; frmDicas.Show; end; procedure TfrmPrincipal.cmdScreensMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin cmdScreens.Font.Style := [fsBold]; cmdScreens.Font.Color:= clRed; end; procedure TfrmPrincipal.cmdScreensClick(Sender: TObject); Var h1, h2: THandle; pSom: PChar; Destino:String; CaminhoDoScreen:String; begin //Código do Som //O código abaixo toca o som ou não de acordo //com a preferência do usuário reg:= TRegistry.Create; reg.RootKey:=HKEY_LOCAL_MACHINE; reg.OpenKey('SOFTWARE\NOBRE INFORMÁTICA\FLASH',FALSE); If reg.ReadString('QuerSom?')= 'Sim' then begin h1:= FindResource(HInstance,'FOTO','WavFile'); h2:= LoadResource(HInstance,h1); pSom:= LockResource(h2); SNDPlaySound(pSom,SND_ASYNC or Snd_Memory); UnlockResource(h2); reg.CloseKey; end Else begin reg.CloseKey; end; reg.RootKey:=HKEY_LOCAL_MACHINE; reg.OpenKey('SOFTWARE\NOBRE INFORMÁTICA\FLASH',FALSE); Destino:=reg.ReadString('Diretório de Destino'); reg.CloseKey; OpenPictureDialogScreen.FileName :=''; OpenPictureDialogScreen.InitialDir:= Destino; OpenPictureDialogScreen.Execute; CaminhoDoScreen := OpenPictureDialogScreen.FileName; If OpenPictureDialogScreen.FileName = '' Then Begin MessageBox(Handle,'Você deve selecionar um documento e clicar em abrir !'+#13 + 'Clicando em cancelar nada acontecerá !','OPERAÇÃO NÃO EFETUADA',MB_ICONSTOP); Abort; end; //Image1.AutoSize:= True; //Image1.Proportional:= True; Image1.Stretch:= True; //Image1.Align := alNone; Image1.Picture.LoadFromFile(CaminhoDoScreen); end; procedure TfrmPrincipal.Image1Click(Sender: TObject); begin If Muda = 0 then begin Image1.Stretch:= False; Muda:= 1; end Else if Muda = 1 then begin Image1.Stretch:= True; Muda:= 0; end; end; procedure TfrmPrincipal.FormActivate(Sender: TObject); Var Salvos:Integer; begin Muda:=0;//variavel que controla o strech da figura reg.RootKey:=HKEY_LOCAL_MACHINE; reg.OpenKey('SOFTWARE\NOBRE INFORMÁTICA\FLASH',FALSE); Salvos:= reg.ReadInteger('Número do último screen salvo'); If Salvos = 100 then begin Messagebox(0,'Você até agora já teve 100 imagens salvas pelo FLASH.'+#13+ 'Pode ser que a pasta contendo as imagens esteja muito sobrecarregada.'+ #13+ 'Verifique se algumas imagens podem ser eliminadas.'+ #13+'Qualquer dúvida consulte as dicas do programa.','ALERTA',MB_IconExclamation); end; If Salvos = 200 then begin Messagebox(0,'Você até agora já teve 200 imagens salvas pelo FLASH.'+#13+ 'Pode ser que a pasta contendo as imagens esteja muito sobrecarregada.'+ #13+ 'Verifique se algumas imagens podem ser eliminadas.'+ #13+'Qualquer dúvida consulte as dicas do programa.','ALERTA',MB_IconExclamation); end; end; procedure TfrmPrincipal.FormDestroy(Sender: TObject); begin {== habilita a tecla Print Screen ==} UnRegisterHotkey( Handle, 500 ); //Libera o registro reg.Destroy; end; procedure TfrmPrincipal.Timer1Timer(Sender: TObject); Var Destino:String; Numero:Integer; ScreensSalvos: Integer; begin Timer1.Enabled:=False; reg.RootKey:=HKEY_LOCAL_MACHINE; reg.OpenKey('SOFTWARE\NOBRE INFORMÁTICA\FLASH',FALSE); Numero:= reg.ReadInteger('Número do último screen salvo')+ 1; ScreensSalvos:= reg.ReadInteger('Screens Salvos')+ 1; If reg.ReadString('Formato')= 'BMP' then begin Destino:= reg.ReadString('Diretório de Destino')+'\Flash'+IntToStr(Numero)+'.bmp'; CapturarSalvarBitmap(Destino); end Else If reg.ReadString('Formato')= 'JPEG' then begin Destino:= reg.ReadString('Diretório de Destino')+'\Flash'+IntToStr(Numero)+'.jpeg'; CapturarSalvarJPEG(Destino); end Else If reg.ReadString('Formato')= 'GIF' then begin Destino:= reg.ReadString('Diretório de Destino')+'\Flash'+IntToStr(Numero)+'.gif'; CapturarSalvarGIF(Destino); end; reg.WriteInteger('Número do último screen salvo',Numero); Label2.Caption:= IntToStr(ScreensSalvos); reg.WriteInteger('Screens Salvos',ScreensSalvos); reg.WriteString('Último Shot',Destino); reg.CloseKey; //Manda o form para frente. SetForegroundWindow(handle); end; procedure TfrmPrincipal.FormCloseQuery(Sender: TObject; var CanClose: Boolean); begin CanClose:= False; reg.RootKey:=HKEY_LOCAL_MACHINE; reg.OpenKey('SOFTWARE\NOBRE INFORMÁTICA\FLASH',FALSE); reg.WriteInteger('Screens salvos',0); end; procedure TfrmPrincipal.cmdSobreMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin cmdSobre.Font.Style := [fsBold]; cmdSobre.Font.Color:= clRed; end; procedure TfrmPrincipal.cmdSobreClick(Sender: TObject); Var h1, h2: THandle; pSom: PChar; begin //Código do Som //O código abaixo toca o som ou não de acordo //com a preferência do usuário reg:= TRegistry.Create; reg.RootKey:=HKEY_LOCAL_MACHINE; reg.OpenKey('SOFTWARE\NOBRE INFORMÁTICA\FLASH',FALSE); If reg.ReadString('QuerSom?')= 'Sim' then begin h1:= FindResource(HInstance,'ALERTA','WavFile'); h2:= LoadResource(HInstance,h1); pSom:= LockResource(h2); SNDPlaySound(pSom,SND_ASYNC or Snd_Memory); UnlockResource(h2); reg.CloseKey; end Else begin reg.CloseKey; end; frmSobreFlash.Show; end; procedure TfrmPrincipal.Panel3Click(Sender: TObject); begin reg:= TRegistry.Create; reg.RootKey:=HKEY_LOCAL_MACHINE; reg.OpenKey('SOFTWARE\NOBRE INFORMÁTICA\FLASH',FALSE); reg.WriteInteger('Número do último screen salvo',0); reg.closekey; Messagebox(0,'Suas imagens passarão a ser renumeradas a partir do 1.'+#13+'É possível que elas venham a ser sobrescritas, caso tenham a mesma extensão.','RENUMERAÇÃO',MB_IconInformation); end; procedure TfrmPrincipal.mnuSobreFlashClick(Sender: TObject); Var h1, h2: THandle; pSom: PChar; begin //Código do Som //O código abaixo toca o som ou não de acordo //com a preferência do usuário reg:= TRegistry.Create; reg.RootKey:=HKEY_LOCAL_MACHINE; reg.OpenKey('SOFTWARE\NOBRE INFORMÁTICA\FLASH',FALSE); If reg.ReadString('QuerSom?')= 'Sim' then begin h1:= FindResource(HInstance,'ALERTA','WavFile'); h2:= LoadResource(HInstance,h1); pSom:= LockResource(h2); SNDPlaySound(pSom,SND_ASYNC or Snd_Memory); UnlockResource(h2); reg.CloseKey; end Else begin reg.CloseKey; end; frmSobreFlash.Show; end; procedure TfrmPrincipal.mnuNumArqClick(Sender: TObject); Var Pasta: String; begin reg.RootKey:=HKEY_LOCAL_MACHINE; reg.OpenKey('SOFTWARE\NOBRE INFORMÁTICA\FLASH',FALSE); Pasta:= reg.ReadString('Diretório de Destino'); NumeroDeArquivos(Pasta); end; procedure TfrmPrincipal.Panel5MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin Panel5.BevelInner := bvLowered; end; procedure TfrmPrincipal.Panel5MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin Panel5.Font.Style := [fsBold]; Panel5.Font.Color:= clRed; end; procedure TfrmPrincipal.Panel5MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin Panel5.BevelInner := bvSpace; end; end.
  20. Alguém sabe como fazer para capturar apenas uma parte do desktop. Vi num programa o seguinte: O usuário clicava em printscreen, o ponteiro do mouse mudava para uma cruz, clicava num ponto do desktop, deslocava o mouse abria-se um retângulo pontilhado(tipo programas de desenho onde você desenha um retângulo), clicava-se num outro ponto e a região compreendida dentro do retângulo era capturada. Não tenho a mínima idéia. Pesquisei na rede e não encontrei nada. Alguém já fez?
  21. Prezado Graymalkin Muito obrigado pelo exemplo. Grande Abraço Paulo Nobre
  22. Como faço para descobrir quantos arquivos tenho dentro de uma pasta? Por exemplo dentro da pasta c:\tem.
  23. É, mais infelizmente comigo não deu certo. Coloquei {$R *.dfm} logo após o Implementation, mas acontece a mesma coisa. Nos outros forms tudo corre normalmente. Compilando com Build All não acontece nada.
  24. Coloquei inherited liberou o form . Você pode falar um pouco do inherited(quando puder) Em relação a segunda dúvida, dei o build all e não aconteceu nada. Observe que embora não consiga completar o código, escrevendo ele corretamente ele é executado. O que significa isto? Isto aconteceu depois que fui mecher com adica do warn e acabei deletando sem querer o {$R *.dfm} depois coloquei e não sei se coloquei no lugar certo. Qual o lugar certo?Depois do uses adicionais, que vem depois do implemation? As procedures criadas por mim devem apareer todas depois de {$R *.dfm} ou pode ser antes mesmo?
×
×
  • Criar Novo...