Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 08.11.2012, 23:19
Metaphor Metaphor вне форума
Прохожий
 
Регистрация: 07.11.2012
Сообщения: 15
Репутация: 10
По умолчанию Ошибка GetWindow

При нажатии на эту кнопку прога зависает

Код:
procedure TForm1.Button4Click(Sender: TObject);
begin
ListBox1.clear;
OpenedHANDLE := GetWindow(handle, gw_hwndfirst);
while OpenedHANDLE <> 0 do
begin
if (OpenedHANDLE <> Application.Handle)
and IsWindowVisible(OpenedHANDLE)
and (GetWindow(OpenedHANDLE, gw_owner) = 0)
and (GetWindowText(OpenedHANDLE, buffer, SizeOf(buffer)) <> 0)

 then
begin
GetWindowText(OpenedHANDLE, buffer, SizeOf(buffer));
ListBox1.Items.Add(StrPas(buffer));
end;
  OpenedHANDLE := GetWindow(handle, gw_hwndnext);
end;
ListBox1.ItemIndex := 0;

end;

Последний раз редактировалось Metaphor, 09.11.2012 в 00:03.
Ответить с цитированием
  #2  
Старый 08.11.2012, 23:54
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Какая-то "каша" намешана. Откуда взялась переменная HANDLE и чем инициализирована? Что вообще хочется получить?
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #3  
Старый 09.11.2012, 00:00
Metaphor Metaphor вне форума
Прохожий
 
Регистрация: 07.11.2012
Сообщения: 15
Репутация: 10
По умолчанию

Переменная HANDLE это моя описка, исправил, но это делу не помогло, процедура должна заполнять ListBox списком открытых окон
Ответить с цитированием
  #4  
Старый 09.11.2012, 00:04
Metaphor Metaphor вне форума
Прохожий
 
Регистрация: 07.11.2012
Сообщения: 15
Репутация: 10
По умолчанию

Ой, извините, я немного не тот код кинул, щас все исправил
Ответить с цитированием
  #5  
Старый 09.11.2012, 00:24
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Так устроит?
Код:
uses
  PSAPI, TlHelp32;
...
function TaskManager : String;
var
  Wnd, pr : HWND;
  buff    : array[0..127] of Char;
  pid     : Cardinal;
  me32    : TModuleEntry32;
begin
  Result := '';
  Wnd := GetWindow(Form1.Handle, GW_HWNDFIRST);
  while Wnd <> 0 do
  begin
    if (Wnd <> Application.Handle) and (GetWindow(Wnd, GW_OWNER) = 0) and (GetWindowText(Wnd, buff, SizeOf(buff)) <> 0) then
    begin
      GetWindowText(Wnd, buff, SizeOf(buff));
      Result := Result + #13#10'Программа: ' + buff + #9#9;
      GetWindowThreadProcessId(wnd, @pid);
      pr := CreateToolHelp32Snapshot(TH32CS_SNAPMODULE, pid);
      me32.dwSize := SizeOf(me32);
      Module32First(pr, me32);
      Result := Result + ' Путь: ' + me32.szExePath;
      CloseHandle(pr);
    end;
    Wnd := GetWindow(Wnd, GW_HWNDNEXT);
  end;
end;

procedure TForm1.Button7Click(Sender: TObject);
begin
  Memo1.Lines.Clear;
  Memo1.Lines.Add(TaskManager);
end;
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 13:22.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter