Ayuda Editor de Texto VB .NET

Iniciado por gonzalo57, 23 Diciembre 2012, 19:36 PM

0 Miembros y 1 Visitante están viendo este tema.

gonzalo57

Weno hola a todos, miren estoy haciendo un editor de texto, es decir como puede ser el OpenOffice o Microsoft Word, me preguntaba como puedo poner para que un button guarde el texto escrito en el programa, y cuando lo abras se abra con el programa. Se que deberia crear una extension de archivo o algo pero weno no estoy muy informado en eso, alguien me ayuda? :D grache de ante mano

y porcierto tambien un label que pusiera cuantas lineas lleva puestas un richtextbox


lo necesito para dentro de muy poqito tiempo ayudenme
@echo off
title Gonzalo57
color 5a
echo Estoy aprendiendo Batch :3
echo.
pause
cls
echo un saludo elhacker.net :)
pause > nul

$Edu$

Dices para guardar tus archivos de textos con una nueva extension por ejemplo .gon y luego que en esa pc se pueda ejecutar archivos .gon que abriran tu programa principal pero ya con el texto que contenia el archivo .gon? Tendras que buscar como asociar una extension con tu programa como por ejemplo esto:

http://mel-green.com/2009/04/c-set-file-type-association/

gonzalo57

Cita de: $Edu$ en 23 Diciembre 2012, 22:13 PM
Dices para guardar tus archivos de textos con una nueva extension por ejemplo .gon y luego que en esa pc se pueda ejecutar archivos .gon que abriran tu programa principal pero ya con el texto que contenia el archivo .gon? Tendras que buscar como asociar una extension con tu programa como por ejemplo esto:

http://mel-green.com/2009/04/c-set-file-type-association/


Si, exactamente, pero no entiendo ni papa de lo que dice ese link, ademas esta en C#
@echo off
title Gonzalo57
color 5a
echo Estoy aprendiendo Batch :3
echo.
pause
cls
echo un saludo elhacker.net :)
pause > nul

$Edu$

C# es parte de .NET, creaste tu tema en la sección de .NET como debes hacer pero no aclaraste que se trataba de VB.NET.

De todas formas, espera con paciencia a que te ayuden si no vas a buscar por tu cuenta, yo solo te queria dejar claro que es lo que tenias que buscar, solo te queda buscar mas.

Eleкtro

#4
Te diría la forma más sencilla de hacerlo en 2 simples líneas usando Batch, bueno, usando el comando nativo de Windows "FTYPE" + ASSOC, y podrías usar "process.start" para hacerlo, pero creo que se me echarían encima xD y no quiero usar malas costumbres.

Primero tienes que registrar la extensión en el registro (Cuando digo registrar simplemente me refiero a crear la subclave en la rama HKEY_CLASSES_ROOT)
Y por último tienes que associar la extensión al programa que desees.

Por último déjame decirte que existen conversores de C# a VB.NET, y este es el code que te ha ofrecido $Edu$ convertido:

Código (vbnet) [Seleccionar]
Imports Microsoft.Win32
Imports System.Runtime.InteropServices

Public Class FileAssociation
' Associate file extension with progID, description, icon and application
Public Shared Sub Associate(extension As String, progID As String, description As String, icon As String, application As String)
Registry.ClassesRoot.CreateSubKey(extension).SetValue("", progID)
If progID IsNot Nothing AndAlso progID.Length > 0 Then
Using key As RegistryKey = Registry.ClassesRoot.CreateSubKey(progID)
If description IsNot Nothing Then
key.SetValue("", description)
End If
If icon IsNot Nothing Then
key.CreateSubKey("DefaultIcon").SetValue("", ToShortPathName(icon))
End If
If application IsNot Nothing Then
key.CreateSubKey("Shell\Open\Command").SetValue("", ToShortPathName(application) + " ""%1""")
End If
End Using
End If
End Sub



' Return true if extension already associated in registry
Public Shared Function IsAssociated(extension As String) As Boolean
Return (Registry.ClassesRoot.OpenSubKey(extension, False) IsNot Nothing)
End Function



<DllImport("Kernel32.dll")> _
Private Shared Function GetShortPathName(lpszLongPath As String, <Out> lpszShortPath As StringBuilder, cchBuffer As UInteger) As UInteger
End Function



' Return short path format of a file name
Private Shared Function ToShortPathName(longName As String) As String
Dim s As New StringBuilder(1000)
Dim iSize As UInteger = CType(s.Capacity, UInteger)
Dim iRet As UInteger = GetShortPathName(longName, s, iSize)
Return s.ToString()
End Function


End Class






EDITO:

He probado el code y no me ha funcionado en Windows7, escribe datos corruptos para el valor "icono" y "program", por ejemplo al usarlo así:
Código (vbnet) [Seleccionar]
Associate(".Happy", "Notepad", "Happy Textfile", "notepad.exe,0", "notepad.exe")

En lugar de escribir "Notepad.exe", esto es lo que escribe en el registro: P+^ "%1"

Creo que el error sucede sólamente si tienes los nombres cortos desactivados en el sistema (como en mi caso),
la forma de arreglarlo es eliminando ToShortPathName en el código, y eliminar la función ToShortPathName que al no ser llamada ya no nos sirve para nada,
me parece una tontería que lo hayan puesto,
y ya con eso anda bien en mi caso :).

PD: Gracias por el code $Edu$










Eleкtro

He mejorado el código bajo mis necesidades, a ver si te gusta :)

Código (vbnet) [Seleccionar]
#Region " Associate File extension "
    Public Sub Assoc( _
                    ByVal File_extension As String, _
                    ByVal Default_ID As String, _
                    ByVal Kind_description As String, _
                    ByVal Application As String, _
                    Optional Application_arguments As String = " ""%1""", _
                    Optional File_icon As String = "")

        Microsoft.Win32.Registry.ClassesRoot.CreateSubKey("." & File_extension).SetValue("", Default_ID)
        Using Associate_extension_key As Microsoft.Win32.RegistryKey = Microsoft.Win32.Registry.ClassesRoot.CreateSubKey(Default_ID)
            Associate_extension_key.SetValue("", Kind_description)
            Associate_extension_key.CreateSubKey("DefaultIcon").SetValue("", File_icon)
            Associate_extension_key.CreateSubKey("Shell\Open\Command").SetValue("", Application & Application_arguments)
        End Using

    End Sub
#End Region


Ejemplos de uso:
Código (vbnet) [Seleccionar]
       Assoc("bl", "Bloc", "Bloc TextFile", "Notepad.exe")
       ' Los últimos dos argumentos son opcionales.
       Assoc("PY", "Python", "Python script", "CMD /K ", """Python.exe ""%1"" %*""", "C:\Icons.dll,6")


Saludos.