
Paulo Nobre
Membros-
Total de itens
717 -
Registro em
-
Última visita
Tudo que Paulo Nobre postou
-
Por qual motivo quando abrimos um projeto pela primeira vez o nome que aparece na barra de título é project1(ou o nome que foi dado na hora de salvar o projeto) e não form1 como o do caption do form? Afinal, quando clicamos na barra de tarefas, em cima do nome, não estamos clicando indiretamente no form1? Sei que é possivel mudar para form1, fazendo Application.Title:=Form1.caption, por exemplo no evento OnShow do form1.
-
Olá,s3c, O número que aparece é o 4294967295
-
Churc Deu para entender sim!! Valeu e muito obrigado.
-
s3c Para abrir está funcionando normalmente!! Para fechar, não. O código do button4click é: procedure TForm1.Button4Click(Sender: TObject); const IOCTL_Storage_Eject_Media = $002D4808; IOCTL_Storage_Load_Media = $002D480C; var hDevice:THandle; dRet:DWord; begin HDevice := CreateFile(PChar('\\.\g:'), Generic_Read or Generic_Write, 0, nil, Open_Existing, 0, 0); //DeviceIoControl(hDevice, IOCTL_Storage_Eject_Media, nil, 0, nil, 0, dRet, nil); // Ejeta DeviceIoControl(hDevice, IOCTL_Storage_Load_Media, nil, 0, nil, 0, dRet, nil); // Fecha CloseHandle(hDevice); end;
-
.... S:THandle ..... S := FindWindow(nil, 'Semelhança de triângulos'); ...... If S>0 Then SendMessage(S,WM_CLOSE,0,0); Uso a idéia do código acima para fechar uma janela. Gostaria de saber o seguinte: 1) O significado da variável nil do findexist, naquela posição. 2) Quais seriam outros parâmetros que teria para o lugar ocupado por nil, com algum exemplo se possível? 3) Quando se usa a função FindWindowsEx, e qual diferença para a anterior ,FindWindow? 4) Na função SendMessage, o que significam os parâmetros (dois últimos)0,0? 5) Quais outros valores poderiam ocupar o lugar deles, se possível com algum exemplo? Abusei? :P
-
Olá, s3c Sim Abaixo do Meu Computador no mesmo nível do CDROM Unidade de DVD-RAM(G:) Mas, eu já havia dito, s3c,no post acima do seu(#16), que funcionou para mim. O que eu disse foi o seguinte: Tem como? Não havendo, a única coisa que me vem a cabeça é fazer uso do velho e amigo registro. Na primeira vez que usar o comando , abre uma tela para o usuário dizer qual a letra correspondente ao seu DVD, grava no registro e sempre que abrir o programa trás ela para o lugar ocupado pelo 'E" no código acima. Alguém tem outra idéia melhor? Testei DeviceIoControl(hDevice, IOCTL_Storage_Load_Media, nil, 0, nil, 0, dRet, nil); // Fecha Aqui não funciona. O compilador esta mandando também as mensagens de que: [Hint] Unit1.pas(91): Value assigned to 'hDevice' never used [Hint] Unit1.pas(89): Variable 'dRet' is declared but never used in 'TForm1.Button4Click'
-
s3c, usando SA.NameSpace(17).ParseName('G:\').InvokeVerb('E&jetar'); funciona!! Pena que não teria um análogo para fechar!! Mas, como eu faço para descobrir. via código, qual a letra do DVD. Tem algum código, tipo daqueles ,que descobrem onde está instalado o windows?
-
s3c, testei, mas não funcionou. Tenho os dois dispositivos e não funcionou. Será que é porque tem os dois? A propósito, como poderia descobrir qual o diretório que está instalado o DVD?(Via código é claro?) Porque com esse abaixo : mciSendString('Set cdaudio door open wait', nil, 0, handle); ele abre o dispositivo sempre do cd quando tem os dois e abre o do dvd quando so tem ele. Para fechar é só trocar o opem pelo close. Ou seja, ele não precisa saber qual é a letra onde está o CD.
-
s3c, realmente seu código é muito mais simples e direto.
-
Realmente s3c,com esta unit os erros pararam de ocorrer, se bem que acho que não estou sabendo onde colocar o código do Micheus. Mas, como seria isso em cima do seu código, s3c?
-
Micheus Tentei testar seu código, mas estou recebendo as seguintes mensagens de erro: undeclared identifier HTREEITEM. undeclared identifier TTVITEM. undeclared identifier TVM_GETITEM.
-
Micheus, realmente, quando postei o objetivo era acessar a chave a partir de uma string já conhecida como existente. Pois ela estaria disponivel num listbox proveniente do registro. Porém, depois cheguei a conclusão que poderia usar para uma pesquisa, tipo digitar o caminho num edit e mandar abrir. Existem chaves que todos sabem de cabeça, como exemplo a do RUN. É claro que neste caso qualquer um de nós poderia digitar algo semelhante ao verdadeiro ou digitar errado. Neste caso não saberia como fazer, até ler o seu post que tira esta dúvida. Bem interessante este código, Micheus. Essa idéia surgiu observando o programa RegAlyzer, do mesmo autor do programa Spybot (esse todos devem conhecer). O link é o seguinte: http://www.spybot.info/pt/regalyzer/index.html Neste programa, muito interessante para quem precisa acessar determinadas chaves do registro com rapidez o autor não fornece esta possibilidade(pelo menos que eu tenha percebido), a de abrir com foco numa string. Já no também famoso RegMon 7.03 isso já é possível. http://superdownloads.uol.com.br/download/10/regmon-(nt-xp)/ Aí fiquei pensando se um faz e o outro não é porque não deve ser tão simples, mas é possível, aí postei a pergunta!! Eu é que agradeço a todos vocês por essa oportunidade de aprender um pouco mais.
-
s3c, deu para ter uma boa idéia geral. Obrigado por mais esta ajuda. Graymalkin, obrigado por seu link, pois ele é que deu origem a série.
-
s3c, obrigado, funcionou perfeitamente. Você poderia, quando tiver tempo, dar uma explicada no código, seguindo sua sequência. Não entendo bem, principalmente: Os FindWindow e os SendMessage. Não o que as funções fazem, mas sim porque aqueles parâmetros; SysTreeView32, SysListView32, WM_KeyDown, VK_Left, Ord(sKey)...
-
Não entendi o post sugerido pelo GrayMalkin, mas me lembrei ter lido que era necessário um tempo para atualizar o listView e lá tinha // have to wait for Regedit to update the listview Sleep(1000); Aí na pura intuição coloquei sleep(1000) entre ShellExecute (0,'open',C:\Windows\System32\Regedt32.exe,nil,nil,SW_SHOWNORMAL); e o seu código e funcionou. Não sei se esta é a melhor maneira mas, funcionou. Inclusive o efeito é interessante pois você vê o programa ir abrindo as chaves até chegar a chave requerida. É isso mesmo ou tem algo mais inteligente??
-
Coloquei a procedure que você criou no evento OnClick de um botão. Se abro o regedit manualmente e depois clico no botão o código é executado corretamente. Se abro o regedit via código não funciona. Tentei: 1)Colocar logo depois do begin no seu código ShellExecute (0,'open',C:\Windows\System32\Regedt32.exe,nil,nil,SW_SHOWNORMAL); Não funcionou. 2) Limpar a chave antes de chamar o regedit:(logo depois do begin do seu código) reg.RootKey:= HKEY_CURRENT_USER; reg.OpenKey('\Software\Microsoft\Windows\CurrentVersion\Applets\Regedit',False); reg.WriteString('LastKey','Meu Computador'); ShellExecute (0,'open',C:\Windows\System32\Regedt32.exe,nil,nil,SW_SHOWNORMAL); Não funcionou. O que pode estar havendo?
-
Qualquer exemplo serviria. Fazendo com um acho que serviria para qualquer outro, não? Por exemplo: HKEY_LOCAL_MACHINE\SOFTWARE\Borland\BLW32\BLAPIPATH A minha idéia para implementar o código seria o usuário clicar num caminho num listbox, que contém caminhos do regedit e ao clicar num botão ele abrir o regedit na chave e numa string ou outro tipo de valor qualquer. O código acima seria um exemplo. Mas tendo o código para abrir com foco na string, a parte do listbox acho que seria fácil.
-
Olá, s3c, obrigado pela tradução. Parece que é bem trabalhoso, né? A idéia parece que é bem inteligente!! Não é a toa que poucos programas usam isto. Se um dia você tiver tempo e quiser, e puder escreve o código prá mim.
-
Realmente não entendi. Não conheço nada de C++.
-
Obrigado Graymalkin, embora não entenda nada de c++ vou baixar e dar uma olhada.
-
Abrir o regedit não é o problema. ShellExecute (0,'open',C:\Windows\System32\Regedt32.exe,nil,nil,SW_SHOWNORMAL); Abrir numa determinada chave também não é o problema. reg.RootKey:= HKEY_CURRENT_USER; reg.OpenKey('\Software\Microsoft\Windows\CurrentVersion\Applets\Regedit',False); reg.WriteString('LastKey','Coloque aqui o caminho que deseja mostrar quando abrir o regedit'); Coloque o código acima e em seguida o shellexecute que o regedit abrirá no caminho especificado. E a dúvida? A dúvida é o seguinte: Quero abrir o regedit numa chave com foco numa string de uma chave. Suponha a chave HKEY_LOCAL_MACHINE\SOFTWARE\Borland\BLW32 Nesta chave existe a string 'BLAPIPATH'. Quero abrir o regedit nesta chave(isto consigo com o descrito acima), só que com foco na string 'BLAPIPATH'.Isto não consigo Colocando HKEY_LOCAL_MACHINE\SOFTWARE\Borland\BLW32\BLAPIPATH. Nada acontece. Alguém tem alguma idéia?
-
Churc Realmente parece que existiriam muitos cuidados a serem tomados!! Thales O que você quer dizer com as outras aplicações tomarem as devidas providências? No caso de mandar a mensagem WM_TIMECHANGE, o que você está mensionando seria usar: { Private declarations } procedure WMTIMECHANGE(var Message: TWMTIMECHANGE); message WM_TIMECHANGE; // e depois: procedure TForm1.WMTIMECHANGE(var Message: TWMTIMECHANGE); begin //Código end; Você teria algum exemplo para isto, ou é meio chato de criar um exemplo com código??
-
Num outro fórum alguém perguntou: Como Acertar O Relógio Do Sistema? A resposta foi a seguinte: procedure AjustaDataHoraSistema(Data, Hora: TDateTime); var DataHora: TSystemTime; Ano, mês, Dia, H, M, S, Mil: word; begin Data := StrToDate(Edit1.Text); Hora := StrToTime(Edit2.Text); DecodeDate(Data, Ano, mês, Dia); DecodeTime(Hora, H, M, S, Mil); with DataHora do begin wYear := Ano; wMonth := mês; wDay := Dia; wHour := H; wMinute := M; wSecond := S; wMilliseconds := Mil; end; SetLocalTime(DataHora); end; Quer dizer que todos aqueles programas do passado que baseavam o seu tempo de uso em data e hora estariam ferrados com este código acima? Teria como desabilitar o acesso ao relógio do sistema?
-
Alinhamento De Colunas No Memo Do Delphi
pergunta respondeu ao Silvio Giuseppe de Paulo Nobre em Delphi, Kylix
Silvio, veja se este tópico lhe ajuda: -
CheckBox1.OnClick:=nil; //Faça o que você quiser, meu filho. CheckBox1.OnClick:=CheckBox1Click; Thales, Funcionou perfeitamente.