Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Runtime.InteropServices;
- using System.Diagnostics;
- using System.Security;
- using System.Threading;
- using System.Collections;
- namespace PuttyShadow
- {
- class Program
- {
- static void Main(string[] args)
- {
- // Configure un nom unique au launcher puis le cache
- Console.Title = Guid.NewGuid().ToString();
- Windows w = new Windows();
- foreach (Window wItem in w)
- {
- if (wItem.Title == Console.Title)
- wItem.Visible = false;
- }
- // Création du process a lancer
- Process p = new Process();
- p.StartInfo.FileName = @"C:\SVN\HomeServer\Visual Studio Projects\PminiRelayShadow\PminiRelayShadow\bin\Debug\miniRelay.exe";
- p.Start();
- Thread.Sleep(100);
- // On retrouve la fenêtre et on la cache ^^
- w = new Windows();
- foreach (Window wItem in w)
- {
- if (wItem.Title.Contains("miniRelay"))
- wItem.Visible = false;
- }
- p.WaitForExit();
- }
- }
- public class Window
- {
- [DllImport("user32.dll")]
- private static extern bool ShowWindowAsync(IntPtr hWnd, int nCmdShow);
- [DllImport("user32.dll")]
- private static extern bool SetForegroundWindow(IntPtr hWnd);
- [DllImport("user32.dll")]
- private static extern bool IsIconic(IntPtr hWnd);
- [DllImport("user32.dll")]
- private static extern bool IsZoomed(IntPtr hWnd);
- [DllImport("user32.dll")]
- private static extern IntPtr GetForegroundWindow();
- [DllImport("user32.dll")]
- private static extern IntPtr GetWindowThreadProcessId(IntPtr hWnd, IntPtr ProcessId);
- [DllImport("user32.dll")]
- private static extern IntPtr AttachThreadInput(IntPtr idAttach, IntPtr idAttachTo, int fAttach);
- private const int SW_HIDE = 0;
- private const int SW_SHOWNORMAL = 1;
- private const int SW_SHOWMINIMIZED = 2;
- private const int SW_SHOWMAXIMIZED = 3;
- private const int SW_SHOWNOACTIVATE = 4;
- private const int SW_RESTORE = 9;
- private const int SW_SHOWDEFAULT = 10;
- private IntPtr m_hWnd;
- private string m_Title;
- private bool m_Visible = true;
- private string m_Process;
- private bool m_WasMax = false;
- public IntPtr hWnd
- {
- get { return m_hWnd; }
- }
- public string Title
- {
- get { return m_Title; }
- }
- public string Process
- {
- get { return m_Process; }
- }
- public bool Visible
- {
- get { return m_Visible; }
- set
- {
- if (value == true)
- {
- if (m_WasMax)
- {
- if (ShowWindowAsync(m_hWnd, SW_SHOWMAXIMIZED))
- m_Visible = true;
- }
- else
- {
- if (ShowWindowAsync(m_hWnd, SW_SHOWNORMAL))
- m_Visible = true;
- }
- }
- if (value == false)
- {
- m_WasMax = IsZoomed(m_hWnd);
- if (ShowWindowAsync(m_hWnd, SW_HIDE))
- m_Visible = false;
- }
- }
- }
- public Window(string Title, IntPtr hWnd, string Process)
- {
- m_Title = Title;
- m_hWnd = hWnd;
- m_Process = Process;
- }
- public override string ToString()
- {
- if (m_Title.Length > 0)
- return m_Title;
- else
- return m_Process;
- }
- }
- public class Windows : IEnumerable, IEnumerator
- {
- [DllImport("user32.dll")]
- private static extern int GetWindowText(int hWnd, StringBuilder title, int size);
- [DllImport("user32.dll")]
- private static extern int GetWindowModuleFileName(int hWnd, StringBuilder title, int size);
- [DllImport("user32.dll")]
- private static extern int EnumWindows(EnumWindowsProc ewp, int lParam);
- [DllImport("user32.dll")]
- private static extern bool IsWindowVisible(int hWnd);
- public delegate bool EnumWindowsProc(int hWnd, int lParam);
- private int m_Position = -1;
- ArrayList wndArray = new ArrayList();
- private bool m_invisible = false;
- private bool m_notitle = false;
- public Windows(bool Invisible, bool Untitled)
- {
- m_invisible = Invisible;
- m_notitle = Untitled;
- EnumWindowsProc ewp = new EnumWindowsProc(EvalWindow);
- EnumWindows(ewp, 0);
- }
- public Windows()
- {
- EnumWindowsProc ewp = new EnumWindowsProc(EvalWindow);
- EnumWindows(ewp, 0);
- }
- private bool EvalWindow(int hWnd, int lParam)
- {
- if (m_invisible == false && !IsWindowVisible(hWnd))
- return (true);
- StringBuilder title = new StringBuilder(256);
- StringBuilder module = new StringBuilder(256);
- GetWindowModuleFileName(hWnd, module, 256);
- GetWindowText(hWnd, title, 256);
- if (m_notitle == false && title.Length == 0)
- return (true);
- wndArray.Add(new Window(title.ToString(), (IntPtr)hWnd,
- module.ToString()));
- return (true);
- }
- public IEnumerator GetEnumerator()
- {
- return (IEnumerator)this;
- }
- public bool MoveNext()
- {
- m_Position++;
- if (m_Position < wndArray.Count)
- {
- return true;
- }
- else
- {
- return false;
- }
- }
- public void Reset()
- {
- m_Position = -1;
- }
- public object Current
- {
- get
- {
- return wndArray[m_Position];
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement