elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


  Mostrar Mensajes
Páginas: 1 ... 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 [675] 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 ... 1254
6741  Sistemas Operativos / Windows / Re: CAMBIAR POSICION EN INICIO DEL PROGRAMA en: 3 Octubre 2014, 00:08 am
¿Habria manera de que cambiando algunos parámetros de tu código pudiera hacer que la interface se posicionara donde quisiéramos. O sea que pudiera quedar en la parte derecha del tamaño que queramos? ¿Me explico?.

Lo ideal seria algo asi por ejemplo……

C:\SetWindowPos.exe "notepad.exe", 225,151,18,165

O sea que añadiendole unos números al comando, la pantalla de la interface se posicionara en un lugar o en otro de la pantalla.

Una cosa es pedir un favor y otra muy distinta es aprovecharse, si hubieras especificado al principio que además de mover la ventana también querías redimensionarla no me habría importado, pero si la gente pide ayuda y no comenta estos detalles solo consigue hacer perder el tiempo a los que pretenden ayudar.

Aquí tienes: https://www.mediafire.com/?cpb9pp90b6tuz2h

Sintaxis:
Código:
SetWindow programa.exe x y width height

Ejemplo:
Código:
SetWindow.exe "Notepad" 0 0 100 100

Comentaste que tienes conocimientos de programación de VB6, algo es algo, y te he enviado el source del programa que escribí para ti, así que si tienes cualquier otra duda o quieres implementar cualquier otro tipo de mejora o funcionalidad en el programa entonces puedes formular las preguntas en la sección de programación .NET donde gustosamente te indicaré los pasos a realizar y te ayudaré, pero lo harás tu, no yo.

Saludos!
6742  Programación / Scripting / Re: Ayuda .bat que copie una palabra o frase al portapapeles en: 2 Octubre 2014, 21:42 pm
No se que entenderás por "ventana de texto", pero realizar lo que propones, a parte de ser algo muy laborioso, elaborarlo de forma genérica parece una tarea imposible, ya que hay que conocer previamente o hallar el nombre de la Class de la ventana de edición y el HWND de dicha ventana (sin eso no haces nada), además, hay que tener en cuenta que muchos controles de edición (textboxes, richtextboxes, etc) pueden tener ventanas hijas donde se encuentra la capa del control editable.


En resumen:

Desarrollar una aplicación en la que simplemente escribiendo el nombre de un proceso o el título de una ventana de un proceso para pasarlo como parámetro no conseguirias nada, ya que faltarían datos (que ya he mencionado),
de todas formas con el nombre del proceso o el título de la ventana puedes hallar la ventana principal y enumerar sus ventanas hijas y el nombre de sus classes para hallar las ventanas de los controles editables, ¿el problema?, que obviamente pueden haber varios controles editables en una sola aplicación así que es practicamente imposible determinar en que ventana quieres pegar el texto a menos que supieras el índice al que corresponderia la ventana a la que quieres pegar el texto.

Poder puedes hacer algo medianamiente decente (de uso genérico hablando), pero por supuesto NO en Batch, NO en VBS, mi sugerencia: C++ o C#/VB.NET.

Aparte, para casos específicos siempre puedes recurrir a Microsoft UI Automation, hay muchas herramientas de este estilo:

Microsoft Inspect
Microsoft UI Accessibility Checker
WinSpy++

Con cualquiera de ellas puedes averiguar el handle, classname, y otra información adicional de cualquier ventana de un programa.





Respecto a lo de copiar en el portapapeles:

ClipCopy.bat
Código
  1. @Echo OFF & Title Clipboard Copy
  2.  
  3. If "%~1" EQU "" (Exit /B 1)
  4.  
  5. Echo %~1| Clip.exe
  6. Exit /B 0

Uso:
Código
  1. ClipCopy.bat "Frase a copiar"

Saludos.
6743  Programación / Scripting / Re: Ayuda .bat que copie una palabra o frase al portapapeles en: 2 Octubre 2014, 21:07 pm
Para copiar texto debes redireccionar la salida de cualquier comando al comando Clip, ejemplo:

Código
  1. Echo Hola Mundo! | Clip.exe

...a lo que se le añade una linea vacia al final.

Para pegar el contenido del portapapeles, tarea que debería ser muy sencilla, pero de hecho es imposible en algo tan simple como Batch, tampoco puedes recurrir a un lenguaje simple como VisualBasicscript ya que tampoco soporta operaciones con el portapapeles (como explican en este post ).

Puedes crear una pequeña utilidad en cualquier lenguaje que soporte el portapapeles, en VB.NET (y en C#) sería tan sencillo como esto:
Código
  1. Dim Text As String = Clipboard.GetText()
  2. Console.WriteLine(Text)
...sin el código intermediaro para realizar llamadas a la API de Windows para localizar la ventana a la que le quieres enviar el texto, eso ya sería mucho trabajo en cualquier lenguaje.

También puedes utilizar aplicaciones de terceros como complementos (comandos externos adicionales) de Batch, como Paste.exe: http://www.c3scripts.com/tutorials/msdos/paste.html
(no lo he testeado ni lo he descargado)

Saludos.
6744  Sistemas Operativos / Windows / Re: Duda windows 8 en: 2 Octubre 2014, 20:57 pm
quiero saber si al pasarme a windows 8 ¿me podría valer?

Claro Senior++, no te preocupes por eso, VisualStudio 2013 es compatible con Windows 8/8.1, yo lo uso en dicho SO.


Saludos
6745  Sistemas Operativos / Windows / Re: Solucionar ruta demasiado larga en Windows al instalar un programa en: 2 Octubre 2014, 19:05 pm
No puedes bypassear un límite que está impuesto en sl SO, un límite en la máquina, ciertas cosas se pueden llevar a cabo, pero otras simplemente NO, tienes que adaptarte a dichas limitaciones.

Una posible alternativa para solucionar el problema podría ser modificando el nombre de usuario de tu perfil en caso de ser un nombre bastante largo, esto NO se hace de manera manual renombrando la carpeta... no vayas a intentarlo, y en fín, como resultado se modificaría el nombre de la carpeta C:\Users\TuNombre\ la cual es necesaría para acceder a 'AppData', pero antes de modificar el nombre mide la longitud de caracteres de la ruta completa, no vaya a servir para nada xD.

También podrías crear un nuevo usuario con un nombre muy corto, instalar el software en esa sesión, y luego acceder al software desde tu otra sesión de usuario.

De todas formas el error 1603 no tiene pinta de referirse a un error por nombre demasiado largo y aquí puedes encontrar posibles soluciones, síguelas al pie de la letra:


.NET 4 installation fails with error code 1603


Error on AutoCAD 2014 1603 .NET Framework Runtime 4.0

Suerte!
6746  Sistemas Operativos / Windows / Re: CAMBIAR POSICION EN INICIO DEL PROGRAMA en: 2 Octubre 2014, 18:40 pm
No entendiste bien el funcionamiento @FCOSTA, te explico:

1) No es una aplicación gráfica, es una aplicación commandline, es decir, se ejecuta desde la consola con los parámetros que ya indiqué más arriba:

Método de empleo:
Código:
SetWindowPos.exe "Nombre del proceso.exe"

2) La aplicación busca el programa entre los procesos activos, no es necesario mover el archivo a la misma carpeta, simplemente asegúrate que el proceso esté en ejecución, como ya indiqué: Primero ejecutas el "notepad" (notepad, por decir algo) y luego la aplicación que te envié.

3) No le añadí al código ningúna verificación de errores que te pueda indicar si hubo algún error (como por ejemplo si el proceso no se encontró), esto es porque no lo he desarrollado de forma profesional debido a que no lo vi necesario, solo le añadí un par de instruccines básicas para que tomase el argumento que le debes enviar por consola para que te funcionase, nada más.
Asegúrate de utilizarla como es debido y todo debería ir bien :P



EDITO:
Un ejemplo Visual:




¿Lo entendiste ahora?, en pocas palabras, úsalo como si se tratase de un comando de Batch al que le pasas un parámetro, del mismo modo,
La idea es que ejecutes esa aplicación al mismo tiempo que ejecutas la aplicación que quieres mover, supongo que lo haces al inicio de Windows, pues eso, solo tienes que añadir una entrada más a la sección 'RUN' donde se define la ejecución de esos programas.

Ejemplo:

Código
  1. Windows Registry Editor Version 5.00
  2.  
  3. [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run]
  4. "SetWindowPos"="\"C:\\SetWindowPos.exe\" \"Nombre del Programa.exe\""

PD: Si sigues teniendo dificultades enviame el exe del programa que se pone en medio de la pantalla (y sus dependencias si tiene alguna para poder ejecutarlo) y te hago un apaño.

Saludos!
6747  Sistemas Operativos / Windows / Re: Duda windows 8 en: 2 Octubre 2014, 18:28 pm
1. Tengo actualmente el sistema operativo Windows 7 ¿Merece la pena quitarme de windows 7 para probar windows 8?

Soy un amante de Windows 7, desde que lo instalé por primera vez lo empecé a considerar el mejor SO de Windows, pero eso cambió cuando me actualicé a Windows 8/8.1, ¿eso te da una idea?, pero de todas formas, y para que mi opinión no se base solo en gustos personales, es sabido que las diferencias técnicas de Windows 7 a Windows 8 son abismales. empezando por un mayor rendimiento y estabilidad, y una mayor seguridad, tienes mucha información en internet, análisis comparativos, tablas de diferencias, no veo suficiente motivo para formular esa pregunta ya que en Google puedes encontrar la respuesta, y siempre será la misma :P.

2. ¿Que Windows 8 me aconsejan? Simplemente lo quiero para PROGRAMAR y de juego simplemente league of legends

Yo también soy programador, y también juego a MMORPGS, uso la versión Core de Windows 8.1 (es decir, la edición normal) y esa es la que yo te sugiero, no importa mucho si te instalas la Core o la Pro, pero no subas más cuesta arriba porque te estarías instalando por defecto muchas características que no vas a utilizar en la vida (pero que tu sistema las activará dia a día disminuyendo el rendimiento general de tu PC), hazme caso, ¡es un consejo!.

Te instales la que te instales, recuerda realizar siempre una limpieza general de servicios después de la instalación para evitar toda esa basura innecesaria que Windows te instala por defecto.

PD: La versión Core se distribuye en el mismo DVD que la versión Pro, dependiendo del Serial que utilices se te instala una edición u otra.

3. ¿Que ventajas podría tener con windows 8 que con el 7 no?

Eso es algo a lo que sinceramente no me apetece responder por el motivo que ya comenté en la primera cita, y porque se ha discutido cientos d evecs en el foro... puedes utilizar el buscador del foro al menos, y además, seguro que se me escaparian algunas ventajas importantes al nombrarlas, tienes toda la información a tu disposición en la Web: http://lmgtfy.com/?q=Windows+8+advantages

¿ Cuando instale windows 8 debo de tener algo en cuenta? es decir, ¿problemas de instalación?

Si tu PC es de serie e indica que soporta Windows 8 perfectamente entonces no deberías preocuparte mucho, por otro lado, se conocen problemas de instalación con algunos dispositivos de Hardware, además y sobretodo he leido muchisimos problemas de instalación defectuosa al intentar actualizar desde Windows 7 a Windows 8/8.1, o reemplazar el sistema, yo lo hice y no tuve problema alguno, en mi opinión, nunca se sabe si algo puede fallar a la hora de la verdad al instalar un SO... y tampoco si el usuario puede estar involucrado en el problema y que realmente no sea culpa de Windows, pero si quieres evitar este tipo de problema, realiza una instalación limpia de Windows cuandolo instales, es decir, NO hagas una actualización sel SO para preservar la configuración del software que tienes instalado y etc...

Saludos!
6748  Programación / Scripting / Re: .bat para compilar con Javac en: 2 Octubre 2014, 18:10 pm
Lo sé, pero he comentado que los ordenadores del centro están bastante capados y por ejemplo para cosas como estas no tengo los suficientes permisos.

¿Has probado a añadir el directorio al PATH de manera permanente desde la consola?:

Código
  1. "%SystemRoot%\System32\SetX.exe" PATH "%PATH%;%ProgramFiles%\Java\jdk1.7.0_25\bin" /M

De todas formas te recomiendo utilizar mi aplicación, no tiene ningún beneficio sobre los permisos de usuario, pero tiene bastantes opciones que te podrían resultar útiles:

http://foro.elhacker.net/net/source_paths_administra_las_entradas_de_las_variables_de_entorno_path_y-t398347.0.html;msg1883825#msg1883825



Ejemplo de uso:

Código
  1. PATHS.exe /Add -Local "%ProgramFiles%\Java\jdk1.7.0_25\bin"

Saludos!
6749  Foros Generales / Sugerencias y dudas sobre el Foro / Re: Exigir/obligar a los usuarios del foro escribir de forma correcta en: 2 Octubre 2014, 07:39 am
@Engel Lex, no creas que alguien tiene mérito por acertarlas todas, cualquiera puede hacerlo, la verdad es que es un juego muy pero que muy sencillo, yo lo considero for dummies, la mayoría de las palabras están pensadas para confundir a gente extrajera que sisea, esas palabras son las más faciles para los Españoles (ya que conocemos y respetamos el Castellano xD), yo fallé en la palabra "huso", reconozco que ni siquiera conocia esa palabra o se me olvidó con el paso de los años, el resto ha sido pan comido.

