Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
 Аватар для FreeZon
8 / 10 / 8
Регистрация: 30.12.2013
Сообщений: 577

Отлов окна, и приостановка его

20.12.2014, 11:19. Показов 1697. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ребят как сделать чтобы программа отлавливала программы по handle или еще как нибудь.
И чтобы запрещала его запуск пока не введешь пароль.

Мне нужно сделать родительский контроль. От братика.Существующие программы мне не нужно.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.12.2014, 11:19
Ответы с готовыми решениями:

Отлов окна по части названия
Всем привет. В Delphi есть возможность словить окно по полному имени, а если по части названия, то приходится использовать перебор окон,...

glut отлов события закрытия окна
Добрый вечер! Как или какая функция (в glut), отвечает за событие закрытие окна. Что имею ввиду: в WinApi есть такое, что перед...

Отлов от программы HWID компа и его подмена
Добрый день. Появилась необходимость отловить у программы каким методом получает HWID и по средствам c# подменить его. Подскажите в каком...

10
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
20.12.2014, 12:18
Цитата Сообщение от FreeZon Посмотреть сообщение
чтобы запрещала его запуск пока не введешь пароль.
В смысле, это ваша программа или сторонняя?
0
 Аватар для FreeZon
8 / 10 / 8
Регистрация: 30.12.2013
Сообщений: 577
20.12.2014, 12:50  [ТС]
Цитата Сообщение от insite2012 Посмотреть сообщение
В смысле, это ваша программа или сторонняя?
Я хочу закрыть доступ к Google Chrome и IE чтобы доступ был к ему только по паролю.
Ну как родительский контроль.
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
20.12.2014, 12:55
Цитата Сообщение от FreeZon Посмотреть сообщение
хочу закрыть доступ к Google Chrome и IE
Как вариант решения проблемы - отдельный поток, который будет прибивать необходимые процессы. Если ввели пароль - программа выключается. Примерно такая идея.
0
 Аватар для FreeZon
8 / 10 / 8
Регистрация: 30.12.2013
Сообщений: 577
20.12.2014, 12:57  [ТС]
Цитата Сообщение от insite2012 Посмотреть сообщение
Если ввели пароль - программа выключается.
Нет, мне нужно перехватывать, во время запуска хрома. Возможно ?
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
20.12.2014, 13:14
Цитата Сообщение от FreeZon Посмотреть сообщение
мне нужно перехватывать
Так запустите поток, он и перехватит.
Вот вам простая консолька. Запустите ее и попробуйте запустить хром)))
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
using System.Diagnostics;
using System.Threading;
using System.Threading.Tasks;
 
namespace ProcessKiller {
    class Program {
        static void Main(string[] args) {
            new Thread(KillProcesses) { IsBackground = true }.Start();
            string passWord = "";
            while (passWord!="123") {
                Console.WriteLine("Enter password!");
                passWord = Console.ReadLine();
            }
        }
        static void KillProcesses() {
            string processName = "chrome";
            while (true) {
                var allProcesses = Process.GetProcesses().Where(p => p.ProcessName == processName);
                foreach (var proc in allProcesses) {
                    try {
                        proc.Kill();
                    }
                    catch { }
                }
                Thread.Sleep(100);
            }
        }
    }
}
0
20.12.2014, 21:45

Не по теме:

Цитата Сообщение от FreeZon Посмотреть сообщение
От братика.
Цитата Сообщение от insite2012 Посмотреть сообщение
Так запустите поток, он и перехватит.
Вот вам простая консолька. Запустите ее и попробуйте запустить хром)))
Одногруппник дотку так выключал от братика :D

0
 Аватар для FreeZon
8 / 10 / 8
Регистрация: 30.12.2013
Сообщений: 577
21.12.2014, 21:46  [ТС]
Цитата Сообщение от insite2012 Посмотреть сообщение
Так запустите поток, он и перехватит.
Вот вам простая консолька. Запустите ее и попробуйте запустить хром)))
Нее... это не то... Так и я могу сделать
Я говорю чтобы при запуске требовал пароль. Запуск хрома > Остановка хрома> Появлялось окошко... вводишь пароль, и запуск продолжается
0
Эксперт С++
 Аватар для _lunar_
3701 / 2836 / 451
Регистрация: 03.05.2011
Сообщений: 5,193
Записей в блоге: 21
22.12.2014, 00:11
Цитата Сообщение от FreeZon Посмотреть сообщение
Запуск хрома > Остановка хрома> Появлялось окошко
либо
1. запускать хром через программу-лаунчер с флагом CREATE_SUSPENDED. В этом случае хром будет висеть в фоновых процессах до тех пор, пока не будет вызвана NtResumeProcess из библиотеке ntdll.dll
покажу как это выглядит на плюсах (не охота заморачиваться с переводом в interop, но это всё не так сложно перевести на шарп)
Кликните здесь для просмотра всего текста
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
typedef LONG(WINAPI* NT_RESUME_PROCESS)(HANDLE pHandle);
 
