Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения
KANSoftWare

Удалить таймер в Delphi (kill timer) по заголовку окна

Delphi , Программа и Интерфейс , Приложения чужие

Code:

var
Hinst : THandle;
WndArr : array of THandle;
Wnd : THandle;
......
Procedure KillDelphiWndTimers(const AppCaption:string);
var i : integer;
function GetTimerWindows(Handle: HWND; Info: Pointer): BOOL; stdcall;
const
sClName ='TPUtilWindow';
var
s : String;
begin
Result := True;
SetLength(s,Length(sClName)+1);
GetClassName(Handle, PChar(s),Length(s));
SetLength(s,Length(sClName)); :)
if (GetWindowLong(Handle, GWL_HINSTANCE) = Hinst ) and (s=sClName)
then
begin
SetLength(WndArr,High(WndArr)+2);
WndArr[High(WndArr)]:=Handle;
end;
end;
begin
Wnd:=FindWindow(nil,Pchar(AppCaption));
if Wnd=0 then Exit;
hinst:=GetWindowLong(Wnd, GWL_HINSTANCE);
EnumWindows(@GetTimerWindows,0);
for i:=0 to High(WndArr) do KillTimer(WndArr[i],1);
end;
 

Автор: Radmin

Взято с Vingrad.ru http://forum.vingrad.ru

Программный код на Delphi, который ищет и уничтожает окна таймера для приложения с конкретным заголовком. Вот разбивка кода:

Переменные и константы

  • Hinst: переменная типа THandle, которая хранит инстанс-указатель основного окна.
  • WndArr: массив THandle значений, который будет хранить указатели на найденные окна таймера.
  • Wnd: переменная типа THandle, которая хранит указатель на основное окно (найденное с помощью FindWindow).
  • sClName: константная строка, содержащая имя класса окон таймера ('TPUtilWindow').
  • s: переменная типа String, используемая для хранения имени класса, полученного из окна.
  • AppCaption: параметр типа string, который specifies заголовок приложения, для которого нужно найти и уничтожить окна таймера.

Процедура KillDelphiWndTimers Эта процедура принимает строку AppCaption в качестве входного параметра и выполняет следующие шаги: 1. Найдет основное окно с указанным заголовком с помощью FindWindow. 2. Если не найдено основное окно, выйдет из процедуры. 3. Получит инстанс-указатель основного окна с помощью GetWindowLong. 4. Вызовет EnumWindows для перечисления всех окон в системе, передавая указатель на функцию GetTimerWindows как callback-функцию. 5. Переберет массив WndArr и уничтожит каждое окно таймера с помощью KillTimer.

Функция GetTimerWindows Эта функция вызывается EnumWindows для каждого окна, найденного при перечислении окон. Она проверяет, совпадает ли имя класса окна с sClName, и если инстанс-указатель окна равен Hinst. Если обе условия истинны, она добавляет указатель на окно в массив WndArr.

Предложения по улучшению 1. Код предполагает, что окна таймера имеют конкретное имя класса ('TPUtilWindow'). Было бы более надежно использовать регулярное выражение или более конкретный алгоритм для поиска. 2. Код использует GetWindowLong для получения инстанс-указателя основного окна, что может не работать, если основное окно создано с помощью другой техники (например, с помощью третьей-сторонней библиотеки). 3. Код предполагает, что все окна таймера типа TPUtilWindow. Если есть другие типы окон таймера, это подход может не быть эффективным. 4. Код не обрабатывает ошибки или исключения должным образом. Было бы лучше использовать блоки try-except для ловли потенциальных ошибок и предоставления значимых сообщений об ошибках.

В целом, код кажется достигать своей цели поиска и уничтожения окон таймера для конкретного приложения. Однако он может улучшиться в плане надежности, обработки ошибок и гибкости.

Статья "Удалить таймер в Delphi (kill timer) по заголовку окна" описывает процедуру, которая позволяет найти и остановить таймеры в приложении Delphi, используя заголовок окна.


Комментарии и вопросы


Ваше мнение или вопрос к статье в виде простого текста (Tag <a href=... Disabled). Все комментарии модерируются, модератор оставляет за собой право удалить непонравившейся ему комментарий.

заголовок

e-mail

Ваше имя

Сообщение

Введите код




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: Приложения чужие ::


реклама



©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-06-02 10:20:12
2024-06-14 04:58:38/0.0035958290100098/0