Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Eleкtro

#4201
Con la siguiente función basada en el manejo de LINQ, obtengo los archivos cuyo nombre de archivo sea numérico, y devuelvo una representación del archivo (type FileInfo) que tenga el número más grande.

Código (csharp) [Seleccionar]
using System.IO

Código (csharp) [Seleccionar]
public static FileInfo GetFileWithBiggestNumberInFilename(string dirpath, string ext) {

IEnumerable<FileInfo> files =
   from filepath in Directory.GetFiles(dirpath, string.Format("*{0}", ext), SearchOption.TopDirectoryOnly)
   select new FileInfo(filepath);

       int result = 0;

return (from file in files
where int.TryParse(Path.GetFileNameWithoutExtension(file.Name), out result)
orderby Convert.ToInt32(Path.GetFileNameWithoutExtension(file.Name)) descending
select file).FirstOrDefault();

}

( quizás quieras añadirle algún control de errores )

Despues, para crear un archivo incrementando el número del nombre del archivo que obtuvimos con la función de arriba, puedes hacerlo de la siguiente manera:
Código (csharp) [Seleccionar]
FileInfo file = GetFileWithBiggestNumberInFilename("C:\\", ".txt");
int number = Convert.ToInt32(Path.GetFileNameWithoutExtension(file.Name));
int newNumber = (number + 1);
string newFilepath = Path.Combine(file.DirectoryName, string.Format("{0}{1}", newNumber, file.Extension));

using (StreamWriter sw = new StreamWriter(newFilepath, false, Encoding.Default)) {

   sw.WriteLine("Hello World!");

}


Ahí también te mostré como utilizar el stream para escribir una linea de texto.

Saludos!
#4202
Cita de: tincopasan en 29 Noviembre 2015, 09:01 AMComo comentario personal no esperes gran cosa(para mí es muy mala) también hay que tener en cuenta que es vieja (2000)

Pues a mi me gustó mucho ...la he visto más de un par de veces. Es una película un tanto mediocre, tampoco voy a engañar, aunque es una de las películas que pasaron por mi infancia así que defiendo lo poco que se pueda defender de esa película xD.

El "estilismo" de la película puede dejar bastante que desear incluso puede llegar a resultar ridículo y/o insultante.



( "Señor director, lamentablemente no nos llega el presupuesto para pagar el maquillaje realista que nos pidió..."
 "No hay problema, tengo un par de manos de hombre lobo que me sobró del Halloween pasado, ahora vayan y compren 10 pares de calcetines para marcar el paquete de los extraterrestres y así nadie se fijará en eso."
)

El argumento de la película está relacionado con la esclavitud humana por parte de alienígenas, es un argumento algo explotado (me recuerda un poco a El Planeta De Los Simios); pero en esta película se escenifica de una forma que tiene digamos "su punto", está muy bien y eso le da un toque "diferente" a las demás producciones del estilo.



Por último, decir que las películas de ciencia ficción por ser antiguas no implican que sean malas producciones, vease los inicios de la saga Star Wars por ejemplo.

Saludos!
#4203
Cita de: Lekim en 28 Noviembre 2015, 03:19 AM¿Entonces según eso mi código no funcionaría en 64bits?

Eso dice la MSDN.

De todas formas no lo he testeado en un Windows x86 (me da pereza encender la V.M.) así que no se que tipo de "incompatibilidad" causará, quizás devuelva valores incorrectos, no lo se. EDITO: si que me funciona incorrectamente.

Cuando juegues con el P/Invoking debes asegurarte de hacer un análisis de código con la herramienta Code-Analysis de VisualStudio, ya que suele detectar y advertirte de conflictos de ese tipo con firmas de p/invokes que no son portables.

En tu código, puedes escribir una condicional que evalue el tamaño en bytes de un IntPtr (Marshal.SizeOf(GetType(IntPtr))) lo que dará 4 bytes en Win32 y 8 bytes en Win64, o simplemente recurrir a la propiedad Environment.Is64BitOperatingSystem :

Código (vbnet) [Seleccionar]
If Environment.Is64BitOperatingSystem Then
...WindowLongPtr

Else
...WindowLong

End If


