Окно поверх всех окон - C#

Узнай цену своей работы

Формулировка задачи:

Пишу программу против винлокеров добавил свой диспетчер задач, разблокирование ключей реестра.Но есть одна проблема окно просто не работает так-как винлокер поверх этого окна и я не могу переключиться поэтому мне надо сделать окно поверх всех окон. P.S TopMost = true не работает.Для тестирования использовал приватный винлокер на delphi.Помогите плиз.
upppppppp
upuupupuupp

Решение задачи: «Окно поверх всех окон»

textual
Листинг программы
  1.   static class Data
  2.     {
  3. public static IntPtr hdw1 { get; set; }
  4.     }
  5.   public class WindowWrapper
  6.         {
  7.  
  8.  
  9.             [DllImport("user32.dll", SetLastError = true)]
  10.             static extern int GetWindowText(IntPtr hWnd, StringBuilder lpString, int nMaxCount);
  11.  
  12.             [DllImport("user32.dll", SetLastError = true)]
  13.             static extern int GetWindowTextLength(IntPtr hWnd);
  14.  
  15.             [DllImport("user32.dll", SetLastError = true)]
  16.             [return: MarshalAs(UnmanagedType.Bool)]
  17.             static extern bool IsWindowVisible(IntPtr hWnd);
  18.  
  19.             public IntPtr Handle { get; private set; }
  20.             public string Title { get { return GetWindowText(Handle); } }
  21.             public bool IsVisible { get { return IsWindowVisible(Handle); } }
  22.  
  23.             public WindowWrapper(IntPtr hWnd)
  24.             {
  25.                 Handle = hWnd;
  26.             }
  27.  
  28.             string GetWindowText(IntPtr hWnd)
  29.             {
  30.                 int len = GetWindowTextLength(hWnd) + 1;
  31.                 StringBuilder sb = new StringBuilder(len);
  32.                 len = GetWindowText(hWnd, sb, len);
  33.                 return sb.ToString(0, len);
  34.             }
  35.             public override string ToString()
  36.             {
  37.                 var title = Title;
  38.  
  39.                 return string.IsNullOrEmpty(title) ? "HWND: 0x" + Handle.ToString("X") : title;
  40.             }
  41.         }
  42.  
  43.         delegate bool EnumWindowsProc(IntPtr hWnd, IntPtr lParam);
  44.  
  45.         [DllImport("user32.dll", SetLastError = true)]
  46.         [return: MarshalAs(UnmanagedType.Bool)]
  47.         static extern bool EnumWindows(EnumWindowsProc lpEnumFunc, IntPtr lParam);
  48.         [DllImport("user32.dll", SetLastError = true)]
  49.         private static extern bool SetForegroundWindow(IntPtr hWnd);
  50.         [DllImport("user32.dll", SetLastError = true)]
  51.         static extern bool ShowWindow(IntPtr hWnd, uint nCmdShow);
  52.         const uint SW_SHOWNORMAL = 0x1;
  53.         const uint SW_HIDE = 0x0;
  54.  
  55. private void RefreshWindowList1()
  56.         {
  57.             listBox1.Items.Clear();
  58.  
  59.             EnumWindows((hWnd, lParam) =>
  60.             {
  61.                 var wnd = new WindowWrapper(hWnd);
  62.  
  63.                 if (!wnd.IsVisible && !string.IsNullOrEmpty(wnd.Title))
  64.                 {
  65.  
  66.                     listBox1.Items.Add(wnd);
  67.  
  68.  
  69.                 }
  70.                 return true;
  71.             }, IntPtr.Zero);
  72.  
  73.         }
  74.  
  75.         private void btnSearch_Click(object sender, EventArgs e)
  76.         {
  77.             RefreshWindowList1();
  78.         }
  79.  
  80. private void listBox1_MouseClick(object sender, MouseEventArgs e)
  81.         {
  82.               Data.hdw1 = (listBox1.SelectedItem as WindowWrapper).Handle;
  83.         }
  84.    private void button1_Click(object sender, EventArgs e)
  85.         {
  86.             try
  87.             {
  88.                 ShowWindow(Data.hdw1, SW_HIDE);
  89.                 RefreshWindowList1();
  90.             }
  91.             catch { MessageBox.Show("Окно не найдено", "Error"); }
  92.  
  93.         }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 3.667 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут