USUÁRIO:      SENHA:        SALVAR LOGIN ?    Adicione o VBWEB na sua lista de favoritos   Fale conosco 

 

  Dicas

  Visual Basic    (Windows)

Título da Dica:  Como associar uma extensão ao programa
Postada em 14/8/2000 por Webmaster      Clique aqui para enviar email para o autor  webmaster@vbweb.com.br
'*** Sempre tome muito cuidado, pois estarás mechendo no Registro do Windows. ***
'Coloque num Modulo

'General Declarations
Public Type mnuCommands
  Captions As New Collection
  Commands As New Collection
End Type

Public Type filetype
  Commands As mnuCommands
  Extension As String
  ProperName As String
  FullName As String
  ContentType As String
  IconPath As String
  IconIndex As Integer
End Type

Public Const REG_SZ As Long = 1
Public Const HKEY_CLASSES_ROOT As Long = &H80000000

Public Declare Function RegCloseKey Lib "advapi32.dll" _
       (ByVal hKey As Long) As Long
Public Declare Function RegCreateKey Lib "advapi32" _
       Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal _
       lpszSubKey As String, phkResult As Long) As Long
Public Declare Function RegSetValueEx Lib "advapi32" _
       Alias "RegSetValueExA" (ByVal hKey As Long, _
       ByVal lpszValueName As String, ByVal dwReserved _
       As Long, ByVal fdwType As Long, lpbData As Any, _
       ByVal cbData As Long) As Long

'Código do Módulo:
Public Sub CreateExtension(newfiletype As filetype)
  Dim IconString As String
  Dim Result As Long, Result2 As Long, ResultX As Long
  Dim ReturnValue As Long, HKeyX As Long
  Dim cmdloop As Integer
  IconString = newfiletype.IconPath & "," & _
               newfiletype.IconIndex
  If Left$(newfiletype.Extension, 1) <> "." Then
    newfiletype.Extension = "." & _
    newfiletype.Extension
  End If
  RegCreateKey HKEY_CLASSES_ROOT,newfiletype.Extension,Result
  ReturnValue = RegSetValueEx(Result, "", 0, REG_SZ, _
                ByVal newfiletype.ProperName, _
                LenB(StrConv(newfiletype.ProperName, _
                vbFromUnicode)))

  ' Acertando o conteúdo
  If newfiletype.ContentType <> "" Then
    ReturnValue = RegSetValueEx(Result, "Content Type", 0, _
                  REG_SZ, ByVal CStr(newfiletype.ContentType), _
                  LenB(StrConv(newfiletype.ContentType, _
                  vbFromUnicode)))
  End If
  RegCreateKey HKEY_CLASSES_ROOT,newfiletype.ProperName,Result
  If Not IconString = ",0" Then
    RegCreateKey Result, "DefaultIcon", Result2

    'Cria a chave do "ProperName\DefaultIcon"
    ReturnValue = RegSetValueEx(Result2, "", 0, REG_SZ, _
                  ByVal IconString, LenB(StrConv(IconString, _
                  vbFromUnicode)))
  End If

  'Atribuir o valor padrão para a chave
  ReturnValue = RegSetValueEx(Result, "", 0, REG_SZ, ByVal _
                newfiletype.FullName,LenB(StrConv(newfiletype.FullName, _
                vbFromUnicode)))
  RegCreateKey Result, ByVal "Shell", ResultX

  ' Criando as subkeys necessárias para cada comando
  For cmdloop = 1 To newfiletype.Commands.Captions.Count
    RegCreateKey ResultX, ByVal newfiletype.Commands.Captions(cmdloop), _
                 Result
    RegCreateKey Result, ByVal "Command", Result2

    Dim CurrentCommand$
    CurrentCommand = newfiletype.Commands.Commands(cmdloop)
    ReturnValue = RegSetValueEx(Result2, "", 0, REG_SZ, _
                  ByVal CurrentCommand$, LenB(StrConv(CurrentCommand$, _
                  vbFromUnicode)))
    RegCloseKey Result
    RegCloseKey Result2
  Next
  RegCloseKey Result2
End Sub

'Então, para associar a Extensão ".MEX" ao Notepad.exe utilize o segunite código:
  Dim myfiletype As filetype
  myfiletype.ProperName = "MeuArquivo"
  myfiletype.FullName = "Meu Arquivo"
  myfiletype.ContentType = "AlgumTipoMIME"
  myfiletype.Extension = ".MEX" '<< Sua Extensão
  myfiletype.Commands.Captions.Add "Open"
  myfiletype.Commands.Commands.Add "c:\windows\notepad.exe ""%1"""
  myfiletype.Commands.Captions.Add "Print"
  myfiletype.Commands.Commands.Add "c:\windows\notepad.exe ""%1"" /P"
  CreateExtension myfiletype

  'Extension contem a extensão que se deseja associar;
  'Propername é o nome do tipo, que você se referenciará
  '(não use espaços)
  'FullName é a descrição do Tipo

  'ContentType é a descrição que verás em seu browser, caso
  'estivesse para fazer o download de um arquivo deste tipo.

  'Você pode pensar na extensão como um "atalho", o
  '"proper name" como o "nome" mesmo e o "fullname" como
  'o "título"      ou "caption" da exensão.

  'Esses "Commands" contêm os "verbos" para o seu tipo. Quando
  'você clica com o direito sobre este tipo de arquivo, você
  'verá estas opção (verbos). O "Open" foi atribuido como "verbo"
  'padrão, assim quando der um duplo clique sobre o arquivo, ele
  'executará o comando associado ao "Open".
 


CyberWEB Network Ltda.    © Copyright 2000-2024   -   Todos os direitos reservados.
Powered by HostingZone - A melhor hospedagem para seu site
Topo da página