EDITO:
te muestro un ejemplo más extenso:
Código (vbnet) [Seleccionar]
Dim target As IntPtr = MyBase.Handle
Dim flag As WindowLongFlags = WindowLongFlags.WindowStyleEx
Dim oldStyle As WindowStylesEx
Dim newStyle As WindowStylesEx

If Environment.Is64BitOperatingSystem Then
   oldStyle = CType(NativeMethods.GetWindowLongPtr(target, flag).ToInt64, WindowStylesEx)
   newStyle = (oldStyle Or WindowStylesEx.ToolWindow)
   NativeMethods.SetWindowLongPtr(target, flag, New IntPtr(newStyle))

Else
   oldStyle = CType(NativeMethods.GetWindowLong(target, flag), WindowStylesEx)
   newStyle = (oldStyle Or WindowStylesEx.ToolWindow)
   NativeMethods.SetWindowLong(target, flag, newStyle)

End If





Cita de: Lekim en 28 Noviembre 2015, 03:19 AMPor cierto, se hace muy engorroso ver el código con el <summary>

Lo siento si se te hace engorroso, pero resulta necesario para generar la descripción del miembro en IntelliSense y/o compilar el archivos de ayuda html.

Siempre puedes colapsar toda la documentación XML usando la combinación CTRL + M + L.

saludos
#4204
EDITO:

Lee esto:
https://msdn.microsoft.com/en-us/library/windows/desktop/ms633585%28v=vs.85%29.aspx
https://msdn.microsoft.com/en-us/library/windows/desktop/ms644898%28v=vs.85%29.aspx



EDITO 2:
Código (vbnet) [Seleccionar]
''' ----------------------------------------------------------------------------------------------------
''' <summary>
''' Retrieves information about the specified window.
''' <para></para>
''' The function also retrieves the 32-bit (<c>DWORD</c>) value at the specified offset into the extra window memory.
''' </summary>
''' ----------------------------------------------------------------------------------------------------
''' <remarks>
''' <see href="https://msdn.microsoft.com/en-us/library/windows/desktop/ms633584%28v=vs.85%29.aspx"/>
''' </remarks>
''' ----------------------------------------------------------------------------------------------------
<DllImport("user32.dll", EntryPoint:="GetWindowLong", SetLastError:=True)>
Public Shared Function GetWindowLong(ByVal hwnd As IntPtr,
      <MarshalAs(UnmanagedType.I4)> ByVal nIndex As WindowLongFlags
) As UInteger
End Function

''' ----------------------------------------------------------------------------------------------------
''' <summary>
''' Changes an attribute of the specified window.
''' <para></para>
''' The function also sets the 32-bit (<c>LONG</c>) value at the specified offset into the extra window memory.
''' </summary>
''' ----------------------------------------------------------------------------------------------------
''' <remarks>
''' <see href="https://msdn.microsoft.com/en-us/library/windows/desktop/ms633591%28v=vs.85%29.aspx"/>
''' </remarks>
''' ----------------------------------------------------------------------------------------------------
<DllImport("user32.dll", EntryPoint:="SetWindowLong", SetLastError:=True)>
Public Shared Function SetWindowLong(ByVal hwnd As IntPtr,
      <MarshalAs(UnmanagedType.I4)> ByVal nIndex As WindowLongFlags,
                                    ByVal dwNewLong As UInteger
) As UInteger
End Function

''' ----------------------------------------------------------------------------------------------------
''' <summary>
''' Retrieves information about the specified window.
''' <para></para>
''' The function also retrieves the value at a specified offset into the extra window memory.
''' </summary>
''' ----------------------------------------------------------------------------------------------------
''' <remarks>
''' <see href="https://msdn.microsoft.com/en-us/library/windows/desktop/ms633585%28v=vs.85%29.aspx"/>
''' </remarks>
''' ----------------------------------------------------------------------------------------------------
<SuppressMessage("Microsoft.Interoperability", "CA1400:PInvokeEntryPointsShouldExist",
justification:="Code-Analysis is 32-Bit so it only checks for the entrypoint in the user32.dll of the Win32 API.")>
<DllImport("user32.dll", EntryPoint:="GetWindowLongPtr", SetLastError:=True)>
Public Shared Function GetWindowLongPtr(ByVal hwnd As IntPtr,
         <MarshalAs(UnmanagedType.I4)> ByVal nIndex As WindowLongFlags
) As IntPtr
End Function

''' ----------------------------------------------------------------------------------------------------
''' <summary>
''' Changes an attribute of the specified window.
''' <para></para>
''' The function also sets a value at the specified offset in the extra window memory.
''' </summary>
''' ----------------------------------------------------------------------------------------------------
''' <remarks>
''' <see href="https://msdn.microsoft.com/es-es/library/windows/desktop/ms644898%28v=vs.85%29.aspx"/>
''' </remarks>
''' ----------------------------------------------------------------------------------------------------
<SuppressMessage("Microsoft.Interoperability", "CA1400:PInvokeEntryPointsShouldExist",
justification:="Code-Analysis is 32-Bit so it only checks for the entrypoint in the user32.dll of the Win32 API.")>
<DllImport("user32.dll", EntryPoint:="SetWindowLongPtr", SetLastError:=True)>
Public Shared Function SetWindowLongPtr(ByVal hwnd As IntPtr,
         <MarshalAs(UnmanagedType.I4)> ByVal nIndex As WindowLongFlags,
                                       ByVal dwNewLong As IntPtr
) As IntPtr
End Function

''' ----------------------------------------------------------------------------------------------------
''' <summary>
''' The zero-based offset to the value to be set or retrieved.
''' </summary>
''' ----------------------------------------------------------------------------------------------------
''' <remarks>
''' <see href="http://msdn.microsoft.com/en-us/library/windows/desktop/ms633548%28v=vs.85%29.aspx"/>
''' </remarks>
''' ----------------------------------------------------------------------------------------------------
Public Enum WindowLongFlags As Integer

   ''' <summary>
   ''' Retrieves the window styles.
   ''' </summary>
   WindowStyle = -16

   ''' <summary>
   ''' Retrieves the extended window styles.
   ''' </summary>
   WindowStyleEx = -20

   ''' <summary>
   ''' Retrieves a handle to the application instance.
   ''' </summary>
   HInstance = -6

   ''' <summary>
   ''' Retrieves a handle to the parent window, if any.
   ''' </summary>
   HwndParent = -8

   ''' <summary>
   ''' Retrieves the identifier of the window.
   ''' </summary>
   Id = -12

   ''' <summary>
   ''' Retrieves the user data associated with the window.
   ''' <para></para>
   ''' This data is intended for use by the application that created the window.
   ''' <para></para>
   ''' Its value is initially zero.
   ''' </summary>
   UserData = -21

   ''' <summary>
   ''' Retrieves the address of the window procedure, or a handle representing the address of the window procedure.
   ''' <para></para>
   ''' You must use the <c>CallWindowProc</c> function to call the window procedure.
   ''' </summary>
   WndProc = -4

   ''' <summary>
   ''' ( This value is only available when the <paramref name="hwnd"/> parameter identifies a dialog box. )
   ''' <para></para>
   ''' Retrieves extra information private to the application, such as handles or pointers.
   ''' </summary>
   DlgUser = 8

   ''' <summary>
   ''' ( This value is only available when the <paramref name="hwnd"/> parameter identifies a dialog box. )
   ''' <para></para>
   ''' Retrieves the return value of a message processed in the dialog box procedure.
   ''' </summary>
   DlgMsgresult = 0

   ''' <summary>
   ''' ( This value is only available when the <paramref name="hwnd"/> parameter identifies a dialog box. )
   ''' <para></para>
   ''' Retrieves the address of the dialog box procedure,
   ''' or a handle representing the address of the dialog box procedure.
   ''' <para></para>
   ''' You must use the <c>CallWindowProc</c> function to call the dialog box procedure.
   ''' </summary>
   DlgProc = 4

End Enum





Estuve implementado las enumeraciones de estilos de ventanas en mi (futura)api. Aquí les dejo las enumeraciones con documentación xml por si alguien lo prefiere así para aprovechar IntelliSense o compilar un archivo de ayuda:

Código (vbnet) [Seleccionar]
   ''' ----------------------------------------------------------------------------------------------------
   ''' <summary>
   ''' The following styles can be specified wherever a window style is required.
   ''' <para></para>
   ''' After the control has been created, these styles cannot be modified, except as noted.
   ''' </summary>
   ''' ----------------------------------------------------------------------------------------------------
   ''' <remarks>
   ''' <see href="https://msdn.microsoft.com/en-us/library/windows/desktop/ms632600%28v=vs.85%29.aspx"/>
   ''' </remarks>
   ''' ----------------------------------------------------------------------------------------------------
   <Flags>
   Public Enum WindowStyles As UInteger

       ''' <summary>
       ''' The window has a thin-line border.
       ''' </summary>
       Border = &H800000UI

       ''' <summary>
       ''' The window has a title bar.
       ''' <para></para>
       ''' (includes the <see cref="WindowStyles.Border"/> style).
       ''' </summary>
       Caption = &HC00000UI

       ''' <summary>
       ''' The window is a child window.
       ''' <para></para>
       ''' A window with this style cannot have a menu bar.
       ''' <para></para>
       ''' This style cannot be used with the <see cref="WindowStyles.Popup"/> style.
       ''' </summary>
       Child = &H40000000UI

       ''' <summary>
       ''' Excludes the area occupied by child windows when drawing occurs within the parent window.
       ''' <para></para>
       ''' This style is used when creating the parent window.
       ''' </summary>
       ClipChildren = &H2000000UI

       ''' <summary>
       ''' Clips child windows relative to each other;
       ''' that is, when a particular child window receives a <c>WM_PAINT</c> message,
       ''' the <see cref="WindowStyles.ClipSiblings"/> style clips all other overlapping child windows out of the
       ''' region of the child window to be updated.
       ''' <para></para>
       ''' If <see cref="WindowStyles.ClipSiblings"/> is not specified and child windows overlap,
       ''' it is possible, when drawing within the client area of a child window,
       ''' to draw within the client area of a neighboring child window.
       ''' </summary>
       ClipSiblings = &H4000000UI

       ''' <summary>
       ''' The window is initially disabled.
       ''' <para></para>
       ''' A disabled window cannot receive input from the user.
       ''' <para></para>
       ''' To change this after a window has been created, use the <c>EnableWindow</c> function.
       ''' </summary>
       Disabled = &H8000000UI

       ''' <summary>
       ''' The window has a border of a style typically used with dialog boxes.
       ''' <para></para>
       ''' A window with this style cannot have a title bar.
       ''' </summary>
       DlgFrame = &H400000UI

       ''' <summary>
       ''' The window is the first control of a group of controls.
       ''' <para></para>
       ''' The group consists of this first control and all controls defined after it,
       ''' up to the next control with the <see cref="WindowStyles.Group"/> style.
       ''' <para></para>
       ''' The first control in each group usually has the <see cref="WindowStyles.TabStop"/> style
       ''' so that the user can move from group to group.
       ''' <para></para>
       ''' The user can subsequently change the keyboard focus from one control in the
       ''' group to the next control in the group by using the direction keys.
       ''' <para></para>
       ''' You can turn this style on and off to change dialog box navigation.
       ''' <para></para>
       ''' To change this style after a window has been created, use the <c>SetWindowLong</c> function.
       ''' </summary>
       Group = &H20000UI

       ''' <summary>
       ''' The window has a horizontal scroll bar.
       ''' </summary>
       HScroll = &H100000UI

       ''' <summary>
       ''' The window is initially maximized.
       ''' </summary>
       Maximize = &H1000000UI

       ''' <summary>
       ''' The window has a maximize button.
       ''' <para></para>
       ''' Cannot be combined with the <c>WS_EX_CONTEXTHELP</c> extended style.
       ''' <para></para>
       ''' The <see cref="WindowStyles.SysMenu"/> style must also be specified.
       ''' </summary>
       MaximizeBox = &H10000UI

       ''' <summary>
       ''' The window is initially minimized.
       ''' </summary>
       Minimize = &H20000000UI

       ''' <summary>
       ''' The window has a minimize button.
       ''' <para></para>
       ''' Cannot be combined with the <c>WS_EX_CONTEXTHELP</c> extended style.
       ''' <para></para>
       ''' The <see cref="WindowStyles.SysMenu"/> style must also be specified.
       ''' </summary>
       MinimizeBox = &H20000UI

       ''' <summary>
       ''' The window is an overlapped window.
       ''' <para></para>
       ''' An overlapped window has a title bar and a border.
       ''' </summary>
       Overlapped = &H0UI

       ''' <summary>
       ''' The window is an overlapped window.
       ''' </summary>
       OverlappedWindow = (Overlapped Or Caption Or SysMenu Or SizeFrame Or MinimizeBox Or MaximizeBox)

       ''' <summary>
       ''' The window is a pop-up window.
       ''' <para></para>
       ''' This style cannot be used with the <see cref="WindowStyles.Child"/> style.
       ''' </summary>
       Popup = &H80000000UI

       ''' <summary>
       ''' The window is a pop-up window.
       ''' <para></para>
       ''' The <see cref="WindowStyles.Caption"/> and <see cref="WindowStyles.PopupWindow"/> styles
       ''' must be combined to make the window menu visible.
       ''' </summary>
       PopupWindow = (Popup Or Border Or SysMenu)

       ''' <summary>
       ''' The window has a sizing border.
       ''' </summary>
       SizeFrame = &H40000UI

       ''' <summary>
       ''' The window has a window menu on its title bar.
       ''' <para></para>
       ''' The <see cref="WindowStyles.Caption"/> style must also be specified.
       ''' </summary>
       SysMenu = &H80000UI

       ''' <summary>
       ''' The window is a control that can receive the keyboard focus when the user presses the <c>TAB</c> key.
       ''' <para></para>
       ''' Pressing the <c>TAB</c> key changes the keyboard focus to the next control
       ''' with the <see cref="WindowStyles.TabStop"/> style.
       ''' <para></para>
       ''' You can turn this style on and off to change dialog box navigation.
       ''' <para></para>
       ''' To change this style after a window has been created, use the <c>SetWindowLong</c> function.
       ''' <para></para>
       ''' For user-created windows and modeless dialogs to work with tab stops,
       ''' alter the message loop to call the <c>IsDialogMessage</c> function.
       ''' </summary>
       TabStop = &H10000UI

       ''' <summary>
       ''' The window is initially visible.
       ''' <para></para>
       ''' This style can be turned on and off by using the <c>ShowWindow</c> or <c>SetWindowPos</c> function.
       ''' </summary>
       Visible = &H10000000UI

       ''' <summary>
       ''' The window has a vertical scroll bar.
       ''' </summary>
       VScroll = &H200000UI

   End Enum


