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

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

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

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

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

textual
Листинг программы
  static class Data
    { 
public static IntPtr hdw1 { get; set; }
    }
  public class WindowWrapper
        {
 
 
            [DllImport("user32.dll", SetLastError = true)]
            static extern int GetWindowText(IntPtr hWnd, StringBuilder lpString, int nMaxCount);
 
            [DllImport("user32.dll", SetLastError = true)]
            static extern int GetWindowTextLength(IntPtr hWnd);
 
            [DllImport("user32.dll", SetLastError = true)]
            [return: MarshalAs(UnmanagedType.Bool)]
            static extern bool IsWindowVisible(IntPtr hWnd);
 
            public IntPtr Handle { get; private set; }
            public string Title { get { return GetWindowText(Handle); } }
            public bool IsVisible { get { return IsWindowVisible(Handle); } }
 
            public WindowWrapper(IntPtr hWnd)
            {
                Handle = hWnd;
            }
 
            string GetWindowText(IntPtr hWnd)
            {
                int len = GetWindowTextLength(hWnd) + 1;
                StringBuilder sb = new StringBuilder(len);
                len = GetWindowText(hWnd, sb, len);
                return sb.ToString(0, len);
            }
            public override string ToString()
            {
                var title = Title;
 
                return string.IsNullOrEmpty(title) ? "HWND: 0x" + Handle.ToString("X") : title;
            }
        }
 
        delegate bool EnumWindowsProc(IntPtr hWnd, IntPtr lParam);
 
        [DllImport("user32.dll", SetLastError = true)]
        [return: MarshalAs(UnmanagedType.Bool)]
        static extern bool EnumWindows(EnumWindowsProc lpEnumFunc, IntPtr lParam);
        [DllImport("user32.dll", SetLastError = true)]
        private static extern bool SetForegroundWindow(IntPtr hWnd);
        [DllImport("user32.dll", SetLastError = true)]
        static extern bool ShowWindow(IntPtr hWnd, uint nCmdShow);
        const uint SW_SHOWNORMAL = 0x1;
        const uint SW_HIDE = 0x0;
 
private void RefreshWindowList1()
        {
            listBox1.Items.Clear();
 
            EnumWindows((hWnd, lParam) =>
            {
                var wnd = new WindowWrapper(hWnd);
 
                if (!wnd.IsVisible && !string.IsNullOrEmpty(wnd.Title))
                {
 
                    listBox1.Items.Add(wnd);
 
 
                }
                return true;
            }, IntPtr.Zero);
 
        }
 
        private void btnSearch_Click(object sender, EventArgs e)
        {
            RefreshWindowList1();
        }
 
private void listBox1_MouseClick(object sender, MouseEventArgs e)
        {
              Data.hdw1 = (listBox1.SelectedItem as WindowWrapper).Handle;
        }
   private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                ShowWindow(Data.hdw1, SW_HIDE);
                RefreshWindowList1();
            }
            catch { MessageBox.Show("Окно не найдено", "Error"); }
 
        }

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


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

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

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