Удалить окно по хендлу - C (СИ)
Формулировка задачи:
Пытаюсь удалить окно.
Получил хэндл,тут всё норм,но при попытке уничтожить окно функция возвращает ноль,т.е. фолс.В чём причина ? Также хотелось бы узнать,как проще всего через API получить хендлы любого окна,к примеру,окна qip-а,msn или internet explorer.В моём варианте слишком длинное имя заголовка получается,где оч легко можно ошибиться.
ЗЫ: Также хотелось бы увидеть пример,где передаются произвольные символы окну,скажем,окну qip или блокноту).Эт была моя маленькая задумка... )
int main() { HWND w; w = FindWindow(NULL,"Untitled - Notepad"); DestroyWindow(w); system("PAUSE"); }
Решение задачи: «Удалить окно по хендлу»
textual
Листинг программы
#include <windows.h> #include <stdio.h> int main() { HWND w; printf ("w= %x\n", w = FindWindow(NULL,"C:\\WINDOWS\\system32\\cmd.exe") ); SendMessage (w, WM_CLOSE, 0, 0); system("PAUSE"); }
Объяснение кода листинга программы
В этом коде:
w
объявлен какHWND
, что является дескриптором окна в операционной системе Windows.FindWindow(NULL,
C:\WINDOWS\system32\cmd.exe)
используется для поиска окна с заданным заголовком. ЗдесьC:\\WINDOWS\\system32\\cmd.exe
это заголовок окна, которое мы ищем.SendMessage(w, WM_CLOSE, 0, 0)
используется для отправки сообщения закрытия окна с дескрипторомw
.system(
PAUSE)
используется для приостановки выполнения программы до тех пор, пока пользователь не нажмет любую клавишу. Это обычно используется для предотвращения закрытия программы сразу после выполнения. Следует отметить, что использованиеFindWindow
иSendMessage
может представлять определенные риски безопасности, если они используются неправильно.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д