Поиск:

Ответ в темуСоздание новой темы Создание опроса
> taskkill, Принудителное закрытие программы 
:(
    Опции темы
Гость_max07
Дата 18.1.2005, 01:10 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Как програмно сделать принудителное закрытие программы? Типа как в Task Meneger Processes.
  Вверх
Adil'
Дата 18.1.2005, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 311
Регистрация: 26.8.2004
Где: Питер

Репутация: 4
Всего: 15



TerminateProccess


--------------------
Удачи
PM MAIL WWW   Вверх
Гость_max07
Дата 24.1.2005, 19:37 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











А поподробней можно?
  Вверх
_hunter
Дата 24.1.2005, 20:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 24
Всего: 98



подробнее:
делаеш снимок всех процессов в системе ( соответственно имееш handle процесса )
и для нужного тебе выполняеш TerminateProccess()


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Гость_max07
Дата 25.1.2005, 00:03 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Но TerminateProcess() ето толко функция. Как выглядит само закрытие? Что писат в етой функции?
  Вверх
Гость_max07
Дата 25.1.2005, 00:32 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Мне нужно закрыть окно например С: диска из моей проги. Ето тоже с TerminateProcess() ?
  Вверх
azesmcar
Дата 25.1.2005, 09:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 6
Всего: 211



Код

void TerminateProcess( DWORD PID )
{
   HANDLE hProcess = OpenProcess(  PROCESS_TERMINATE, true, PID );
   TerminateProcess( hProcess, 0 );
}

void main()
{
   TerminateProcess( 3128 );
}


Этот код убьет процесс с PID-ом 3128...Процесс в системе виндоуз идентифицируется с помощью PID-а. Process ID. Его можно увидить в TaskManager если поставить соответствующие настройки...по дефолту он не показывает...можно получить список всех процессов в виндоуз...
Посмотри примеры MSDN CreateToolhelp32Snapshot.
Добавлено @ 09:34
Цитата
Мне нужно закрыть окно например С: диска из моей проги. Ето тоже с TerminateProcess() ?
нет, его нужно CloseWindow()
Потому что твое окно диска Ц на самом деле поток основного процесса explorer.exe если убьешь его закроются все окошки..и в зависимости от uExitCode сам себя заново запустит или нет...

А CloseWindow получает HWND который ты сможешь получить с помощю FindWindow...
PM   Вверх
Гость_max07
Дата 25.1.2005, 13:28 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Но CloseWindow() не закрывает окно а опускает в таскбар. По крайней мере у меня так получается. Может что то не так пишу?

HANDLE hWnd;
hWnd = GetForegroundWindow();
char szTitle[41] = {0};
GetWindowText(hWnd,szTitle,40);
if(AnsiString(szTitle) == "C:\\")
CloseWindow(hWnd);

Примерно так.
  Вверх
azesmcar
Дата 25.1.2005, 14:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 6
Всего: 211



Цитата
Но CloseWindow() не закрывает окно а опускает в таскбар. По крайней мере у меня так получается. Может что то не так пишу?


Извиняюсь, совсем забыл..выписка из MSDN
Цитата
The CloseWindow function minimizes (but does not destroy) the specified window.


Для этого есть DestroyWindow()

Но что он он не очень хочет работать в данном случае...надо немножко поэкспериментировать а времени нет...

Код

void CloseWindow(HWND hWnd)
{
  SendMessage(hWnd, WM_DESTROY, 0, 0);
  SendMessage(hWnd, WM_NCDESTROY, 0, 0);
}

Так нормально работает...
Добавлено @ 14:08
Но DestroyWindow много чего другого делает что здесь не написано...грамотней будет его использовать...
Добавлено @ 14:09
Цитата
The DestroyWindow function destroys the specified window. The function sends WM_DESTROY and WM_NCDESTROY messages to the window to deactivate it and remove the keyboard focus from it. The function also destroys the window's menu, flushes the thread message queue, destroys timers, removes clipboard ownership, and breaks the clipboard viewer chain (if the window is at the top of the viewer chain).


Проверь, может у тебя заработает, у меня не решается...

Это сообщение отредактировал(а) azesmcar - 25.1.2005, 14:07
PM   Вверх
_hunter
Дата 25.1.2005, 17:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 24
Всего: 98



ты это:
Цитата
A thread cannot use DestroyWindow to destroy a window created by a different thread.

учел?


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
azesmcar
Дата 26.1.2005, 08:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 6
Всего: 211



Уже учел...smile

Вчера не дочитал..потом посмотрел...ну главное так работает, я так думаю об остальном експлорер сам заботится...но не уверен
Код

SendMessage(hWnd, WM_DESTROY, 0, 0);
SendMessage(hWnd, WM_NCDESTROY, 0, 0);

PM   Вверх
Гость_max07
Дата 31.1.2005, 15:55 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Не убивает етот код прогу. Может ест ещё варианты?
  Вверх
Гость_max07
Дата 2.2.2005, 19:32 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











А есть что нибуть похожее на TerminateProccess() толко не с PID а с Handle' oм?
  Вверх
_hunter
Дата 2.2.2005, 20:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 24
Всего: 98



есть:
Код
BOOL TerminateProcess(
   HANDLE hProcess, // handle to the process
   UINT uExitCode  // exit code for the process  
  );



--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Гость_max07
Дата 10.2.2005, 23:02 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











А можно пример исползования?
  Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.1051 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.