1.- Donde se guarda el ejecutable luego de compilar el programa?
Debes ingresar a la carpeta de tu proyecto buscar
la carpeta “bin” y dentro de ella la carpeta “debug” donde estará el ejecutable
de tu aplicación. Igualmente puedes añadir esta linea para que muestre la ruta
completa de la aplicación (ej: C#):
textBox1.Text =
System.Windows.Forms.Application.ExecutablePath;
En este caso mostrará en un textbox la ruta completa del
ejecutable creado.
2.- Compimir Aplicaciones .NET
http://www.madebits.com/netz/download.php
Similar a UPX
3.- Compresión de carpetas y archivos en .NET
DotNetZip
http://www.dotnetzip.codeplex.com
DotNetZip
es
una herramienta fácil de usar, rápida, gratuita
biblioteca de clases y herramientas para manipular los archivos zip o
carpetas.
Comprimir y descomprimir es fácil: con DotNetZip,. NET escrito en Visual
Basic,
C # (cualquier lenguaje .NET) puede crear, leer, extraer, o actualizar
archivos
zip. En mono, o MS. NET.
DotNetZip funciona con la version full de .NET Framework, y
también funciona en dispositivos móviles que utilizan el. NET Compact
Framework. Crear y leer archivos zip en VB, C #, o cualquier otro. NET, o
cualquier otro entorno de programación. DotNetZip apoya estos escenarios:
- Una aplicación ASP.NET que se crea de forma dinámica los archivos ZIP y
permite que un navegador para descargar
- Un servicio de Windows que periódicamente comprime un directorio para fines
de copia de seguridad y de archivo
- Un programa de WPF que modifica los archivos existentes - cambiar el nombre
de las entradas, la eliminación de las entradas de un archivo, o añadir nuevas
entradas a un archivo
- Una aplicación de Windows Forms que crea AES-archivos zip cifrado de la vida
privada de los contenidos archivados.
- Una secuencia de comandos administrativos en PowerShell o VBScript que
realiza la copia de seguridad y archivo.
- Un servicio de WCF que recibe un archivo zip como un archivo adjunto, y
dinámicamente descomprime el zip a un flujo para el análisis de
- Una vieja escuela ASP (VBScript) de aplicación que genera un archivo ZIP a
través de la interfaz COM para DotNetZIp
- Una aplicación de Windows Forms que se lee o actualizaciones de los archivos
de SAO
- La creación de archivos zip de los contenidos corriente, de ahorro de un
arroyo, la extracción de un arroyo, la lectura de un arroyo
- La creación de archivos de auto extracción.
SharpZipLib
o Formalmente NZipLib
http://www.icsharpcode.net/OpenSource/SharpZipLib/Default.aspx
ziplib (SharpZipLib, formalmente NZipLib)es una libreria Zip,
GZip, Tar y BZip2 escrita totalmente C#. Es implmentada como un ensamblado
(instalable en el GAC), y puede ser facilmente incorporada en otros proyectos
(sobre cualquier lenguaje de la plataforma .NET). El creador de #ziplib lo
expreso de esta manera: "He portado la libreria zip a C# por que necesito
compresion gip/zip y no quiero usar libzip.dll o algo parecido. Quiero todo en
C# puro."
4.- docking, Incrustar una aplicación en un control o formulario
http://www.elguille.info/NET/dotnet/setParentNET.aspx
5.- Sockets, tutorial básico
Una red de computadoras (ordenadores) consiste en máquinas
interconectadas mediante canales de comunicación. Estas máquinas son
Hosts y Routers. Los Hosts son computadoras que ejecutan aplicaciones,
por ejemplo un navegador. Los Routers son equipos cuyo trabajo es
retransmitir información de un canal de comunicación a otro. Estos
pueden ejecutar programas, pero normalmente no son aplicativos. Para
este post un canal de comunicación es un medio de transmisión de
secuencias de bytes de un host a otro, este puede ser broadcast, como
Ethernet, un modem dial-up, o algo más sofisticado.
Otro término
que tenemos que definir es Protocolo. Un protocolo es un acuerdo acerca
de los paquetes intercambiados por comunicación de los programas y lo
que significan, además describe como está estructurado, por ejemplo:
donde está la información del destinatario en el paquete y de que tamaño
es. Un ejemplo es Http (Hypertext Transfer Protocol) que resuelve el
problema de transferir objectos hipertexto entre servidores y hacerlo
entendible por personas.
Ahora vamos directo al grano: ¿Qué es un
Socket?
Un socket es una abstracción que permite a la aplicación
“enchufarse” a la red para poder recibir y enviar data. Los principales
tipos de socket hoy en día son los Stream Socket y los Datagram Socket.
Los Stream Sockets utilizan TCP e IP para proveer n servicio confiable.
Los Datagram Sockets usan UDP.
Otro concepto importante son el
Stream Reader y el Stream Writer.
Son clases que nos ayudan a
escribir y leer del buffer del socket. Sino existieran habría que leer
el buffer y escribir en él directamente, cosa que es un poco engorrosa e
innecesaria para la mayoría de las aplicaciones.
Código de
ejemplo:
Codigo Servidorpublic class NetworkServer { public static void Main() { //creamos un thread para que el server //se ejecute en paralelo con el cliente //esto es solo por motivos prácticos del demo new Thread(new ThreadStart( delegate { new NetworkServer().Start(); } )).Start(); //Iniciamos el Cliente new Client().Connect(); Console.WriteLine("Listo"); Console.Read(); } public void Start() { // Creamos un TcpListener y le indicamos que //puerto va a poner en escucha. TcpListener tcpListener = new TcpListener(9898); //Iniciamos la esucha tcpListener.Start(); //Este método queda bloqueado hasta que //se conecte un cliente Socket socketForClient = tcpListener.AcceptSocket(); if (socketForClient.Connected) { // Si se conecta Console.WriteLine("Cliente conectado."); //Creamos el networkSream, el Reader y el writer NetworkStream networkStream = new NetworkStream(socketForClient); StreamWriter streamWriter = new StreamWriter(networkStream); StreamReader streamReader = new StreamReader(networkStream); //Esta es la data a enviar. string theString = "Esta es la data de envio"; try { //Escribimos la data en el stream streamWriter.WriteLine(theString); //Ahora le decimos que la mande. streamWriter.Flush(); //Esperamos data del cliente //Y la escribimos por consola. theString = streamReader.ReadLine(); Console.WriteLine(theString); } finally { //Cerramos las conexiones streamReader.Close(); streamWriter.Close(); networkStream.Close(); socketForClient.Close(); } } } }
Codigo Clientepublic class Client { public void Connect() { TcpClient socketForServer; string server = "localhost"; try { //Creamos un TcpCliente y le pasamos //el server y el puerto. socketForServer = new TcpClient(server, 9898); } catch { Console.WriteLine( "No se pudo conectar a {0}:9898", server); return; } //aqui es lo mismo que en el server. Usamos StreamWriter y Reader. NetworkStream networkStream = socketForServer.GetStream(); StreamReader streamReader = new System.IO.StreamReader(networkStream); StreamWriter streamWriter = new System.IO.StreamWriter(networkStream); try { string outputString = streamReader.ReadLine(); Console.WriteLine(outputString); streamWriter.WriteLine("Mensaje desde el Cliente"); streamWriter.Flush(); } catch { Console.WriteLine("Exception reading from Server"); } finally { networkStream.Close(); } } } Autor: D4N93R
6.- Serializar Datatable
Codigo EjemploPublic Shared Function Serialize(ByVal Obj As Object, ByVal AsByte As Boolean) As Byte() Dim bf As New Runtime.Serialization.Formatters.Binary.BinaryFormatter Dim ms As New IO.MemoryStream bf.Serialize(ms, Obj) Return ms.ToArray End Function Public Shared Function Deserialize(ByVal Obj As Byte()) As Object Dim bf As New Runtime.Serialization.Formatters.Binary.BinaryFormatter Dim ms As New IO.MemoryStream(Obj) Return bf.Deserialize(ms) End Function
Autor: elmaro
7.- Denegar Acceso a Archivo o Directorios [SUB]
Codigo EjemploImports System.IO Imports System.Security.AccessControl
Public Sub ProtectedFolderOrFile(ByVal F As String, ByVal bool As Boolean) Dim dInfo As New DirectoryInfo(F), _ dSecurity As DirectorySecurity = dInfo.GetAccessControl() Select Case bool Case True dSecurity.SetAccessRule(New FileSystemAccessRule(dSecurity.GetOwner(GetType(System.Security.Principal.NTAccount)), FileSystemRights.FullControl, AccessControlType.Deny)) Case False dSecurity.RemoveAccessRule(New FileSystemAccessRule(dSecurity.GetOwner(GetType(System.Security.Principal.NTAccount)), FileSystemRights.FullControl, AccessControlType.Deny)) dInfo.SetAccessControl(dSecurity) dSecurity.AddAccessRule(New FileSystemAccessRule(dSecurity.GetOwner(GetType(System.Security.Principal.NTAccount)), FileSystemRights.FullControl, AccessControlType.Allow)) End Select dInfo.SetAccessControl(dSecurity) End Sub
8.-Raiz de una Ecuacion de
Segundo Grado
Codigo Ejemplo Dim x1, x2, bn As Double Dim a, b, c As Integer a = 1 b = 6 c = 1 bn = b * -1 Dim radicando As Double = Math.Pow(b, 2) - 4 * a * c If radicando = 0 Then x1 = (bn) / (2 *a) MsgBox(x1 & " y es raiz doble") ElseIf radicando > 0 Then x1 = (bn + Math.Sqrt(radicando)) / (2 *a) x2 = (bn - Math.Sqrt(radicando)) / (2 * a) MsgBox(x1) MsgBox(x2) Else Msgbox ("La ecuacion no tiene racies reales") End If
9.- ListView Items
Codigo EjemploItems Seleccionados: ListView1.SelectedItems
Si solo seleccionas 1: ListView1.SelectedItems(0)
Obtener nombre de ese item: ListView1.SelectedItems(0).Text
10.- Presionar boton de un programa externo
Codigo EjemploPara hacer eso tenes que saber el handle del botón que quieres presionar. Y enviarle con SendMessage "un click"
<System.Runtime.InteropServices.DllImport("user32.DLL")> _ Public Function SendMessage( _ ByVal hWnd As System.IntPtr, ByVal wMsg As Integer, _ ByVal wParam As Integer, ByVal lParam As Integer _ ) As Integer End Function <System.Runtime.InteropServices.DllImport("user32.DLL")> _ Public Function SendMessage( _ ByVal hWnd As System.IntPtr, ByVal wMsg As Integer, _ ByVal wParam As Integer, ByVal lParam As String _ ) As Integer End Function

Para hacer
eso tenes que saber el handle del botón que quieres presionar. Y
enviarle con SendMessage "un click" Acá tienes el código del
SendMessage: Código <System. Runtime. InteropServices. DllImport("user32.DLL")> _ Public Function SendMessage ( _ ByVal hWnd As System. IntPtr, ByVal wMsg As Integer, _ ByVal wParam As Integer, ByVal lParam As Integer _ ) As Integer End Function <System. Runtime. InteropServices. DllImport("user32.DLL")> _ Public Function SendMessage ( _ ByVal hWnd As System. IntPtr, ByVal wMsg As Integer, _ ByVal wParam As Integer, ByVal lParam As String _ ) As Integer End FunctionPara
buscar el handle del boton puedes instalarte WinID (asi sabes como
buscarlo desde la aplicacion) <System.Runtime.InteropServices.DllImport("user32.dll", _ EntryPoint:="FindWindow")> _ Public Function FindWindow(ByVal lpClassName As String, ByVal lpWindowName As String) As IntPtr End Function <System.Runtime.InteropServices.DllImport("user32.dll")> _ Public Function EnumChildWindows(ByVal hWndParent As System.IntPtr, ByVal lpEnumFunc As EnumWindowsProc, ByVal lParam As Integer) As Boolean End Function Public Function GetChildWindows(ByVal ParentHandle As IntPtr) As IntPtr() Dim ChildrenList As New List(Of IntPtr) Dim ListHandle As GCHandle = GCHandle.Alloc(ChildrenList) Try EnumChildWindows(ParentHandle, AddressOf EnumWindow, GCHandle.ToIntPtr(ListHandle)) Finally If ListHandle.IsAllocated Then ListHandle.Free() End Try Return ChildrenList.ToArray End Function Private Function EnumWindow(ByVal Handle As IntPtr, ByVal Parameter As IntPtr) As Boolean Dim ChildrenList As List(Of IntPtr) = GCHandle.FromIntPtr(Parameter).Target If ChildrenList Is Nothing Then Throw New Exception("GCHandle Target could not be cast as List(Of IntPtr)") ChildrenList.Add(Handle) Return True End Function <System.Runtime.InteropServices.DllImport("user32.dll")> _ Public Sub GetClassName(ByVal hWnd As System.IntPtr, ByVal lpClassName As System.Text.StringBuilder, ByVal nMaxCount As Integer) ' Leave function empty End Sub
Completar la constante a enviar.
autor: elmaro
11.- [Tutorial] ¿System.Threading? ¡Cómo y Cuándo! (C#)
http://foro.elhacker.net/net/tutorial_iquestsystemthreading_iexclcomo_y_cuando_c-t277825.0.html;msg1367009#msg1367009
12.- Colores en RichTextBox
Codigo Ejemplo1er Ejemplo
Private Reservadas As String() = _ {"if", "then", "else", "echo", "@"} 'En este arreglo pones todas las palabras que quieras que aparezcan en color
Private Sub RichTextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RichTextBox1.TextChanged Dim i As Integer = RichTextBox1.SelectionStart Dim ActualCursor As Integer = RichTextBox1.SelectionStart 'recordar el punto de donde se estaba escribiendo Dim j As Integer = 0 If i <> 0 Then 'evitar que el indice se salga del rango Do i = i - 1 'recorre en reversa hasta encontrar un espacio j = j + 1 'cuenta los caracteres de la palabra Loop While RichTextBox1.Text(i) <> CChar(" ") And i <> 0 'termina cuando encuentra un espacio End If Dim substring As String = RichTextBox1.Text.Substring(i, j).Trim() 'obtiene la ultima palabra escrita, quitandole los espacios
If Reservadas.Contains(substring) Then 'comprobar que la palabra este en la lista RichTextBox1.Find(substring, RichTextBoxFinds.Reverse) RichTextBox1.SelectionColor = Color.Blue 'Colorea el texto RichTextBox1.SelectionStart = ActualCursor End If
RichTextBox1.SelectionColor = Color.Black 'Vuelve al color primario RichTextBox1.SelectionStart = ActualCursor End Sub
2do Ejemplo
Dim lastPos As Integer ' Donde se estaba escribiendo Dim nLine As Integer ' Linea donde se trabaja Dim start As Integer ' Indice del principio de la linea dentro del texto Dim final As Integer ' Fin de la linea (largo de la linea) Private Sub rtf_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles rtf.TextChanged ' "@" se colorea (NOTA: Funciona a medias, con el tema ' "@asfdasd" : @ se colorea ( de que si se borra queda el color que estaba) colorear("@", Color.Red, False, False) ' "echo" se colorea ' "malechor" : echo no se colorea colorear("echo", Color.Blue, False) End Sub Sub colorear(ByVal clave As String, ByVal color As Color, Optional ByVal spaceAntes As Boolean = True, Optional ByVal spaceDespues As Boolean = True) Try ' Para recordar en que posicion estaba y no provocar problemas lastPos = rtf.SelectionStart ' Obtenemos la linea a trabajar nLine = rtf.GetLineFromCharIndex(lastPos) ' Obtenemos el indice de la linea (indice dentro de todo el texto, no conviene separar la linea en otra variable) start = rtf.GetFirstCharIndexOfCurrentLine() ' establecemos el limite para buscar la palabra clave final = rtf.Lines(nLine).Length ' Para saber si se tiene que escribir la palabra clave por separado If spaceAntes Then clave = " " & clave If spaceDespues Then clave = clave & " " ' Buscamos la palabra clave, si no esta, no hacemos nada If Not rtf.Text.IndexOf(clave, start, final) = -1 Then rtf.SelectionStart = rtf.Text.IndexOf(clave, start, final) rtf.SelectionLength = clave.Length ' Para no colorear demas.... rtf.SelectionColor = color End If ' Volvemos a donde se estaba escribiendo, y al color normal rtf.SelectionStart = lastPos rtf.SelectionLength = 0 rtf.SelectionColor = rtf.ForeColor Catch ex As Exception End Try End Sub
autor: Xtriker
autor: raul338
13.- Bloquear Fichero
Codigo EjemploDim fs As New FileStream("c:\op.txt", FileMode.Open) 'Bloquear fs.Lock(0, fs.Length) 'Desbloquear fs.Unlock(0, fs.Length)
autor: elmaro
14.- Sockets en .NET
http://www.elguille.info/colabora/puntoNET/PabloTilli_SocketsVBNET.htm
http://www.developerfusion.com/tools/convert/vb-to-csharp
15.- Copiar un List en otro (Por valor no por referencia)
Codigo EjemploClass Persona Public Nombre as String Public Apellido as String End Class
Imports System.Runtime.Serialization Imports System.Runtime.Serialization.Formatters.Binary Imports System.IO <Serializable()> _ Class Persona Public Nombre as String Public Apellido as String Public Function Clonar() As Persona End Function End Class
en la funcion Clonar pones esto: Dim clon As Persona ' Objeto donde se va a copiar por valor ' Serializadores, objeto en memoria Dim formatter As IFormatter = New BinaryFormatter() Dim str As Stream = New MemoryStream() formatter.Serialize(str, Me) ' Copiamos a un stream en la memoria str.Seek(0, SeekOrigin.Begin) ' Vamos al principio para volver a "leer" clon = CType(formatter.Deserialize(str), Persona) ' Lo leemos y lo guardamos en el objeto "clonado" Return clon
Por lo cual todo junto te quedaria asi:
Imports System.Runtime.Serialization Imports System.Runtime.Serialization.Formatters.Binary Imports System.IO <Serializable()> _ Class Persona Public Nombre as String Public Apellido as String Public Function Clonar() As Persona Dim clon As Persona Dim formatter As IFormatter = New BinaryFormatter() Dim str As Stream = New MemoryStream() formatter.Serialize(str, Me) str.Seek(0, SeekOrigin.Begin) clon = CType(formatter.Deserialize(str), Persona) Return clon End Function End Class
autor: raul338
|