Código (vbnet) [Seleccionar]
   ''' ----------------------------------------------------------------------------------------------------
   ''' <summary>
   ''' Extended window styles.
   ''' </summary>
   ''' ----------------------------------------------------------------------------------------------------
   ''' <remarks>
   ''' <see href="https://msdn.microsoft.com/es-es/library/windows/desktop/ff700543%28v=vs.85%29.aspx"/>
   ''' </remarks>
   ''' ----------------------------------------------------------------------------------------------------
   <Flags>
   Public Enum WindowStylesEx As UInteger

       ''' <summary>
       ''' Specifies a window that accepts drag-drop files.
       ''' </summary>
       AcceptFiles = &H10UI

       ''' <summary>
       ''' Forces a top-level window onto the taskbar when the window is visible.
       ''' </summary>
       AppWindow = &H40000UI

       ''' <summary>
       ''' Specifies a window that has a border with a sunken edge.
       ''' </summary>
       ClientEdge = &H200UI

       ''' <summary>
       ''' Specifies a window that paints all descendants in bottom-to-top painting order using double-buffering.
       ''' <para></para>
       ''' This cannot be used if the window has a class style of either <c>CS_OWNDC</c> or <c>CS_CLASSDC</c>.
       ''' <para></para>
       ''' This style is not supported in Windows 2000.
       ''' </summary>
       ''' <remarks>
       ''' With <see cref="WindowStylesEx.Composited"/> set,
       ''' all descendants of a window get bottom-to-top painting order using double-buffering.
       ''' <para></para>
       ''' Bottom-to-top painting order allows a descendent window to have translucency (alpha) and transparency (color-key) effects,
       ''' but only if the descendent window also has the<see cref="WindowStylesEx.Transparent"/> bit set.
       ''' <para></para>
       ''' Double-buffering allows the window and its descendents to be painted without flicker.
       ''' </remarks>
       Composited = &H2000000UI

       ''' <summary>
       ''' Specifies a window that includes a question mark in the title bar.
       ''' <para></para>
       ''' When the user clicks the question mark, the cursor changes to a question mark with a pointer.
       ''' <para></para>
       ''' If the user then clicks a child window, the child receives a <c>WM_HELP</c> message.
       ''' <para></para>
       ''' The child window should pass the message to the parent window procedure,
       ''' which should call the <c>WinHelp</c> function using the <c>HELP_WM_HELP</c> command.
       ''' <para></para>
       ''' The Help application displays a pop-up window that typically contains help for the child window.
       ''' <para></para>
       ''' <see cref="WindowStylesEx.ContextHelp"/> cannot be used with the <c>WS_MAXIMIZEBOX</c> or <c>WS_MINIMIZEBOX</c> styles.
       ''' </summary>
       ContextHelp = &H400UI

       ''' <summary>
       ''' Specifies a window which contains child windows that should take part in dialog box navigation.
       ''' <para></para>
       ''' If this style is specified, the dialog manager recurses into children of
       ''' this window when performing navigation operations
       ''' such as handling the <c>TAB</c> key, an arrow key, or a keyboard mnemonic.
       ''' </summary>
       ControlParent = &H10000UI

       ''' <summary>
       ''' Specifies a window that has a double border.
       ''' </summary>
       DlgModalFrame = &H1UI

       ''' <summary>
       ''' Specifies a window that is a layered window.
       ''' <para></para>
       ''' This cannot be used for child windows or if the window has a class style of either <c>CS_OWNDC</c> or <c>CS_CLASSDC</c>.
       ''' </summary>
       Layered = &H80000UI

       ''' <summary>
       ''' Specifies a window with the horizontal origin on the right edge.
       ''' <para></para>
       ''' Increasing horizontal values advance to the left.
       ''' <para></para>
       ''' The shell language must support reading-order alignment for this to take effect.
       ''' </summary>
       LayoutRtl = &H400000UI

       ''' <summary>
       ''' Specifies a window that has generic left-aligned properties.
       ''' <para></para>
       ''' This is the default.
       ''' </summary>
       Left = &H0UI

       ''' <summary>
       ''' Specifies a window with the vertical scroll bar (if present) to the left of the client area.
       ''' <para></para>
       ''' The shell language must support reading-order alignment for this to take effect.
       ''' </summary>
       LeftScrollbar = &H4000UI

       ''' <summary>
       ''' Specifies a window that displays text using left-to-right reading-order properties.
       ''' <para></para>
       ''' This is the default.
       ''' </summary>
       LtrReading = &H0UI

       ''' <summary>
       ''' Specifies a multiple-document interface (MDI) child window.
       ''' </summary>
       MdiChild = &H40UI

       ''' <summary>
       ''' Specifies a top-level window created with this style does not become the
       ''' foreground window when the user clicks it.
       ''' <para></para>
       ''' The system does not bring this window to the foreground when the user minimizes or closes the foreground window.
       ''' <para></para>
       ''' The window does not appear on the taskbar by default.
       ''' <para></para>
       ''' To force the window to appear on the taskbar, use the <see cref="WindowStylesEx.AppWindow"/> style.
       ''' <para></para>
       ''' To activate the window, use the <c>SetActiveWindow</c> or <c>SetForegroundWindow</c> function.
       ''' </summary>
       NoActivate = &H8000000UI

       ''' <summary>
       ''' Specifies a window which does not pass its window layout to its child windows.
       ''' </summary>
       NoInheritLayout = &H100000UI

       ''' <summary>
       ''' Specifies that a child window created with this style does not send the <c>WM_PARENTNOTIFY</c> message
       ''' to its parent window when it is created or destroyed.
       ''' </summary>
       NoParentNotify = &H4UI

       ''' <summary>
       ''' Specifies an overlapped window.
       ''' </summary>
       OverlappedWindow = (WindowEdge Or ClientEdge)

       ''' <summary>
       ''' Specifies a palette window, which is a modeless dialog box that presents an array of commands.
       ''' </summary>
       PaletteWindow = (WindowEdge Or ToolWindow Or TopMost)

       ''' <summary>
       ''' Specifies a window that has generic "right-aligned" properties. This depends on the window class.
       ''' <para></para>
       ''' The shell language must support reading-order alignment for this to take effect.
       ''' <para></para>
       ''' Using the <see cref="WindowStylesEx.Right"/> style has the same effect as
       ''' using the <c>SS_RIGHT</c> (static), <c>ES_RIGHT</c> (edit),
       ''' and <c>BS_RIGHT</c>/<c>BS_RIGHTBUTTON</c> (button) control styles.
       ''' </summary>
       Right = &H1000UI

       ''' <summary>
       ''' Specifies a window with the vertical scroll bar (if present) to the right of the client area.
       ''' <para></para>
       ''' This is the default.
       ''' </summary>
       RightScrollbar = &H0UI

       ''' <summary>
       ''' Specifies a window that displays text using right-to-left reading-order properties.
       ''' <para></para>
       ''' The shell language must support reading-order alignment for this to take effect.
       ''' </summary>
       RtlReading = &H2000UI

       ''' <summary>
       ''' Specifies a window with a three-dimensional border style intended to be used for
       ''' items that do not accept user input.
       ''' </summary>
       StaticEdge = &H20000UI

       ''' <summary>
       ''' Specifies a window that is intended to be used as a floating toolbar.
       ''' <para></para>
       ''' A tool window has a title bar that is shorter than a normal title bar,
       ''' and the window title is drawn using a smaller font.
       ''' <para></para>
       ''' A tool window does not appear in the taskbar or in the dialog that appears when the user presses <c>ALT</c>+<c>TAB</c>.
       ''' <para></para>
       ''' If a tool window has a system menu, its icon is not displayed on the title bar.
       ''' <para></para>
       ''' However, you can display the system menu by right-clicking or by typing <c>ALT</c>+<c>SPACE</c>.
       ''' </summary>
       ToolWindow = &H80UI

       ''' <summary>
       ''' Specifies a window that should be placed above all non-topmost windows and should stay above them,
       ''' even when the window is deactivated.
       ''' <para></para>
       ''' To add or remove this style, use the <c>SetWindowPos</c> function.
       ''' </summary>
       TopMost = &H8UI

       ''' <summary>
       ''' Specifies a window that should not be painted until siblings beneath the window
       ''' (that were created by the same thread) have been painted.
       ''' <para></para>
       ''' The window appears transparent because the bits of underlying sibling windows have already been painted.
       ''' <para></para>
       ''' To achieve transparency without these restrictions, use the <c>SetWindowRgn</c> function.
       ''' </summary>
       Transparent = &H20UI

       ''' <summary>
       ''' Specifies a window that has a border with a raised edge.
       ''' </summary>
       WindowEdge = &H100UI

   End Enum
#4205
Juegos y Consolas / Re: Una mano que me envicio :D
28 Noviembre 2015, 00:23 AM
Cita de: KodekAlpha en 28 Noviembre 2015, 00:09 AMsubir niveles no es facil y ganar dinero tampoco

Aaaaaaaamigo... pues como en todos los juegos online, cuando uno empieza a jugar es aceptando que no se puede llegar al nivel máximo con un "click".

En el foro está prohibido los temas no éticos como ya han indicado, y en este caso usar bots/hacks implica una violación de cualquier EULA de un juego online (no sabría si tal vez incluso una violación de la ley dependiendo de que país¿?).

A esforzarse como el resto de jugadores, ¡hombre! :P.

Tema cerrado.

Saludos!
#4206
SQL:

Ya que estamos en .Net, tampoco está de más mencionar la referencia de LINQ-To-SQL:

Saludos!
#4207
.NET (C#, VB.NET, ASP) / Re: Una ayudita pls
25 Noviembre 2015, 22:56 PM
Hmmm... creo que no está del todo claro lo que quieres hacer.

Si pretendes hacer una comprobación puntual para averiguar si al menos existe un proceso corriendo con nombre "X", entonces puedes utilizar la Class Process (entre otras alternativas):

Código (vbnet) [Seleccionar]

Dim isRunning As Boolean = Process.GetProcessesByName("CCleaner", ".").Any

Select Case isRunning

   Case True
       MessageBox.Show("El proceso está en ejecución.", "", MessageBoxButtons.OK, MessageBoxIcon.Information)

   Case Else
       MessageBox.Show("El proceso no se encontró.", "", MessageBoxButtons.OK, MessageBoxIcon.Information)

End Select


En cambio, si pretendes monitorizar cuando un proceso es iniciado en el sistema y cuando se mata, es un pelín más complicado, puedes hacerlo con un Timer o con los eventos del instrumental de windows (WMI) ManagementEventWatcher. Si necesitas un ejemplo pídelo.

Saludos
#4208
Cita de: crazykenny en 25 Noviembre 2015, 18:55 PMquisiera preguntarte si es apropiado ponerlo en programacion general.

Si, "programación general" es el lugar apropiado para cualquier lenguaje derivado de BASIC que no sea Visual Basic 6 o Visual Basic.Net.

Saludos!
#4209
Cita de: crazykenny en 25 Noviembre 2015, 17:45 PMSobre el tema de publicar programas y/o codigos creados por uno mismo, ¿como deben ser publicados?.

Si vas a publicar una aplicación compilada en un subforo de programación entonces deberías publicarla junto al código fuente de la misma:

Cita de: http://foro.elhacker.net/programacion_general/reglas_subforo_de_programacion_general-t93852.0.htmlReglas del subforo:
   No se permite la publicación de archivos compilados sin proporcionar el código fuente.

Si no lo haces te arriesgas a problemas derivados a esa ausencia de transparencia, por ejemplo a acusaciones de posible malware, como ya ha sucedido en el pasado con otras personas ...muy conocidas en el ámbito de la programación por así decirlo.

Si no quieres publicar el código fuente por el motivo que sea, entonces te sugiero publicar la aplicación en la sección de  Series - Películas - Música - Juegos - Programas , NO en subforos de programación, ya que el propósito de estos subforos es el aprendizaje, pero compartir una app sin código fuente no le sirve a nadie para aprender.

PD: Aparte del resto de reglas más "globales", como no usar enlaces de Adfly y ese tipo de servicios para linkear tu programa, etc...




Si tu intención es publicar solamente unidades/bloques de código, entonces "no hay reglas", solo que trates de usar las etiquetas GeShi adecuadamente.

Saludos!
#4210
Cita de: Lekim en 25 Noviembre 2015, 17:18 PMSi te soy sincero,  como conoces Net mucho más que yo pensé mostrarías una de tus perlas usando código Net para hacer lo mismo. Por eso dejé la coletilla:

Si hay otra forma más sencilla, decídmelo

Claro que no me refiero a reducir el código,  sino al uso de alguna otra clase distinta a Process, u otra función.

Hombre, con las classes de Windows UI Automation se puede reemplazar todo ese p/invoking de tu código para hacer practicamente cualquier tipo de Spy y automación en las ventanas, pero hay un gran problema, UI Automation descarta las ventanas ocultas así que la única manera posible que se me ocurre para obtener el hwnd de una ventana OCULTA sería mediante código no administrado, como ya has mostrado. Para todo lo demás puedes usar Windows UI Automation.

Edito:
Te muestro un ejemplo que simularia la función Process.GetProcessById para obtener una representación del proceso (o mejor dicho de la ventana) y así el hwnd de la ventana:

Código (vbnet) [Seleccionar]
Dim p As New Process

p.StartInfo = New ProcessStartInfo() With {
    .WindowStyle = ProcessWindowStyle.Normal,
    .FileName = "notepad"
}

p.Start()
p.WaitForInputIdle()

Dim window As AutomationElement =
   AutomationElement.RootElement.FindFirst(TreeScope.Descendants,
                                           New PropertyCondition(AutomationElement.ProcessIdProperty, p.Id))

Dim hwnd As IntPtr = New IntPtr(window.Current.NativeWindowHandle)


Yo según que cosas prefiero utilizar la API de Windows, ya que el manejo de UI Automation se puede volver demasiado tedioso.




Cita de: Lekim en 25 Noviembre 2015, 17:18 PMNo entiendo porqué con la clase Process sólo se obtengan los handles de unos pero de otros no.

Si vieras detenidamente el código fuente de la class process de .Net framework lo entenderías (la referencia online u offline del código fuente), simplemente se devuelve un handle nulo (IntPtr.Zero) a cualquier ventana que esté oculta, ahora, el "por qué" ...¿quien sabe?, probablemente serán cuestiones de diseño de Microsoft, al igual que UI Automation no trabaja con ventanas ocultas quien sabe por qué (cuando perfectamente podría, ya que la API de Windows puede), algún motivo tendrán, digo yo.

Saludos