PROCESS_INFORMATION StartProcess(char* AppName)
{
    PROCESS_INFORMATION procInfo;
    STARTUPINFO startInfo;
    memset(&procInfo, 0, sizeof(procInfo));
    memset(&startInfo, 0, sizeof(startInfo));
    startInfo.cb = sizeof(startInfo);
 
    char temp[MAX_PATH];
    CreateProcess(AppName, temp, NULL, NULL, FALSE, CREATE_SUSPENDED, NULL, NULL, &startInfo, &procInfo);
 
    return procInfo;
}
 
int CALLBACK WinMain(
  _In_  HINSTANCE hInstance,
  _In_  HINSTANCE hPrevInstance,
  _In_  LPSTR lpCmdLine,
  _In_  int nCmdShow
)
{
    PROCESS_INFORMATION procInfo = StartProcess("path to chrome.exe");
        // делаем окошко с паролем и проверяем
        // если true (пароль верен)
        if (true)
        {
                NT_RESUME_PROCESS Resume = (NT_RESUME_PROCESS)GetProcAddress(GetModuleHandle("ntdll.dll"), "NtResumeProcess");
                Resume(procInfo.hProcess);
        }
        else // убиваем процесс
 
    return 0;
}

проблема данного способа в том, что хром придётся запускать именно через эту программу.

либо
2. внедрять подобный код в экзешник хрома, чтобы при запуске он вызывался и запрашивал окно с паролем. Этим способом не рекомендую пользоваться, т.к. во-первых он достаточно сложен в плане реализации, а во-вторых хром постоянно обновляется и экзешник просто обновит себя с сервера и всё придётся делать по новой.
1
286 / 192 / 56
Регистрация: 25.12.2012
Сообщений: 640
22.12.2014, 05:27
А чем не устраивают учетные записи ? Можно настроить запуск любой программы через пароль.
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
23.12.2014, 02:30
Лучший ответ Сообщение было отмечено FreeZon как решение

Решение

Цитата Сообщение от FreeZon Посмотреть сообщение
Так и я могу сделать
Если бы могли так, значит и до такого бы догадались)))) Вот вариант. Код файла Program.cs:
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
45
46
47
48
49
50
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
 
using System.Threading;
using System.Diagnostics;
 
namespace ProcessLauncher {
    public static class Program {
        public static string passWord { get; set; }
        static EventWaitHandle handle = new AutoResetEvent(false);
        /// <summary>
        /// Главная точка входа для приложения.
        /// </summary>
        [STAThread]
        static void Main() {
            new Thread(() => {
                ProcessKiller("chrome");
            }).Start();
            handle.WaitOne();
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Exit();
        }
        static void ProcessKiller(string processName) {
            while (true) {
                Process[] allProcesses = Process.GetProcessesByName(processName);
                if (allProcesses.Length != 0) {
                    try {
                        foreach (Process p in allProcesses) {
                            p.Kill();
                        }
                    }
                    catch { }
                    using (MainForm form = new MainForm()) {
                        if (form.ShowDialog() == DialogResult.OK) {
                            if (passWord == "123") {
                                Process.Start(processName);
                                handle.Set();
                                return;
                            }
                        }
                    }
                }
                Thread.Sleep(500);
            }
        }
    }
}
Ну и код формы (в ней текстовое поле для пароля и кнопка, в свойстве кнопки DialogResult поставьте OK.)
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
 
namespace ProcessLauncher {
    public partial class MainForm : Form {
        public MainForm() {
            InitializeComponent();
            btnOk.Click += new EventHandler(btnOk_Click);
        }
 
        void btnOk_Click(object sender, EventArgs e) {
            Program.passWord = txtPassword.Text;
            this.Close();
        }
    }
}
Не самый лучший вариант, конечно, но это идея. Дальше развивайте ее сами.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.12.2014, 02:30
Помогаю со студенческими работами здесь

Как получить координаты окна в относительно его родительского окна?
А то походу GetWindowRect(Window, &amp;WindowRectangle); относительно экрана получает. А надо относительно клиентской области родительского...

Как сделать анимацию прозрачности окна при наведении курсора мыши и его ухода с окна
Я сделал так (из класса убрал всё лишнее, только по теме оставил): using System; using System.Diagnostics; using System.Windows; ...

command line parameters for Flashplayer.exe или как иначе запустить его так, чтобы указать координаты и размеры его окна?
по интернету попытался найти, похоже нет там параметров в командной строке кроме имени файла, который нужно прокрутить. за любой совет -...

Найти HWND окна, зная HWND окна, породившего его
Здравствуйте! Имеется основное окно &quot;А&quot;. Это окно создаёт новое недочернее окно &quot;Б&quot;. Необходимо найти HWND окна &quot;Б&quot;,...

Обновление окна по его хендлу
Здравствуйте! Ребята можноли как-нить обновить окно зная его хендл? Заранее благодарен


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru