Окно поверх всех окон - 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"); }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д