programadorvb6 Posted March 12, 2012 Report Share Posted March 12, 2012 Olá bom dia. Segui o exemplo facultado por : Wiki Portugal-a-Programar (https://wiki.portugal-a-programar.pt/dev_net:vb.net:associar_extensoes) onde se pode associar um ficheiro icon a uma aplicação, como mostra este exemplo fornecido : Dim CaminhoExe As String = "C:\Programas\A_Minha_Aplicacao\App.exe" Dim CaminhoIco As String = "C:\Programas\A_Minha_Aplicacao\App.ico" Dim Extensao As String = "WIKI" My.Computer.Registry.ClassesRoot.CreateSubKey("." & Extensao).SetValue("", Extensao, Microsoft.Win32.RegistryValueKind.String) My.Computer.Registry.ClassesRoot.CreateSubKey(Extensao & "\shell\open\command").SetValue("", CaminhoExe & " ""%l"" ", Microsoft.Win32.RegistryValueKind.String) My.Computer.Registry.ClassesRoot.CreateSubKey(Extensao & "\DefaultIcon").SetValue("", CaminhoIco, Microsoft.Win32.RegistryValueKind.ExpandString) - O que eu pretendia era associar um icon, proveniente do resources , como mostra a imagem em baixo. http://img17.imageshack.us/img17/4587/imagemglw.png - Alguém sabe como o fazer a ligação a um icon que esteja no Resource/Ou extrair temporariamente o arquivo para ser usado? Grato desde já pela vossa atenção. Programadorvb6 ______________________________________________________________________________ Que minha coragem seja maior que meu medo e que minha força seja tão grande quanto minha fé. Link to comment Share on other sites More sharing options...
Caça Posted March 12, 2012 Report Share Posted March 12, 2012 Podes extrair o ficheiro, escrevendo-o no disco My.Computer.FileSystem.WriteAllBytes("Caminho", My.Resources.Nome_do_Icon, False) Pedro Martins Não respondo a duvidas por PM Link to comment Share on other sites More sharing options...
emanuelx Posted March 12, 2012 Report Share Posted March 12, 2012 eu para o icon uso desta forma application.startuppath & "\oficheiro.exe,0" com calma e sem stresses Link to comment Share on other sites More sharing options...
programadorvb6 Posted March 12, 2012 Author Report Share Posted March 12, 2012 Olá Caça. Fiz como me indicou, mas devolve erro. http://img713.imageshack.us/img713/4569/errojp.jpg Grato desde já pela sua ajuda. Programadorvb6 ______________________________________________________________________________ Que minha coragem seja maior que meu medo e que minha força seja tão grande quanto minha fé. Link to comment Share on other sites More sharing options...
bioshock Posted March 12, 2012 Report Share Posted March 12, 2012 Podes extrair o ficheiro, escrevendo-o no disco My.Computer.FileSystem.WriteAllBytes("Caminho", My.Resources.Nome_do_Icon, False) Atendendo ao que o @Caça te disse tu só estás a definir a pasta, não estás a definir a pasta + a imagem, e é isso que te falta provavelmente: Caminho = Application.StartupPath & "\imagem_1.jpg" Link to comment Share on other sites More sharing options...
programadorvb6 Posted March 12, 2012 Author Report Share Posted March 12, 2012 Olá bioshock Fiz assim e também deu o mesmo erro , será que tenho que chamar alguma Dll? My.Computer.FileSystem.WriteAllBytes(MyTempFilePath, My.Resources.MepFile, False) Grato desde já pela sua ajuda. Programadorvb6 ______________________________________________________________________________ Que minha coragem seja maior que meu medo e que minha força seja tão grande quanto minha fé. Link to comment Share on other sites More sharing options...
bioshock Posted March 12, 2012 Report Share Posted March 12, 2012 Bem, eu fui experimentar a solução dada pelo @Caça, e tinhas de converter primeiro o formato Bitmap, como disseste e bem, para Bytes(). Contudo há uma solução mais rápida e também eficaz: My.Resources.Imagem_1.Save("C:\img_1.jpg", Drawing.Imaging.ImageFormat.Jpeg) Link to comment Share on other sites More sharing options...
programadorvb6 Posted March 12, 2012 Author Report Share Posted March 12, 2012 Olá boa noite bioshock . Fiz então assim e funcionou: My.Resources.MepFile.Save(MyTempFilePath, Drawing.Imaging.ImageFormat.Icon) Ao chegar a casa, exprimentei com no Windows 7 Ultimate - E obtive este erro : http://img163.imageshack.us/img163/550/errfi.jpg É um pouco estranho, porque no Xp, o exemplo dado pela : Wiki Portugal-a-Programar, funciona na perfeição. Em casa tenho o windows 7 Ultimate e devolve-me este erro. O que poderá estar mal? - Deixo o código que fiz para que me possam ajudar : '================== Nas Classes ================== Imports System.IO Public Class Procedimentos Public Sub Associar_Extensao(ByRef Ficheiro_Modificar As String, ByRef Ficheiro_Icon As String, ByRef Extensao_Tipo As String) Dim MyTempFilePath As String = Application.StartupPath & Ficheiro_Icon My.Resources.MepFile.Save(MyTempFilePath, Drawing.Imaging.ImageFormat.Icon) Dim CaminhoExe As String = Application.StartupPath & Ficheiro_Modificar '"\Folha.Mep" Dim CaminhoIco As String = MyTempFilePath '"\MepFile.ico" Dim Extensao As String = Extensao_Tipo '"Mep" My.Computer.Registry.ClassesRoot.CreateSubKey("." & Extensao).SetValue("", Extensao, Microsoft.Win32.RegistryValueKind.String) My.Computer.Registry.ClassesRoot.CreateSubKey(Extensao & "\shell\open\command").SetValue("", CaminhoExe & " ""%l"" ", Microsoft.Win32.RegistryValueKind.String) My.Computer.Registry.ClassesRoot.CreateSubKey(Extensao & "\DefaultIcon").SetValue("", CaminhoIco, Microsoft.Win32.RegistryValueKind.ExpandString) Application.DoEvents() File.Delete(MyTempFilePath) End Sub Public Sub Extensao_Original(ByRef Extensao_Tipo As String) Dim Extensao As String = Extensao_Tipo.ToString '"Mep" My.Computer.Registry.ClassesRoot.DeleteSubKey("." & Extensao, False) My.Computer.Registry.ClassesRoot.DeleteSubKey(Extensao & "\DefaultIcon", False) My.Computer.Registry.ClassesRoot.DeleteSubKey(Extensao & "\shell\open\command", False) My.Computer.Registry.ClassesRoot.DeleteSubKey(Extensao & "\shell\open", False) My.Computer.Registry.ClassesRoot.DeleteSubKey(Extensao & "\shell", False) My.Computer.Registry.ClassesRoot.DeleteSubKey(Extensao, False) End Sub End Class Public Class Funcoes Public Function ExisteFicheiro(ByRef Caminho_Ficheiro As String) As Boolean If IO.File.Exists(Caminho_Ficheiro) Then ExisteFicheiro = True Else ExisteFicheiro = False End If End Function End Class '================== No Módulo ================== Module DefGlobais Public ObjProcedimentos As New Procedimentos Public ObjFuncoes As New Funcoes End Module '================== No Formulário ================== Public Class RegistoH Private Sub RegistoH_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load If ObjFuncoes.ProcuraExtensao("Mep") = False AndAlso ObjFuncoes.ProcuraExtensao("Mep") = False Then ObjProcedimentos.Associar_Extensao("\Folha.Mep", "\MepFile.ico", "Mep") End If Application.DoEvents() 'Tira o ficheiro do casulo, para que se possa trabalhar. If ObjFuncoes.ExisteFicheiro(Application.StartupPath & "\Folha.Mep") = True Then Escudo.Desproteger_Ficheiro(Application.StartupPath & "\Folha.Mep", Application.StartupPath & "\Folha.mdb") End If Application.DoEvents() MostraTempo.Enabled = True Me.lblHorario.Text = FormatDateTime(Date.Now, DateFormat.LongTime) 'Novo Label para mostrar o horário AbrirBD() Call ObjProcedimentos.LimpaCampos(Me, Procedimentos.Limpa_Controle.Todos) Me.PreencherLista() Me.Grelha.Select() Accoes_Botoes(Me, 2, 2, Ordem.DesLigar) ObjProcedimentos.Formas_Cursor(Me.Grelha, Procedimentos.Cursor_Tipo.Cursor_Default) ObjProcedimentos.Formas_Cursor(Me.ToolStrip1, Procedimentos.Cursor_Tipo.Cursor_Mao) End Sub End Class Grato desde já pela vossa arenção. Atentamente. Programadorvb6 ______________________________________________________________________________ Que minha coragem seja maior que meu medo e que minha força seja tão grande quanto minha fé. Link to comment Share on other sites More sharing options...
bioshock Posted March 12, 2012 Report Share Posted March 12, 2012 Pronto, presumo que tenha resultado (?). Link to comment Share on other sites More sharing options...
programadorvb6 Posted March 12, 2012 Author Report Share Posted March 12, 2012 Olá mais uma vez. Como descrevi em cima fiquei pendurado com o Win7 e nem sei como sair dela! Obrigado desde já pela sua participação. Atentamente programadorvb6 ______________________________________________________________________________ Que minha coragem seja maior que meu medo e que minha força seja tão grande quanto minha fé. Link to comment Share on other sites More sharing options...
bioshock Posted March 12, 2012 Report Share Posted March 12, 2012 À primeira vista, tens de alterar a variável MyTempFilePath para: Dim MyTempFilePath As String = Application.StartupPath & "\" & Ficheiro_Icon Já agora, o que devolve a variável Ficheiro_Icon? Apenas o nome? Se for só o nome, tens de colocar: Dim MyTempFilePath As String = Application.StartupPath & "\" & Ficheiro_Icon & ".jpg" Ou seja, nome + respectiva extensão. Link to comment Share on other sites More sharing options...
emanuelx Posted March 12, 2012 Report Share Posted March 12, 2012 tu nunca vais conseguir escrever nas entradas de registo "classesroot" no windows 7 se não executares como administrador com calma e sem stresses Link to comment Share on other sites More sharing options...
bioshock Posted March 12, 2012 Report Share Posted March 12, 2012 Sim, esse também é um problema. Mas ele também tem aquelas partes do código mal. Link to comment Share on other sites More sharing options...
programadorvb6 Posted March 13, 2012 Author Report Share Posted March 13, 2012 Olá bioshock Em cima no código descrito por mim está referênciado no Load as definições 'objecto de procedimento.[Ligar A:] Associar_Extensao([FicheiroEnc+Ext],[FicheiroIcon+Ext],[Nome da ref ao ficheiro na root] ObjProcedimentos.Associar_Extensao("\Folha.Mep", "\MepFile.ico", "Mep") Como posso então contornar este problema? -> Access to the registry key 'HKEY_CLASSES_ROOT\.Mep' is denied. É estranho porque temos até instruções para os SpecialFolders etc.. Grato desde já pela vossa ajuda. Atentamente Programadorvb6 EDIT: GeSHi adicionado, já vais com mais de 750 mensagens e ainda não sabes utilizar o GeSHi? Vê aqui como utilizar o GeSHi ______________________________________________________________________________ Que minha coragem seja maior que meu medo e que minha força seja tão grande quanto minha fé. Link to comment Share on other sites More sharing options...
emanuelx Posted March 13, 2012 Report Share Posted March 13, 2012 tens de executar a aplicação como administrador com calma e sem stresses Link to comment Share on other sites More sharing options...
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