Hola
Voy a ir poniendo aquí rutinas que son interesantes por distintas razones.
Los que sepais de rutinas interesantes que agregar aquí mandarme un MP con el enlace puesto que este hilo estará bloqueado para impedir que se llene de basura.
Son bienvenidas rutinas sobre los siguientes temas:
a) temas de acceso a bases de datos
b) temas de comunicaciones (email, irc, web, ftp, sockets en general, ..., etc).
c) temas de control de la máquina y obtención de recursos (acceso y control de servicios, acceso y control de programas, instaladores, etc)
d) temas de control de dispositivos (informes, acceso a la impresora, .., etc)
e) Temas de acceso a las APIS
f) temas de acceso al registro y archivos INI
g) temas de creación y acceso a Logs
Aquí solo rutinas interesantes.
Como ejemplo este enlace de trucos visual basic
Trucos visual basic
http://www.elhacker.net/trucosvisual.htm (http://www.elhacker.net/trucosvisual.htm)
Un saludo
Rutinas referentes a obtención de información del equipo
' ------------------------------------------------------------------------------------
'
' función para obtener el nombre del usuario actual
'
' devuelve
' ' el nombre del usuario si tuvo éxito
' ' "" si no lo tuvo
' Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long
Public Function ObtenerUsuario() As String
'Esta función devuelve el nombre del Usuario
Dim sBuffer As String
Dim lSize As Long
Dim sUsuario As String
sBuffer = Space$(260)
lSize = Len(sBuffer)
Call GetUserName(sBuffer, lSize)
If lSize > 0 Then
sUsuario = Left$(sBuffer, lSize)
'Quitarle el CHR$(0) del final...
lSize = InStr(sUsuario, Chr$(0))
If lSize Then
sUsuario = Left$(sUsuario, lSize - 1)
End If
Else
sUsuario = ""
End If
ObtenerUsuario = sUsuario
End Function
Obtener nombre del equipo
' -----------------------------------------------------------------------------
' función para obtener el nombre completo del equipo
'
' devuelve :
' ' el nombre del equipo si tuvo éxito
' ' "" si no lo tuvo
'
' Declare Function GetComputerName Lib "kernel32" Alias "GetComputerNameA" (ByVal lpBuffer As String, _
nSize As Long) As Long
Public Function ObtenerNombreEquipo() As String
Dim sBuffer As String, lSize As Long, Resultado As Long
Const MAX_COMPUTERNAME_LENGTH As Long = 31 'longitud máxima del nombre de un equipo
sBuffer = String(MAX_COMPUTERNAME_LENGTH + 1, vbNullChar)
lSize = MAX_COMPUTERNAME_LENGTH
Resultado = GetComputerName(sBuffer, lSize)
ObtenerNombreEquipo = IIf(Resultado, Left(sBuffer, lSize), "")
End Function
Obtener el path del directorio system
' ------------------------------------------------------------------------------------------------------
' función para obtener el path de system
'
' Declare Function GetSystemDirectory Lib "kernel32.dll" Alias "GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long
Public Function ObtenerSystem() As String
Dim DirectorioSystem As String * 255
Dim CadenaResultante As Long
CadenaResultante = GetSystemDirectory(DirectorioSystem, 255)
ObtenerSystem = Left(DirectorioSystem, CadenaResultante)
End Function
Obtener el path de archivos temporales
' -------------------------------------------------------------------------------
'
' función para obtener el path de archivos temporales
'
Public Function ObtenerTemp() As String
Dim Buffer As String, Size As Long
Const MAX_PATH = 260
' Inicializamos la cadena donde se cargará la trayectoria
Buffer = String(MAX_PATH, 0)
' Recuperamos la trayectoria
Size = GetTempPath(Len(Buffer) - 1, Buffer)
If Size <> 0 Then
GetTempFolder = Left(Buffer, Size)
End If
End Function
Funciones para obtener trayecto de carpetas especiales
' -------------------------------------------------------------------------------
'
' función para obtener el trayecto de carpetas especiales del usuario 'menu inicio','favoritos, 'escritorio'
' 'archivos de programa'
'
'Private Declare Function ShellAbout Lib "shell32.dll" Alias "ShellAboutA" (ByVal hWnd As Long, ByVal szApp As String, ByVal szOtherStuff As String, ByVal hIcon As Long) As Long
'Private Declare Function SHGetSpecialFolderLocation Lib "shell32.dll" (ByVal hwndOwner As Long, ByVal nFolder As Long, pidl As ITEMIDLIST) As Long
'Private Declare Function SHGetPathFromIDList Lib "shell32.dll" Alias "SHGetPathFromIDListA" (ByVal pidl As Long, ByVal pszPath As String) As Long
Const CSIDL_DESKTOP = &H0
Const CSIDL_PROGRAMS = &H2
Const CSIDL_CONTROLS = &H3
Const CSIDL_PRINTERS = &H4
Const CSIDL_PERSONAL = &H5
Const CSIDL_FAVORITES = &H6
Const CSIDL_STARTUP = &H7
Const CSIDL_RECENT = &H8
Const CSIDL_SENDTO = &H9
Const CSIDL_BITBUCKET = &HA
Const CSIDL_STARTMENU = &HB
Const CSIDL_DESKTOPDIRECTORY = &H10
Const CSIDL_DRIVES = &H11
Const CSIDL_NETWORK = &H12
Const CSIDL_NETHOOD = &H13
Const CSIDL_FONTS = &H14
Const CSIDL_TEMPLATES = &H15
Const MAX_PATH = 260
Public Function ObtenerMenuUsuario() As String
ObtenerMenuUsuario = GetSpecialfolder(CSIDL_STARTMENU)
End Function
Public Function ObtenerFavoritos() As String
ObtenerFavoritos = GetSpecialfolder(CSIDL_FAVORITES)
End Function
Public Function ObtenerMenuProgramas() As String
ObtenerMenuProgramas = GetSpecialfolder(CSIDL_PROGRAMS)
End Function
Public Function ObtenerEscritorio() As String
ObtenerEscritorio = GetSpecialfolder(CSIDL_DESKTOP)
End Function
Rutinas para trabajar con archivos INI
Leer un archivo INI
' función para leer en un archivo INI
'
' Parámetros:
' ' sección : la sección (suele ir entre corchetes)
' ' Entrada : la entrada a escribir
' ' ArchivoIni : Archivo donde se quiere escribir
'
' Devuelve
' ' el valor si tuvo éxito
' ' "" si no tuvo 'exito
' Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" _
(ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpDefault As _
String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long
Public Function LeerIni(sección As String, Entrada As String, ArchivoIni As String)
Dim I As Integer
Dim Dato As String
Dato = String$(128, " ")
I = GetPrivateProfileString(sección, Entrada, Directorio, Dato, Len(Dato), ArchivoIni)
LeerIni = IIf(I > 0, Est, "")
End Function
Escribir en un archivo INI
' función para escribir en un archivo INI
'
' Parámetros:
' ' sección : la sección (suele ir entre corchetes)
' ' Entrada : la entrada a escribir
' ' DatoAEscribir : dato que se quiere escribir con un máximo de 128 caracteres
' ' ArchivoIni : Archivo donde se quiere escribir
'
' Devuelve
' ' true si tuvo éxito
' ' false si no tuvo 'exito
'
' Declare Function WritePrivateProfileString Lib "kernel32" Alias _
"WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As _
Any, ByVal lpString As Any, ByVal lpFileName As String) As Long
Public Function EscribirIni(sección As String, Entrada As String, DatoAEscribir As String, ArchivoIni)
Dim I As Integer
I = WritePrivateProfileString(sección, Entrada, "", , DatoAEscribir, ArchivoIni)
EscribirIni = IIf(I = 1, True, False)
End Function
Rutinas para administrar el equipo
Rutina para Apagar el equipo (cortesía de xDie)
Private Declare Function ExitWindowsEx& Lib "user32" (ByVal
uFlags&, ByVal dwReserved&)
Private Sub Command1_Click()
Dim i as integer
i = ExitWindowsEx(1, 0&)
End Sub
Rutina para reiniciar Windows con nuevo usuario (cortesía de xDie)
Private Declare Function ExitWindowsEx& Lib "user32" (ByVal
uFlags&, ByVal dwReserved&)
Private Sub Command2_Click()
Dim i as integer
i = ExitWindowsEx(0, 0&)
End Sub
Rutina para reiniciar el sistema (cortesía de xDie)
Private Declare Function ExitWindowsEx& Lib "user32" (ByVal
uFlags&, ByVal dwReserved&)
Private Sub Command3_Click()
Dim i as integer
i = ExitWindowsEx(2, 0&)
End Sub
Rutinas para la administración de procesos
Ocultar procesos del administrador de tareas sin hook
http://foro.elhacker.net/index.php/topic,152139.0.html (http://foro.elhacker.net/index.php/topic,152139.0.html)