NuGuN Posted July 11, 2006 at 05:35 PM Report #37571 Posted July 11, 2006 at 05:35 PM Como sabem a grande maioria dos ficheiros tem uma extensão, texto.txt, imagem.jpg, executavel.exe, etc, etc. Uma das funções das extensões dos ficheiros é ajudar o SO a identificar os vários tipos de ficheiros existentes (são mais que muitos). Quando abrimos um ficheiro .txt, por exemplo, automaticamente nos é aberta a janela do Notepad com o texto que o ficheiro contém, nas pastas cada tipo de ficheiro tem o icon correspondente ao seu programa. Como é que o SO sabe que uma imagem é aberta com o visualizador de imagens ou que um ficheiro .html é aberto com o IE (caso o IE seja o browser predefinido no SO)? Para isto o SO tem uma extensa lista com todos os tipos de ficheiros que ele conhece e que os programas criam, dentro do registo do sistema (registry). Eu vou explicar como se cria uma extensão manualmente com as seguintes características Icon Próprio Ao fazer doubleclick no ficheiro com essa extensão ele abrirá um programa pré-definido Isso serve para quando fazemos um programa que tem os seus próprios ficheiros e queremos que o windows os reconheça, por exemplo. A extensão a criar vai ter o nome de test (.test). Primeiro abre-se o registo do sistema (Iniciar-> Executar e escreve-se regedit), depois: abrimos a chave HKEY_CLASSES_ROOT dentro da chave HKEY_CLASSES_ROOT criamos uma nova chave e damos-lhe o nome de .test Seleccionamos a chave .test e do lado direito fazemos doubleclick em cima do valor de cadeia com o nome de (Predefinição) e no campo "Dados de Valor" colocamos TestFile (Atenção porque TestFile é diferente de testfile) Em seguida criamos outra chave dentro da chave HKEY_CLASSES_ROOT e damos-lhe o nome de TestFile Dentro da chave que criamos anteriormente (TestFile) criamos mais 2 chaves, uma com o nome de DefaultIcon e outra com o nome de shell Seleccionamos a chave DefaultIcon e do lado direito no valor de cadeia (Predefinição) colocamos o directório do programa do qual queremos que a nossa extensão tenha o icon seguido de ",0" (sem as ""). Ficaria C:\programa.exe,0 Em seguida dentro da chave shell criamos outra chave com o nome open e dentro da chave open outra chave com o nome command Seleccionamos a chave command e do lado direito no valor de cadeia (Predefinição) colocamos o directório com que queremos que os ficheiros com a extensão test sejam aberto mais o nome do ficheiro do programa seguido de um espaço e "%1" (sem as "") E assim já temos uma nova extensão criada com icon e programa próprio. Para que estes valores entrem em vigor ou reinicia-se o sistema ou então pode-se utilizar um dos programas que vou deixar em anexo. As extensões não tem só estas propriedades, se quisermos também que ao fazer click com o botão direito no ficheiro com a extensão .test nos apareça a opção "Editar" fazemos o seguinte: Abrimos o registo do sistema Abrimos a chave TestFile e em seguida a chave shell Criamos uma nova chave dentro da chave shell com o nome de "Editar com Programa Teste" (sem as "") E dentro da chave "Editar com Programa Teste" criamos outra chave com o nome de command Seleccionamos a chave command e no lado direito no valor de cadeia (Predefinição) colocamos o mesmo que colocamos na chave command dentro da outra chave command(shell->open->command) caso o programa que queremos seja o mesmo Vou ficar por aqui, existem mais algumas propriedades, uma delas é a opção print só que para utilizar esta opção o programa já tem de ter essa funcionalidade. Para verem mais propriedades basta procurarem no regedit as extensões dos outros ficheiros, por exemplo se quiserem ver as propriedades da extensão .jpg basta iram ao regedit e na chave primária "HKEY_CLASSES_ROOT" procurem por .jpg e por jpgfile, seguindo esta lógica encontram ai todas as extensões que o vosso sistema tem guardadas 😉 Se alguém saber mais alguns truques sobre este assunto já sabe... 😛 Em relação aos programas, pensei em fazer um programa mas encontrei um programa na net muito completo e bem feito pelo que decidi postar antes o código desse programa em vez de fazer um e deixo também um pequeno programa para fazerem o windows actualizar as modificações feitas para não terem de reiniciar o sistema 😉 cumps
skin Posted July 11, 2006 at 06:15 PM Report #37585 Posted July 11, 2006 at 06:15 PM Gostei do tópico. Está muito interessante. É mais uma coisa para aprender com o registo do windows. O programa actualizar foi feito por ti? E não me queres arranjar o código fonte 😉? Ou então a pasta que tem aquilo das forms, ...? Quanto ao outro programa ainda vou experimentar porque ainda não pus em prática nada disto. Depois digo mais alguma coisa. Our lives begin to end the day we become silent about things that matter - Martin Luther King
vbmaster Posted July 11, 2006 at 06:22 PM Report #37593 Posted July 11, 2006 at 06:22 PM Sim senhor, já tinha uma vaga ideia sobre o assunto quando há uns anos explorava o registo para me ajudar nos programas de vb, mas não sabia essa parte da adição de menu's, etc... Muito bem. 😉
David Pintassilgo Posted July 11, 2006 at 06:37 PM Report #37604 Posted July 11, 2006 at 06:37 PM Muito bom mesmo. Vai-me ser util. cool stuffs to check. http://blog.zxcoders.com//
NuGuN Posted July 11, 2006 at 06:55 PM Author Report #37612 Posted July 11, 2006 at 06:55 PM O programa actualizar foi feito por ti? E não me queres arranjar o código fonte Tongue? Foi feito por min, mas limiteime a copiar do outro programa o essencial para fazer a actualização Aqui fica o código: Option Explicit Private Declare Sub SHChangeNotify Lib "shell32.dll" (ByVal wEventId As Long, ByVal uFlags As Long, dwItem1 As Any, dwItem2 As Any) Private Const SHCNE_ASSOCCHANGED = &H8000000 Private Const SHCNF_IDLIST = &H0& Private Sub Command1_Click() SHChangeNotify SHCNE_ASSOCCHANGED, SHCNF_IDLIST, 0, 0 End Sub Ou então a pasta que tem aquilo das forms, ...? Ao que te referes??? cumps
skin Posted July 11, 2006 at 07:16 PM Report #37617 Posted July 11, 2006 at 07:16 PM Tipo se fosse melhor davas as extensões da pasta do projecto que são criadas quando trabalhas com basic. Our lives begin to end the day we become silent about things that matter - Martin Luther King
NuGuN Posted July 11, 2006 at 07:22 PM Author Report #37620 Posted July 11, 2006 at 07:22 PM hhhmmmm , ficas com o código que deve ser melhor 😉 cumps
skin Posted July 11, 2006 at 07:24 PM Report #37621 Posted July 11, 2006 at 07:24 PM Por acaso n é! Se puderes envia por mail 😉! Our lives begin to end the day we become silent about things that matter - Martin Luther King
NuGuN Posted July 11, 2006 at 08:25 PM Author Report #37636 Posted July 11, 2006 at 08:25 PM epa entao não estas a falar do que eu estava a pensar 😉 Podeste explicar melhor?? cumps
skin Posted July 11, 2006 at 08:29 PM Report #37638 Posted July 11, 2006 at 08:29 PM Tipo tu quando estas a desenvolver uma aplicação em Visual Basic com o Microsoft VB na tua direita tens uma cena que normalmente (predefinido) diz Form1.vb .....sabes? era isso que eu queria! Entendes? Our lives begin to end the day we become silent about things that matter - Martin Luther King
NuGuN Posted July 11, 2006 at 09:00 PM Author Report #37646 Posted July 11, 2006 at 09:00 PM Para o programa da actualização --> Form1.frm Para o outro --> Form1.frm ; associateExtension.bas Já agora para que queres istu??? cumps
skin Posted July 11, 2006 at 09:09 PM Report #37648 Posted July 11, 2006 at 09:09 PM Vou ver isso outra vez! E depois digo se deu ou n! Porque eu estou a tentar criar um programa que altere as chaves automaticamente. Tipo tens uma lista e seleccionas o que queres mudar. E depois punha esse butão do actualizar. Our lives begin to end the day we become silent about things that matter - Martin Luther King
skin Posted July 12, 2006 at 09:36 PM Report #37883 Posted July 12, 2006 at 09:36 PM Se eu puser isto no inicio do código Option Explicit Private Declare Sub SHChangeNotify Lib "shell32.dll" (ByVal wEventId As Long, ByVal uFlags As Long, dwItem1 As Any, dwItem2 As Any) Private Const SHCNE_ASSOCCHANGED = &H8000000 Private Const SHCNF_IDLIST = &H0& E isto no sitio onde quero aquilo Private Sub Command1_Click() SHChangeNotify SHCNE_ASSOCCHANGED, SHCNF_IDLIST, 0, 0 End Sub Fica a funcionar certo? Our lives begin to end the day we become silent about things that matter - Martin Luther King
NuGuN Posted July 12, 2006 at 09:47 PM Author Report #37889 Posted July 12, 2006 at 09:47 PM Se eu puser isto no inicio do códigoCódigo GeSHi (vb): Option Explicit Private Declare Sub SHChangeNotify Lib "shell32.dll" (ByVal wEventId As Long, ByVal uFlags As Long, dwItem1 As Any, dwItem2 As Any) Private Const SHCNE_ASSOCCHANGED = &H8000000 Private Const SHCNF_IDLIST = &H0& Created by GeSHI 1.0.7.5 Certo E isto no sitio onde quero aquiloCódigo GeSHi (vb): Private Sub Command1_Click() SHChangeNotify SHCNE_ASSOCCHANGED, SHCNF_IDLIST, 0, 0 End Sub Created by GeSHI 1.0.7.5E isto no sitio onde quero aquilo Neste basta copiares a linha SHChangeNotify SHCNE_ASSOCCHANGED, SHCNF_IDLIST, 0, 0 Private Sub Command1_Click() End Sub Istu é apenas o evento do botão cumps
skin Posted July 12, 2006 at 09:54 PM Report #37893 Posted July 12, 2006 at 09:54 PM 😁 Aplicação pronta 😁! So falta uns retoques no visual mas já vou lançar a versão 1.2. 😄 Our lives begin to end the day we become silent about things that matter - Martin Luther King
skin Posted July 17, 2006 at 08:34 PM Report #38713 Posted July 17, 2006 at 08:34 PM Isto ja ta pra ja pronto 😛 Our lives begin to end the day we become silent about things that matter - Martin Luther King
NuGuN Posted July 18, 2006 at 08:05 AM Author Report #38788 Posted July 18, 2006 at 08:05 AM Então mostra ao pll 😛 cumps
skin Posted July 18, 2006 at 08:09 AM Report #38789 Posted July 18, 2006 at 08:09 AM ok aqui vai ela num instalador tambem criado por mim. http://discostu.xeserver.net/~skin/Projectos/skin%20setup.exe EDIT Espero comentários. . . Our lives begin to end the day we become silent about things that matter - Martin Luther King
NuGuN Posted July 19, 2006 at 08:29 PM Author Report #39125 Posted July 19, 2006 at 08:29 PM Esta fixe, só é pena não ter mais nenhuma utilidade a não ser a de associar ou "desassociar" as extensões .skin Já agora altera aquela TextBox onde tens o texto: Skin. Seleccione a área em baixo para associar todos os ficheiros .skin a este programa. Depois sempre que quiser utilizar os ficheiros .skin este programa vai abri-los. Esse texto dá para apagar mas, suponho que não era pa dar 😄 Se não sabes como se faz.... basta ires a propriedade Locked ou Lock da TextBox e meteres a True 🙂 cumps
skin Posted July 19, 2006 at 11:13 PM Report #39153 Posted July 19, 2006 at 11:13 PM Que utilidade deveria ter? Tens seugestões? Tipo a mensagem é para tar mesmo assim 🙂 Our lives begin to end the day we become silent about things that matter - Martin Luther King
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now