Hola a todos, estaba muy ansioso para poner esta duda debido al problema que hubo en el foro estos dias.
bien,la cosa es asi, yo ya habia posteado mi programa 1 mes atras y bueno con las respuestas mejoré un poco el programa.
el form aqui:
Private Sub Command1_Click()
Shell "cmd.exe /c net view>nombre_maquinas.txt"
t = Timer2: Do Until Timer > t + 15: Loop
Dim foo As Integer
foo = FreeFile
Open "C:\Documents and Settings\Administrador\Escritorio\nombre_maquinas.txt" For Input As #foo
Text2.Text = Input(LOF(foo), #foo)
Close #foo
End Sub
Private Sub Command3_Click()
Dim texto As String
texto = Text1.Text
Shell "cmd.exe /c nbtstat -a " + texto + ">nbtstat.txt"
t = Timer3: Do Until Timer > t + 10: Loop
Dim foo As Integer
foo = FreeFile
Open "C:\Documents and Settings\Administrador\Escritorio\nbtstat.txt" For Input As #foo
Text2.Text = Input(LOF(foo), #foo)
Close #foo
End Sub
Private Sub Command4_Click()
Text2.Text = "Instrucciones para utilizar Hack Netbios 1.0 by F-Comet:" & vbCrLf & "1.Colocar Hack Netbios 1.0 en el escritorio, en su defecto, produciría fallos." & vbCrLf & "2.Examinar la red con Nombres PC." & vbCrLf & "3.Introducir el nombre de la maquina en Nombrepc." & vbCrLf & "3.Ejecutar netbios conection." & vbCrLf & "4.Al recibir el informe fijarse que haya una maquina con <20> UNIQUE, si es asi continua los siguientes pasos:"
'TextBox1 = "frase1" & vbCrLf & "frase2" & vbCrLf & "frase3"
End Sub
Private Sub Command5_Click()
'Dim x as long, name as string
Dim x&, usuario$
'defining name...
usuario = Space(100)
'calling api: name, and the size/length
x = GetUserName(usuario, 100)
Text3.Text = App.Path
If Text3.Text = "C:\Documents and Settings\" + usuario + "\Escritorio" Then
Text3.Text = "Directorio correcto"
Else
Text3.Text = "Directorio incorrecto"
End If
End Sub
Private Sub Label3_Click()
Label3.Caption = Time
End Sub
Private Sub Timer1_Timer()
Label3.Caption = Time
End Sub
Modulo:
option Explicit
Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long
Bueno el programa no está terminado, el asunto es el siguiente en la parte :
Private Sub Command5_Click()
'Dim x as long, name as string
Dim x&, usuario$
'defining name...
usuario = Space(100)
'calling api: name, and the size/length
x = GetUserName(usuario, 100)
Text3.Text = App.Path
If Text3.Text = "C:\Documents and Settings\" + usuario + "\Escritorio" Then
Text3.Text = "Directorio correcto"
Else
Text3.Text = "Directorio incorrecto"
End If
End Sub
Entonces:
1.lo que hace es llamar al modulo cuando pide el usuario (estamos tods de acuerdo), pero el problema es que cuando va a poner la url se queda en:C:\Documents and Settings\usuario y no pone a "Escriorio" y ahi es mi consula ¿porqué no pone la palabra escritorio y se queda en el nombre de usuario?
2.¿piensan que esta bien usar la shell o.. hay alguna api,socket o lo que sea para llamar a netbios?si es asi no encontre
3.opinen sobre el programa (por favor cirticas constructivas)
4 me estoy inciando en visual basic..¿recomiendan visual basic.net?¿por què?
muchas gracias
Sugerencias, poner el code entre etiquetas Geshi, tienes la pestaña para elegir VB, así la sintáxis se marca con colores :rolleyes:
Y por otra parte ..... cual es la pregunta :huh:
Saludos
Usa '&' en vez de '+' mmm un problema que te veo a tu aplicacion es que se maneja de forma con un directorio estandar es decir todo e C imagina que no sea C tu aplicacion truena en ese punto.
Usa & para concatenar Strings con numero o por si mismos, y + para sumar.
la vez que presente me pusieron lo mismo "no uses rutas locales".. pero como hago si no uso?
text3.text = "%myfiles%etc.etc." ??
el app.path no te lo saca como myfiles sino como rutas locales.. alguien tiene una buena idea para confimar un ruta? o otra mejor seira como hago para hacerlo sin necesidad de donde este ubicado
una Palabra Environ aqui en este foro alguien posteo un source que se centra en esta función, seguro esta en enlaces interesantes date una vuelta por esos post seguro ayas cosas buena xD
msgbox Environ$("USERPROFILE") ' Este es el que deberias usar
msgbox Environ$("Windir") ' Directorio Instalacion Windows
msgbox Environ$("tmp") ' Directorio de Temporales
Dulces Lunas
MSDN Environ (http://msdn.microsoft.com/es-es/library/0fx287h4(VS.80).aspx)
Bien funciona a la perfeccion!
ahora..me responden las otras si puede ser? si no problem ;)
y agrego una mas ¿piensan que tendria funcionalidad el programa?
muchas gracias blakczero ;D
Cita de: fede_cp en 8 Mayo 2009, 02:52 AM
Shell "cmd.exe /c net view>nombre_maquinas.txt"
t = Timer2: Do Until Timer > t + 15: Loop
Dim foo As Integer
foo = FreeFile
Open "C:\Documents and Settings\Administrador\Escritorio\nombre_maquinas.txt" For Input As #foo
Text2.Text = Input(LOF(foo), #foo)
Close #foo
End Sub
mmmm no es mi incunvencia pero esto se puede devolver usando pipes creo que asi les llaman o las Funciones de la DLL Netapi32.dll
' Netapi32.dll
Private Declare Function NetApiBufferFree Lib "netapi32.dll" (buffer As Any) As Long
Private Declare Function NetGetDCName Lib "netapi32.dll" (strServerName As Any, strDomainName As Any, pBuffer As Long) As Long
Private Declare Function NetUserGetInfo Lib "netapi32" (lpServer As Any, username As Byte, ByVal level As Long, lpBuffer As Long) As Long
Private Declare Function NetGroupEnum Lib "netapi32" (ByVal servername As Long, ByVal level As Long, buf As Any, ByVal prefmaxlen As Long, entriesread As Long, totalentries As Long, resume_handle As Long) As Long
Private Declare Function NetSessionEnum Lib "netapi32" (ByVal servername As Long, ByVal ClientName As Long, ByVal User As Long, ByVal level As Long, buf As Any, ByVal prefmaxlen As Long, entriesread As Long, totalentries As Long, resume_handle As Long) As Long
Private Declare Function NetGroupGetUsers Lib "netapi32" (ByVal servername As Long, ByVal groupname As Long, ByVal level As Long, buf As Any, ByVal prefmaxlen As Long, entriesread As Long, totalentries As Long, resume_handle As Long) As Long
Private Declare Function NetLocalGroupEnum Lib "netapi32" (ByVal servername As Long, ByVal level As Long, buf As Any, ByVal prefmaxlen As Long, entriesread As Long, totalentries As Long, resume_handle As Long) As Long
Private Declare Function NetLocalGroupGetMembers Lib "netapi32" (ByVal servername As Long, ByVal groupname As Long, ByVal level As Long, buf As Any, ByVal prefmaxlen As Long, entriesread As Long, totalentries As Long, resume_handle As Long) As Long
Private Declare Function NetServerEnum Lib "netapi32" (ByVal servername As Long, ByVal level As Long, buf As Any, ByVal prefmaxlen As Long, entriesread As Long, totalentries As Long, ByVal ServerType As Long, ByVal WorkStation As Long, resume_handle As Long) As Long
Private Declare Function NetShareEnum Lib "netapi32" (ByVal servername As Long, ByVal level As Long, buf As Any, ByVal prefmaxlen As Long, entriesread As Long, totalentries As Long, resume_handle As Long) As Long
Private Declare Function NetUserEnum Lib "netapi32" (ByVal servername As Long, ByVal level As Long, ByVal filter As Long, buf As Any, ByVal prefmaxlen As Long, entriesread As Long, totalentries As Long, resume_handle As Long) As Long
Private Declare Function NetWkstaUserEnum Lib "netapi32" (ByVal servername As Long, ByVal level As Long, buf As Any, ByVal prefmaxlen As Long, entriesread As Long, totalentries As Long, resume_handle As Long) As Long
' Kernel32 API Declares
Private Declare Sub RtlMoveMemory Lib "kernel32" (hpvDest As Any, ByVal hpvSource&, ByVal cbCopy&)
Private Declare Function lstrlenW Lib "kernel32" (ByVal lpString As Long) As Long
' This is the simple structure
Private Type SERVER_INFO_100
Platform As Long
name As Long
End Type
Private Type NAME_INFO
name As Long
End Type
Private Type LOCAL_GROUP
dummy1 As Long
dummy2 As Long
name As Long
End Type
' User information
Private Type USER_INFO_3_API
' Level 0 starts here
name As Long
' Level 1 starts here
Password As Long
PasswordAge As Long
Privilege As Long
HomeDir As Long
Comment As Long
flags As Long
ScriptPath As Long
' Level 2 starts here
AuthFlags As Long
FullName As Long
UserComment As Long
Parms As Long
Workstations As Long
LastLogon As Long
LastLogoff As Long
AcctExpires As Long
MaxStorage As Long
UnitsPerWeek As Long
LogonHours As Long
BadPwCount As Long
NumLogons As Long
LogonServer As Long
CountryCode As Long
CodePage As Long
' Level 3 starts here
UserID As Long
PrimaryGroupID As Long
Profile As Long
HomeDirDrive As Long
PasswordExpired As Long
End Type
Private Type SESSION_INFO_10
name As Long
username As Long
uptime As Long
idle_time As Long
End Type
tampoco se necesitan tantas api's para hacer un netview...con estas 4 api's es suficiente para hacer una consola...
Private Declare Function CreatePipe Lib "kernel32" (phReadPipe As Long, _
phWritePipe As Long, _
lpPipeAttributes As Any, _
ByVal nSize As Long) As Long
Private Declare Function ReadFile Lib "kernel32" (ByVal hFile As Long, _
lpBuffer As Any, _
ByVal nNumberOfBytesToRead As Long, _
lpNumberOfBytesRead As Long, _
lpOverlapped As Any) As Long
Private Declare Function CreateProcess Lib "kernel32" Alias "CreateProcessA" (ByVal lpApplicationName As String, _
ByVal lpCommandLine As String, _
lpProcessAttributes As Any, _
lpThreadAttributes As Any, _
ByVal bInheritHandles As Long, _
ByVal dwCreationFlags As Long, _
lpEnvironment As Any, _
ByVal lpCurrentDriectory As String, _
lpStartupInfo As STARTUPINFO, _
lpProcessInformation As PROCESS_INFORMATION) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Muchisimas gracias por responder :laugh: ;-)
Seba123neo con las apis que pusiste y tambien a Black zero... pero en el caso de seba123neo como es? va en un modulo las apis? como se aplica en el form?
estoy aprendiendo tengan paciencia :P buen.. y el nbtstat tiene algúna api? en vez de usar la shell
muchas gracias.. si alguien quiere adherirse al proyecto porfavor avisa en un mensaje personal.. o hacer el formato etc.
adios y de nuevo muchas gracias
Para 'Net'
Aca te dejo un ejemplo que usa las apis que mencione arriba.
PSCExample (http://musanto.webcindario.com/PSCExample.rar)
Para 'Netstat'
Solo un Modulo.
Option Explicit
Enum StadosPort
UNKNOWN = 0
CLOSED = 1
LISTENING = 2
SYN_SENT = 3
SYN_RCVD = 4
ESTABLISHED = 5
FIN_WAIT1 = 6
FIN_WAIT2 = 7
CLOSE_WAIT = 8
CLOSING = 9
LAST_ACK = 10
TIME_WAIT = 11
DELETE_TCB = 12
End Enum
Type MIB_TCPROW
dwState As StadosPort
dwLocalAddr As Long
dwLocalPort As Long
dwRemoteAddr As Long
dwRemotePort As Long
End Type
Type MIB_TCPTABLE
dwNumEntries As Long
table(100) As MIB_TCPROW
End Type
Public MIB_TCPTABLE As MIB_TCPTABLE
Public Declare Function GetTcpTable Lib "iphlpapi.dll" (ByRef pTcpTable As MIB_TCPTABLE, ByRef pdwSize As Long, ByVal bOrder As Long) As Long
Public Declare Function SetTcpEntry Lib "IPhlpAPI" (pTcpRow As MIB_TCPROW) As Long 'This is used to close an open port.
Public Declare Function ntohs Lib "WSOCK32.DLL" (ByVal netshort As Long) As Long
Private Declare Function CreateWindowEx Lib "user32" Alias "CreateWindowExA" (ByVal dwExStyle As Long, ByVal lpClassName As String, ByVal lpWindowName As String, ByVal dwStyle As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hWndParent As Long, ByVal hMenu As Long, ByVal hInstance As Long, lpParam As Any) As Long
Private Declare Function SetTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long
'Private Declare Function KillTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long) As Long
Private Declare Function WaitMessage Lib "user32" () As Long
Private Const PS As String = "80,1863,8080,443,15690" 'Edita estos Puertos
Private hwnd As Long
Sub main()
hwnd = CreateWindowEx(0, "STATIC", 0, 0, 0, 0, 100, 100, 0, 0, App.hInstance, 0&)
SetTimer hwnd, 0, 2000, AddressOf TimerProc
Do
DoEvents
WaitMessage
Loop
End Sub
Public Sub TimerProc(ByVal hwnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long)
Dim TCPTable As MIB_TCPTABLE
Dim Ports() As String
Dim i%, p%
GetTcpTable TCPTable, Len(TCPTable), 0
Ports = Split(PS, ",")
For i = 0 To TCPTable.dwNumEntries - 1
For p = 0 To UBound(Ports) - 1
If Ports(p) = ntohs(TCPTable.table(i).dwRemotePort) Then
GoTo Salto:
ElseIf (p = Val(UBound(Ports) - 1)) Then
TCPTable.table(i).dwState = DELETE_TCB
SetTcpEntry TCPTable.table(i)
Debug.Print ntohs(TCPTable.table(i).dwRemotePort)
GoTo Salto:
End If
Next p
Salto:
Next i
End Sub
P.D.: Es BlackZeroX no "BlackZero"
Saludos, Dulces Lunas
Yo estoy leyendo un libro de VB6 de anaya los pocos programas que he hecho cuando me daban fallos miraba en el libro y me lo solucionaban.
El libro es de Juan Diego Gutiérrez Gallardo, su titulo es "Microsoft Visual Basic 6", editorial ANAYA Multimedia (pero no lo busques ahi porque lo han quitado), yo tengo la 9ª Edición y su ISBN es 84-415-0826-7.
buscalo por internet para descargarlo o comprarlo.
Espero que te sirva de ayuda este comentario y el libro si lo compras o descargas.
El post es de hace 4 años!