Saludos!
6750  Programación / .NET (C#, VB.NET, ASP) / Re: Librería de Snippets !! (Compartan aquí sus snippets) en: 2 Octubre 2014, 06:39 am
Modifica el estado de una ventana.

Código
  1. ' ***********************************************************************
  2. ' Author           : Elektro
  3. ' Last Modified On : 10-02-2014
  4. ' ***********************************************************************
  5. ' <copyright file="SetWindowState.vb" company="Elektro Studios">
  6. '     Copyright (c) Elektro Studios. All rights reserved.
  7. ' </copyright>
  8. ' ***********************************************************************
  9.  
  10. #Region " Usage Examples "
  11.  
  12. 'Dim HWND As IntPtr = Process.GetProcessesByName("devenv").First.MainWindowHandle
  13. '
  14. 'SetWindowState.SetWindowState(HWND, SetWindowState.WindowState.Hide)
  15. 'SetWindowState.SetWindowState("devenv", SetWindowState.WindowState.Restore, Recursivity:=False)
  16.  
  17. #End Region
  18.  
  19. #Region " Imports "
  20.  
  21. Imports System.Runtime.InteropServices
  22.  
  23. #End Region
  24.  
  25. ''' <summary>
  26. ''' Sets the state of a window.
  27. ''' </summary>
  28. Public NotInheritable Class SetWindowState
  29.  
  30. #Region " P/Invoke "
  31.  
  32.    ''' <summary>
  33.    ''' Platform Invocation methods (P/Invoke), access unmanaged code.
  34.    ''' This class does not suppress stack walks for unmanaged code permission.
  35.    ''' <see cref="System.Security.SuppressUnmanagedCodeSecurityAttribute"/>  must not be applied to this class.
  36.    ''' This class is for methods that can be used anywhere because a stack walk will be performed.
  37.    ''' MSDN Documentation: http://msdn.microsoft.com/en-us/library/ms182161.aspx
  38.    ''' </summary>
  39.    Protected NotInheritable Class NativeMethods
  40.  
  41. #Region " Methods "
  42.  
  43.        ''' <summary>
  44.        ''' Retrieves a handle to the top-level window whose class name and window name match the specified strings.
  45.        ''' This function does not search child windows.
  46.        ''' This function does not perform a case-sensitive search.
  47.        ''' To search child windows, beginning with a specified child window, use the FindWindowEx function.
  48.        ''' MSDN Documentation: http://msdn.microsoft.com/en-us/library/windows/desktop/ms633499%28v=vs.85%29.aspx
  49.        ''' </summary>
  50.        ''' <param name="lpClassName">The class name.
  51.        ''' If this parameter is NULL, it finds any window whose title matches the lpWindowName parameter.</param>
  52.        ''' <param name="lpWindowName">The window name (the window's title).
  53.        ''' If this parameter is NULL, all window names match.</param>
  54.        ''' <returns>If the function succeeds, the return value is a handle to the window that has the specified class name and window name.
  55.        ''' If the function fails, the return value is NULL.</returns>
  56.        <DllImport("user32.dll", SetLastError:=False, CharSet:=CharSet.Auto, BestFitMapping:=False)>
  57.        Friend Shared Function FindWindow(
  58.           ByVal lpClassName As String,
  59.           ByVal lpWindowName As String
  60.        ) As IntPtr
  61.        End Function
  62.  
  63.        ''' <summary>
  64.        ''' Retrieves a handle to a window whose class name and window name match the specified strings.
  65.        ''' The function searches child windows, beginning with the one following the specified child window.
  66.        ''' This function does not perform a case-sensitive search.
  67.        ''' MSDN Documentation: http://msdn.microsoft.com/en-us/library/windows/desktop/ms633500%28v=vs.85%29.aspx
  68.        ''' </summary>
  69.        ''' <param name="hwndParent">
  70.        ''' A handle to the parent window whose child windows are to be searched.
  71.        ''' If hwndParent is NULL, the function uses the desktop window as the parent window.
  72.        ''' The function searches among windows that are child windows of the desktop.
  73.        ''' </param>
  74.        ''' <param name="hwndChildAfter">
  75.        ''' A handle to a child window.
  76.        ''' The search begins with the next child window in the Z order.
  77.        ''' The child window must be a direct child window of hwndParent, not just a descendant window.
  78.        ''' If hwndChildAfter is NULL, the search begins with the first child window of hwndParent.
  79.        ''' </param>
  80.        ''' <param name="strClassName">
  81.        ''' The window class name.
  82.        ''' </param>
  83.        ''' <param name="strWindowName">
  84.        ''' The window name (the window's title).
  85.        ''' If this parameter is NULL, all window names match.
  86.        ''' </param>
  87.        ''' <returns>
  88.        ''' If the function succeeds, the return value is a handle to the window that has the specified class and window names.
  89.        ''' If the function fails, the return value is NULL.
  90.        ''' </returns>
  91.        <DllImport("User32.dll", SetLastError:=False, CharSet:=CharSet.Auto, BestFitMapping:=False)>
  92.        Friend Shared Function FindWindowEx(
  93.           ByVal hwndParent As IntPtr,
  94.           ByVal hwndChildAfter As IntPtr,
  95.           ByVal strClassName As String,
  96.           ByVal strWindowName As String
  97.        ) As IntPtr
  98.        End Function
  99.  
  100.        ''' <summary>
  101.        ''' Retrieves the identifier of the thread that created the specified window
  102.        ''' and, optionally, the identifier of the process that created the window.
  103.        ''' MSDN Documentation: http://msdn.microsoft.com/en-us/library/windows/desktop/ms633522%28v=vs.85%29.aspx
  104.        ''' </summary>
  105.        ''' <param name="hWnd">A handle to the window.</param>
  106.        ''' <param name="ProcessId">
  107.        ''' A pointer to a variable that receives the process identifier.
  108.        ''' If this parameter is not NULL, GetWindowThreadProcessId copies the identifier of the process to the variable;
  109.        ''' otherwise, it does not.
  110.        ''' </param>
  111.        ''' <returns>The identifier of the thread that created the window.</returns>
  112.        <DllImport("user32.dll")>
  113.        Friend Shared Function GetWindowThreadProcessId(
  114.            ByVal hWnd As IntPtr,
  115.            ByRef ProcessId As Integer
  116.        ) As Integer
  117.        End Function
  118.  
  119.        ''' <summary>
  120.        ''' Sets the specified window's show state.
  121.        ''' MSDN Documentation: http://msdn.microsoft.com/en-us/library/windows/desktop/ms633548%28v=vs.85%29.aspx
  122.        ''' </summary>
  123.        ''' <param name="hwnd">A handle to the window.</param>
  124.        ''' <param name="nCmdShow">Controls how the window is to be shown.</param>
  125.        ''' <returns><c>true</c> if the function succeeds, <c>false</c> otherwise.</returns>
  126.        <DllImport("User32", SetLastError:=False)>
  127.        Friend Shared Function ShowWindow(
  128.           ByVal hwnd As IntPtr,
  129.           ByVal nCmdShow As WindowState
  130.        ) As Boolean
  131.        End Function
  132.  
  133. #End Region
  134.  
  135.    End Class
  136.  
  137. #End Region
  138.  
  139. #Region " Enumerations "
  140.  
  141.    ''' <summary>
  142.    ''' Controls how the window is to be shown.
  143.    ''' MSDN Documentation: http://msdn.microsoft.com/en-us/library/windows/desktop/ms633548%28v=vs.85%29.aspx
  144.    ''' </summary>
  145.    Friend Enum WindowState As Integer
  146.  
  147.        ''' <summary>
  148.        ''' Hides the window and activates another window.
  149.        ''' </summary>
  150.        Hide = 0I
  151.  
  152.        ''' <summary>
  153.        ''' Activates and displays a window.
  154.        ''' If the window is minimized or maximized, the system restores it to its original size and position.
  155.        ''' An application should specify this flag when displaying the window for the first time.
  156.        ''' </summary>
  157.        Normal = 1I
  158.  
  159.        ''' <summary>
  160.        ''' Activates the window and displays it as a minimized window.
  161.        ''' </summary>
  162.        ShowMinimized = 2I
  163.  
  164.        ''' <summary>
  165.        ''' Maximizes the specified window.
  166.        ''' </summary>
  167.        Maximize = 3I
  168.  
  169.        ''' <summary>
  170.        ''' Activates the window and displays it as a maximized window.
  171.        ''' </summary>      
  172.        ShowMaximized = Maximize
  173.  
  174.        ''' <summary>
  175.        ''' Displays a window in its most recent size and position.
  176.        ''' This value is similar to <see cref="WindowState.Normal"/>, except the window is not actived.
  177.        ''' </summary>
  178.        ShowNoActivate = 4I
  179.  
  180.        ''' <summary>
  181.        ''' Activates the window and displays it in its current size and position.
  182.        ''' </summary>
  183.        Show = 5I
  184.  
  185.        ''' <summary>
  186.        ''' Minimizes the specified window and activates the next top-level window in the Z order.
  187.        ''' </summary>
  188.        Minimize = 6I
  189.  
  190.        ''' <summary>
  191.        ''' Displays the window as a minimized window.
  192.        ''' This value is similar to <see cref="WindowState.ShowMinimized"/>, except the window is not activated.
  193.        ''' </summary>
  194.        ShowMinNoActive = 7I
  195.  
  196.        ''' <summary>
  197.        ''' Displays the window in its current size and position.
  198.        ''' This value is similar to <see cref="WindowState.Show"/>, except the window is not activated.
  199.        ''' </summary>
  200.        ShowNA = 8I
  201.  
  202.        ''' <summary>
  203.        ''' Activates and displays the window.
  204.        ''' If the window is minimized or maximized, the system restores it to its original size and position.
  205.        ''' An application should specify this flag when restoring a minimized window.
  206.        ''' </summary>
  207.        Restore = 9I
  208.  
  209.        ''' <summary>
  210.        ''' Sets the show state based on the SW_* value specified in the STARTUPINFO structure
  211.        ''' passed to the CreateProcess function by the program that started the application.
  212.        ''' </summary>
  213.        ShowDefault = 10I
  214.  
  215.        ''' <summary>
  216.        ''' <b>Windows 2000/XP:</b>
  217.        ''' Minimizes a window, even if the thread that owns the window is not responding.
  218.        ''' This flag should only be used when minimizing windows from a different thread.
  219.        ''' </summary>
  220.        ForceMinimize = 11I
  221.  
  222.    End Enum
  223.  
  224. #End Region
  225.  
  226. #Region " Public Methods "
  227.  
  228.    ''' <summary>
  229.    ''' Set the state of a window by an HWND.
  230.    ''' </summary>
  231.    ''' <param name="WindowHandle">A handle to the window.</param>
  232.    ''' <param name="WindowState">The state of the window.</param>
  233.    ''' <returns><c>true</c> if the function succeeds, <c>false</c> otherwise.</returns>
  234.    Friend Shared Function SetWindowState(ByVal WindowHandle As IntPtr,
  235.                                          ByVal WindowState As WindowState) As Boolean
  236.  
  237.        Return NativeMethods.ShowWindow(WindowHandle, WindowState)
  238.  
  239.    End Function
  240.  
  241.    ''' <summary>
  242.    ''' Set the state of a window by a process name.
  243.    ''' </summary>
  244.    ''' <param name="ProcessName">The name of the process.</param>
  245.    ''' <param name="WindowState">The state of the window.</param>
  246.    ''' <param name="Recursivity">If set to <c>false</c>, only the first process instance will be processed.</param>
  247.    Friend Shared Sub SetWindowState(ByVal ProcessName As String,
  248.                                     ByVal WindowState As WindowState,
  249.                                     Optional ByVal Recursivity As Boolean = False)
  250.  
  251.        If ProcessName.EndsWith(".exe", StringComparison.OrdinalIgnoreCase) Then
  252.            ProcessName = ProcessName.Remove(ProcessName.Length - ".exe".Length)
  253.        End If
  254.  
  255.        Dim pHandle As IntPtr = IntPtr.Zero
  256.        Dim pID As Integer = 0I
  257.  
  258.        Dim Processes As Process() = Process.GetProcessesByName(ProcessName)
  259.  
  260.        ' If any process matching the name is found then...
  261.        If Processes.Count = 0 Then
  262.            Exit Sub
  263.        End If
  264.  
  265.        For Each p As Process In Processes
  266.  
  267.            ' If Window is visible then...
  268.            If p.MainWindowHandle <> IntPtr.Zero Then
  269.                SetWindowState(p.MainWindowHandle, WindowState)
  270.  
  271.            Else ' Window is hidden
  272.  
  273.                ' Check all open windows (not only the process we are looking),
  274.                ' begining from the child of the desktop, phandle = IntPtr.Zero initialy.
  275.                While pID <> p.Id ' Check all windows.
  276.  
  277.                    ' Get child handle of window who's handle is "pHandle".
  278.                    pHandle = NativeMethods.FindWindowEx(IntPtr.Zero, pHandle, Nothing, Nothing)
  279.  
  280.                    ' Get ProcessId from "pHandle".
  281.                    NativeMethods.GetWindowThreadProcessId(pHandle, pID)
  282.  
  283.                    ' If the ProcessId matches the "pID" then...
  284.                    If pID = p.Id Then
  285.  
  286.                        NativeMethods.ShowWindow(pHandle, WindowState)
  287.  
  288.                        If Not Recursivity Then
  289.                            Exit For
  290.                        End If
  291.  
  292.                    End If
  293.  
  294.                End While
  295.  
  296.            End If
  297.  
  298.        Next p
  299.  
  300.    End Sub
  301.  
  302. #End Region
  303.  
  304. End Class
Páginas: 1 ... 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 [675] 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 ... 1254
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines