ayuda en VB.NET

Iniciado por **Aincrad**, 19 Septiembre 2017, 22:33 PM

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

**Aincrad**

hola a todos.

hoy me he encontrado con un problema en vb.net que no puedo solucionar.

tengo este codigo:
Código (vbnet) [Seleccionar]

Dim dirPath As String = Environment.ExpandEnvironmentVariables("%AppData%\Microsoft\Windows\Start Menu\Programs\Startup")
        Try
            For Each Archivo As String In My.Computer.FileSystem.GetFiles( _
                                    dirPath, _
                                    FileIO.SearchOption.SearchAllSubDirectories, _
                                    "*.vbs", _
                                    "*.cmd", _
                                    "*.js", _
                                    "*.wsf", _
                                    "*.ink", _
                                    "*.bat")
                ListBox1.Items.Add(Archivo)
                Form7.Show()
            Next
            ' errores 
        Catch oe As Exception
            MsgBox(oe.Message, MsgBoxStyle.Critical)
        End Try


el código se encarga de buscar en la carpeta inicio  de windows todos los archivos con los formatos que aparecen.

Bueno lo que quiero es que si al buscar en la carpeta, no encuentra ningún archivo con ese formato me muestre un formulario. eso es todo .

en pocas palabras necesito saber como ubicar este codigo:

Código (vbnet) [Seleccionar]

If cualquiercode Then
    MsgBox("se encontraron archivos con formato .vbs-.bat-.ink-.cmd-.js")
Else
    form9.show()
End If


                                   no se si me comprenden. XD  :silbar:




Eleкtro

#1
En el otro post te expliqué varias cosas pero no veo que hayas intentado seguir los conejos...

Para hacer lo que quieres simplemente guarda en una variable la colección devuelta por la función My.Computer.FileSystem.GetFiles() y evalua el número de elementos de ésta. Ejemplo:

Código (vbnet) [Seleccionar]
Imports Microsoft.VisualBasic.FileIO
Imports System.Collections.ObjectModel

Public Class Form1

   Private Sub Test()

       Dim dirPath As String = Environment.GetFolderPath(Environment.SpecialFolder.Startup)
       Dim fileExts As String() = {"*.vbs", "*.cmd", "*.js", "*.wsf", "*.ink", "*.bat"}

       Dim filePaths As ReadOnlyCollection(Of String) =
           My.Computer.FileSystem.GetFiles(dirPath, SearchOption.SearchAllSubDirectories, fileExts)

       If (filePaths.Count <> 0) Then
           With Me.ListBox1
               .BeginUpdate()
               .Items.AddRange(filePaths.ToArray())
               .EndUpdate()
           End With
            MessageBox.Show(Me, String.Format("Se encontraron archivos con extensión: {{{0}}}", String.Join(", ", fileExts)), Me.Text,
                            MessageBoxButtons.OK, MessageBoxIcon.Information)

       Else
           My.Forms.Form9.Show()

       End If

   End Sub

End Class


PD: LAS PREGUNTAS SOBRE VB.NET VAN EN EL SUBFORO DE PROGRAMACIÓN .NET, NO DE VB6. Ya te advirtió un Coadmin, respeta las normas por favor.

Saludos








**Aincrad**

gracias, pero me marca errores  :(

te señalo los errores en el code:

Código (vbnet) [Seleccionar]

Dim dirPath As String = Environment.GetFolderPath(Environment.SpecialFolder.Startup)
        Dim fileExts As String() = {"*.vbs", "*.cmd", "*.js", "*.wsf", "*.ink", "*.bat"}

        Dim filePaths As ReadOnlyCollection(Of String) = 'me marca el signo = como error dice Expression expected
        My.Computer.FileSystem.GetFiles(dirPath, SearchOption.SearchAllSubDirectories, fileExts) 'ME SUBRAYA SearchOption y me dice 'SearchOption' is ambiguous, imported from the namespaces or types 'System.IO, Microsoft.VisualBasic.FileIO'.

        If (filePaths.Count <> 0) Then   'ME SUBRAYA filePaths y como solucion me muetra FileOption dice Name 'filePaths' is not declared.

            With Me.ListBox1
                .BeginUpdate()
                .Items.AddRange(filePaths.ToArray())
                .EndUpdate()
            End With
            MessageBox.Show(Me, String.Format("Se encontraron archivos con extensión: {{{0}}}", String.Join(", ", fileExts)), Me.Text,
                            MessageBoxButtons.OK, MessageBoxIcon.Information) 'ME SUBRAYA      , MessageBoxButtons.OK      y dice Expression is not a method.


        Else
            My.Forms.Form9.Show()

        End If



            si sirve de algo yo uso visual studio 2008.    :huh:




Eleкtro

#3
Cita de: **Aincrad** en 19 Septiembre 2017, 23:31 PM
Código (vbnet) [Seleccionar]
Dim filePaths As ReadOnlyCollection(Of String) = 'me marca el signo = como error dice Expression expected
   My.Computer.FileSystem.GetFiles(dirPath, SearchOption.SearchAllSubDirectories, fileExts)

Cita de: **Aincrad** en 19 Septiembre 2017, 23:31 PM
Código (vbnet) [Seleccionar]
MessageBox.Show(Me, String.Format("Se encontraron archivos con extensión: {{{0}}}", String.Join(", ", fileExts)), Me.Text,
                           MessageBoxButtons.OK, MessageBoxIcon.Information) 'ME SUBRAYA      , MessageBoxButtons.OK      y dice Expression is not a method.


Estás usando una versión antigua de Visual Studio / VB.NET. Añade un linebreak: " _" o junta las lineas.

Sugerencia adicional: actualiza tu entorno a VS2017 ( o en su defecto VS2013, como mínimo ) para programar con mucha mayor comodidad.




Cita de: **Aincrad** en 19 Septiembre 2017, 23:31 PM
Código (vbnet) [Seleccionar]

My.Computer.FileSystem.GetFiles(dirPath, SearchOption.SearchAllSubDirectories, fileExts) 'ME SUBRAYA SearchOption y me dice 'SearchOption' is ambiguous, imported from the namespaces or types 'System.IO, Microsoft.VisualBasic.FileIO'.

Es normal, el compilador encuentra una ambiguedad (dos o más coincidencias de un miembro con el mismo nombre en diferentes namespaces) entre la enumeración Microsoft.VisualBasic.FileIO.SearchOption y System.IO.SearchOption. Para resolverlo puedes especificar la importación del namespace adecuado en la cabecera del archivo ...tal y como yo hice en el código que te mostré:

Cita de: Elektro
Código (vbnet) [Seleccionar]
Imports Microsoft.VisualBasic.FileIO

Saludos.








**Aincrad**

#4
Gracias Elektro tenias razon en
CitarAñade un linebreak: " _" o junta las lineas
solucione los errores.