Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
1 / 1 / 1
Регистрация: 02.04.2013
Сообщений: 124

Как закрыть программу у которой фокус winapi в C#

21.06.2013, 20:55. Показов 1886. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
вот нашел код но не знаю как его в проект засунуть
я буду выполнят код из под хука
C#
1
2
3
4
5
6
7
8
9
procedure KillActiveProgram;
const PROCESS_TERMINATE = $0001;var
        ProcessHandle : THandle;
        ProcessID: Integer;
begin
 GetWindowThreadProcessID(GetForegroundWindow, @ProcessID);
 ProcessHandle := OpenProcess(PROCESS_TERMINATE, FALSE, ProcessId);
 TerminateProcess(ProcessHandle,4);
end;
Добавлено через 5 часов 11 минут
uupp
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.06.2013, 20:55
Ответы с готовыми решениями:

Как написать программу winapi в которой будет непрерывно меняться цвет кнопок?
Необходимо сделать программу которая работает с драйвером(чтение данных с порта). Данные по адресу регистра порта постоянно меняются. Мне...

Qt/WinApi Как установить фокус окну при определенных условиях?
Здравствуйте! В общем имею следующую проблему: есть приложение, главное окно скрыто, по комбинации клавиш выводится окошко и ему задается...

как сделать так,чтобы когда я нажимаю кнопку закрыть в правом верхнем углу выходило окно сообшение?(типа вы хотите закрыть программу/да или нет/)
как сделать так,чтобы когда я нажимаю кнопку закрыть в правом верхнем углу выходило окно сообшение?(типа вы хотите закрыть программу/да или...

16
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
21.06.2013, 23:00
@maksili, это делфи. Если оч надо - скомпилируй в делфи и запускай экзешник из шарпа. Не вижу смысла на шарп переводить.
1
1 / 1 / 1
Регистрация: 02.04.2013
Сообщений: 124
22.06.2013, 12:02  [ТС]
я в делпфи не шарю мож кто может помочь так с C# реализовать, мож похожие проекты были.
0
 Аватар для Anklav
447 / 305 / 47
Регистрация: 23.01.2013
Сообщений: 661
22.06.2013, 12:35
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
        [DllImport("user32.dll")]
        private static extern Int32 GetForegroundWindow();
 
        [DllImport("user32.dll")]
        private static extern UInt32 GetWindowThreadProcessId(Int32 hWnd, out Int32 lpdwProcessId);
 
void SomeMethod()
{
        Int32 handle = GetForegroundWindow();
        Int32 ProcessID;
        GetWindowThreadProcessId(handle, out ProcessID);
        Process ActiveProcess = Process.GetProcessById(ProcessID);
        
        ActiveProcess.Kill();
}
1
1 / 1 / 1
Регистрация: 02.04.2013
Сообщений: 124
22.06.2013, 12:50  [ТС]
почему-та закрывается и моя программа хотя она висит в трее как исправить баг.
и спасибо большое.
0
 Аватар для Anklav
447 / 305 / 47
Регистрация: 23.01.2013
Сообщений: 661
22.06.2013, 13:02
Конечно, ты ж наверно в таймер код засунул, о юный хацкер.
Зачем тебе закрывать активные окна?
1
1 / 1 / 1
Регистрация: 02.04.2013
Сообщений: 124
22.06.2013, 13:06  [ТС]
нет из под хука код запускаю на клавишу как баг то исправить у меня закрываются все процессы имеющие окна
0
1 / 1 / 1
Регистрация: 02.04.2013
Сообщений: 124
22.06.2013, 13:15  [ТС]
что бы закрыть активный винлок у которого нет крестика и просто так его не закроеш
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
22.06.2013, 13:23
@maksili,
C#
1
2
3
4
5
6
7
foreach(var p in Process.GetProcesses())
   try
   {
      p.Kill();
   }
   catch {}
new Process(explorer).Start();
0
1 / 1 / 1
Регистрация: 02.04.2013
Сообщений: 124
22.06.2013, 13:31  [ТС]
@psilion, после выполнения вашего кода у меня вылез синий экран смерти.
0
22.06.2013, 13:49

Не по теме:

:swoon:

0
1 / 1 / 1
Регистрация: 02.04.2013
Сообщений: 124
22.06.2013, 13:53  [ТС]
Помотите плиз Help My Pliase
0
 Аватар для Anklav
447 / 305 / 47
Регистрация: 23.01.2013
Сообщений: 661
22.06.2013, 13:57
Цитата Сообщение от maksili Посмотреть сообщение
@psilion, после выполнения вашего кода у меня вылез синий экран смерти.


У меня все работает, я зарегистрировал глобальную горячую клавишу. Может проблема в вашем хуке?

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
    public partial class MainForm : Form
    {
        const int WM_HOTKEY = 0x0312;
        const int MOD_ALT = 0x0001;
        const int MOD_NOMOD = 0x0000;
 
        [DllImport("user32.dll")]
        public static extern bool RegisterHotKey(IntPtr hWnd, int id, uint fsModifiers, uint vk);
 
        [DllImport("user32.dll")]
        public static extern bool UnregisterHotKey(IntPtr hWnd, int id);
 
        [DllImport("user32.dll")]
        public static extern Int32 GetForegroundWindow();
 
        [DllImport("user32.dll")]
        public static extern UInt32 GetWindowThreadProcessId(Int32 hWnd, out Int32 lpdwProcessId);
 
        public MainForm()
        {
            InitializeComponent();
 
            RegisterHotKey(this.Handle, 0, MOD_NOMOD, 0x30); //0x30 - клавиша 0
        }
 
        protected override void WndProc(ref Message m)
        {
            if (m.Msg == WM_HOTKEY)
            {
                Int32 handle = GetForegroundWindow();
                Int32 ProcessID;
                GetWindowThreadProcessId(handle, out ProcessID);
                Process ActiveProcess = Process.GetProcessById(ProcessID);
 
                ActiveProcess.Kill();
            }
 
            base.WndProc(ref m);
        }
 
        private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
        {
            UnregisterHotKey(Handle, 0);
        }
2
1 / 1 / 1
Регистрация: 02.04.2013
Сообщений: 124
22.06.2013, 14:05  [ТС]
что такое Helper
0
 Аватар для Anklav
447 / 305 / 47
Регистрация: 23.01.2013
Сообщений: 661
22.06.2013, 14:13
Статический класс который я использовал для хранения WinApi функций, забыл удалить его из кода. Уже удалил.

PS у меня код только для 1 клавиши (поэтому я не стал узнавать какая клавиша там нажата), если нужно больше, то нужно уже узнавать какая клавиша нажата в WndProc + регистрировать их с разными id, и естественно все зарегистрированные id освобождать после выхода из приложения.
0
1 / 1 / 1
Регистрация: 02.04.2013
Сообщений: 124
22.06.2013, 14:17  [ТС]
а как мне добавить Статический класс для хранения WInApi функции

Добавлено через 2 минуты
сможешь дать свой исходник, я посмотрю что к чему.
0
 Аватар для Anklav
447 / 305 / 47
Регистрация: 23.01.2013
Сообщений: 661
22.06.2013, 14:24
Это черновой проект, я его использую для решения задач на форуме, поэтому там могут быть какие то остатки не пойми чего
Вложения
Тип файла: rar TestProject.rar (82.6 Кб, 6 просмотров)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.06.2013, 14:24
Помогаю со студенческими работами здесь

Как сделать программу с окном, не перехватывающим фокус
В общем, такая задача - на рабочем компе из шедулера буду запускать свою программу (не консольную, а обычную, с главной формой). Программу...

Как закрыть программу
Как сделать так, чтобы пункт Exit в меню MainMenu выполнял выход из программы?

Как закрыть программу?
Как закрыть программу в delphi (например: Mail.ru agent)

Как правильно закрыть программу в VB?
Podskazite kak zakrit VB application? Est li kakaja-to prozedura tipa 'Exit sub' dlja application? Spasibo Inessa

Как программно закрыть программу?
Как программно закрыть программу?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru