| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C++ Builder > Закрыть приложение |
| Автор: Папараццы 23.10.2007, 13:12 |
| Мне надо уничтожить процесс со своей программы.. То есть закрыть другую программу. Не получается закрыть программу с использованием TerminateProcess(00000C2C, 0); Где 00000С2С это наш процесс айди. Ошибка: E2121 Function call missing) Также через SendMessage(00000C2C , WM_DESTROY, 0, 0); Таже ошибка. Что делать ?? В чем ошибка.. |
| Автор: dumb 23.10.2007, 13:44 |
| ознакомиться с форматом записи чисел, как минимум. 0x00000C2C. далее - ты что в одну, что в другую функцию суешь pid процесса, в то время как первой нужен хэндл процесса(получаемый из OpenProcess), а второй - хэндл окна(FindWindow/EnumWindows/etc). за примерами - фпоиск по слову TerminateProcess или WM_CLOSE. |
| Автор: Папараццы 23.10.2007, 14:51 |
| Процесс ID постоянно меняется.. Как найти программу если незнаем не пид не хендл ? |
| Автор: Папараццы 23.10.2007, 15:14 | ||
При
Can not convert 'int' to 'void*' |
| Автор: 0lmer 24.10.2007, 15:00 |
Синтаксис HWND FindWindow ( LPCTSTR lpClassName, // указатель на имя класса LPCTSTR lpWindowName // указатель на имя окна ); Параметры lpClassName Указывает на строку с нулевым символом в конце, которая определяет имя класса или - атом, который идентифицирует строку имени класса. Если этот параметр - атом, он должен быть общим атомом, созданным предыдущим вызовом функции GlobalAddAtom. Атом - это 16-разрядное значение, в котором должно быть помещено в младшем слове lpClassName; старшее слово должно быть нулевое. lpWindowName Указывает на строку с нулевым символом в конце, которая определяет имя окна (заголовок окна). Если этот параметр - ПУСТО (NULL), полное соответствие имени окна. Возвращаемые значения Если функция завершилась успешно, возвращаемое значение - дескриптор окна, которое имеет определенное имя класса и имя окна. Если функция терпит неудачу, возвращаемое значение - ПУСТО (NULL). Чтобы получить дополнительные данные об ошибках, вызовите GetLastError. |
| Автор: Папараццы 24.10.2007, 15:21 | ||
Будет ли это работать ? |
| Автор: 0lmer 27.10.2007, 13:38 | ||
скомпилил в билдере, работает. только если заголовок другой (например файл открыт) то не пашет. |
| Автор: THandle 27.10.2007, 18:07 |
| 0lmer, В состав билдера(у меня BDS2006) входит программа ws32.exe с её помощью можно узнать класс окна. |
| Автор: Папараццы 30.10.2007, 14:39 |
| А вот допустим у меня что то введено и при закрытие в виде WM_CLOSE он просит сохранить или не сохранить... Как нажать эту кнопку ? Например кнопку НЕТв диологовом окне "Блакнот" ? |
| Автор: Папараццы 31.10.2007, 08:13 |
| Ну я получил Child и т.д. У меня вопрос как нажать кнопку.. WM_ACTIVATE или что ? |
| Автор: 0lmer 31.10.2007, 12:18 | ||
а если попробовать не WM_CLOSE а WM_DESTROY? Я точно не уверен но может не будет спрашивать про сохранение. |
| Автор: Папараццы 31.10.2007, 15:08 |
| Нет просто после нажатие на ОК в моем приложение будет идти запись в базу данных. |
| Автор: Папараццы 24.4.2008, 14:57 |
| Что делать если WM_DESTROY не работает? А WM_CLOSE закрывает приложение но приложение просит потверждение. Как быть? |
| Автор: 586 24.4.2008, 16:38 | ||
Для MessageBox'a:
|
| Автор: Папараццы 29.4.2008, 12:38 | ||
Я попробовал на блокноте такое провернуть
Но он у меня вместо "ДА" почему то нажимает на принт. Открываетяс страница печяти. |
| Автор: 586 29.4.2008, 13:22 |
Надо в окно MessageBox'а это сообщение отправлять. |
| Автор: Папараццы 30.4.2008, 15:39 |
| Я его не могу поймать. FindWindowEx - не работает. |
| Автор: 586 30.4.2008, 16:24 | ||
|
| Автор: Папараццы 2.5.2008, 10:23 |
| Спасибо за код, сейчас попробую. |
| Автор: Папараццы 2.5.2008, 12:38 |
| Проблема в том что у меня он не перехватывает окно. Т.е. на блокноте он работает. Но на программе к каторой я хочу применить нет. |
| Автор: 586 2.5.2008, 13:07 |
| К каждой программе нужен индивидуальный подход. Если это диалоговое окно, то можно воспользоваться сообщением WM_COMMAND. Если это форма VCL (прога написана в билдере или delphi), по лучше перечислять дочерние окна в этой форме, и сравнивать имя класса и текст в окне. Найденной кнопке отправлять сообщение BM_CLICK. |
| Автор: Папараццы 2.5.2008, 14:09 |
| Не как не могу найти часть шде написано закрыть приложение. Win32 Sight оже не чего не показывает. |
| Автор: 586 2.5.2008, 14:20 |
| Скачай Spy++, там есть "прицел" для поиска окон. |
| Автор: Sept 4.5.2008, 18:31 | ||
| Народ, а как узнать пид процесса по имени ехешника? Вот прошерстил всю хелпу и форум, а ничего другого так и не нашел..
ругается в 4 строке |
| Автор: Sept 4.5.2008, 19:03 |
| оппа! уже не надо. поиск рулит, только пользоваться надо уметь )) |