Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Офф-топ

Страница: 1 | 2 | 3 |

 

  Вопрос: Очччень Нужна прога... Добавлено: 20.08.04 02:44  

Автор вопроса:  Lister | ICQ: 298621256 
Народ, нужна программа, которая закрывала бы некоторые запущенные приложения по таймеру в назначенное время...

Може кто-нито что-нибудь подобное видел???

Ответить

  Ответы Всего ответов: 35  

Номер ответа: 1
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #1
Добавлено: 20.08.04 03:28
 Сам напиши ;)

Ответить

Номер ответа: 2
Автор ответа:
 Lister



ICQ: 298621256 

Вопросов: 57
Ответов: 304
 Профиль | | #2 Добавлено: 20.08.04 03:41
Пробовал - у меня получается написать её "убивание" через TerminateProcess, а не закрытие...

Вот и спрашиваю, есть ли такая утилита... в природе.

Ответить

Номер ответа: 3
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #3
Добавлено: 20.08.04 03:53
 Если вместо TerminateProcess попробовать ExitProcess?

Ответить

Номер ответа: 4
Автор ответа:
 Lister



ICQ: 298621256 

Вопросов: 57
Ответов: 304
 Профиль | | #4 Добавлено: 20.08.04 04:00
Если мне не изменяет память, ExitProcess не имеет идентификатора этого процесса, поэтому при её использовании закрывается не нужная программа, а сам VB :))) (при отладке)

Ответить

Номер ответа: 5
Автор ответа:
 Lister



ICQ: 298621256 

Вопросов: 57
Ответов: 304
 Профиль | | #5 Добавлено: 20.08.04 04:03
Я даже хотел использовать SendMessage вместе с WM_QUIT... но мне нужен hWnd окна закрываемого приложения. А по экзешнику его не определишь. Или не так?

Ответить

Номер ответа: 6
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #6
Добавлено: 20.08.04 04:21
 Хендл процесса ты тут указываешь.
BOOL GetExitCodeProcess(
  HANDLE hProcess, // handle to the process
  LPDWORD lpExitCode // address to receive termination status
);

 Хотя может и не пашет. На PB вроде работало.

Ответить

Номер ответа: 7
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #7
Добавлено: 20.08.04 04:24
 По hWnd можно найти PID(GetWindowThreadProcessID), а потом можно GetModuleFileName. Это имя экзешника.

Ответить

Номер ответа: 8
Автор ответа:
 Lister



ICQ: 298621256 

Вопросов: 57
Ответов: 304
 Профиль | | #8 Добавлено: 20.08.04 04:36
А наоборот - найти hWnd окна по имени экзешника?

Ответить

Номер ответа: 9
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #9
Добавлено: 20.08.04 04:44
GetModuleHandle

Ответить

Номер ответа: 10
Автор ответа:
 User Unknown



Вечный Юзер!

ICQ: uu@jabber.cz 

Вопросов: 120
Ответов: 3302
 Профиль | | #10 Добавлено: 20.08.04 10:07
ncron смотри... он многое умеет;)

Ответить

Номер ответа: 11
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #11
Добавлено: 20.08.04 13:55
Так, ExitProcess и тому подобные - ничем тут не помогут, лично я сделал фишку:
    1. Есть PID процесса
    2. Есть функция перебора всех окошек в системе
    3. Есть функция GetWindowThreadProcessId
    4. Большинство GUI приложений имеют окошки, и опосля их закрытия, выходят...

А теперь сидим и думаем, как эти 4 пункта соединить воедино :) Думаю затруднений никаких не будет ;)

Ответить

Номер ответа: 12
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #12
Добавлено: 20.08.04 15:46
 Закрывать можно так:
SendMessage hWnd, WM_SYSCOMMAND,SC_CLOSE,0,0

Ответить

Номер ответа: 13
Автор ответа:
 Lister



ICQ: 298621256 

Вопросов: 57
Ответов: 304
 Профиль | | #13 Добавлено: 20.08.04 15:54
Опять же получается та же самая петрушка - нужен хендл окна закрываемого приложения...<img src="http://vbnet.ru/forum/images/103.gif" width="15" height="15" border="0">

Ответить

Номер ответа: 14
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #14
Добавлено: 20.08.04 20:13
 См. ответ 11, пункт 2
 FindWindowEx или EnumWindows

Ответить

Номер ответа: 15
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #15
Добавлено: 20.08.04 20:47
 По порядку.
 Дано: Имя экзешника.
 Найти: Все его hWnd

1. Получаем идентификатор процесса с помощью GetModuleHandle.
2. Ищём все окна с помощью FindWindowEx или EnumWindows.
2.1. Получив номер очередного окна находим его идентификатор процесса с помощью GetWindowThreadProcessId.
2.2. Сверяем PID экзешника и PID окна. Если совпадают, значит окно от этого экзешника.
2.2.1. Если совпало, заставляем окно закрыться с помощью WM_QUIT(не проверял) или SC_CLOSE.

Ответить

Страница: 1 | 2 | 3 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам