Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.08.2015, 22:33   #21
WhatO_o?!
Пользователь
 
Регистрация: 11.06.2011
Сообщений: 54
По умолчанию

Цитата:
Сообщение от DIONISKA Посмотреть сообщение
Скачал я ваш Aion, дабы проверить всё, и у меня плохие новости

Код:
SetWindowPos(handle,0,0,0,0,0,SWP_HIDEWINDOW or SWP_NOSIZE or SWP_NOZORDER);
без проблем скрыло окно отовсюду, однако искал хэндл окна я малость по-другому

Код:
...
var mylist  :tstrings;
...
procedure getwinhandlelist(var alist: tstrings;const maxi:integer);
var
 vis          :boolean;
 wnd          :hwnd;
 i            :integer;
begin
i:=0;
if not(assigned(alist)) then alist:=tstringlist.Create;
wnd := GetWindow(application.handle, gw_hwndfirst);
while wnd <> 0 do
   begin
   vis:=IsWindowVisible(wnd);   {Vis:=true; если нужно учитывать невидимые окна}
   if (vis) and (GetWindow(wnd, gw_owner) = 0) then
     begin
       alist.Add(inttostr(wnd));
       inc(i);
       if i>maxi then break;
       if i mod 2=0 then application.ProcessMessages;
     end;
   wnd := GetWindow(wnd, gw_hwndnext);
   end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  mylist:=tstringlist.Create;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  mylist.free;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
    I       : Integer;
    buff    : array [0..127] of char;
    s      :string;
begin
mylist.clear;
getwinhandlelist(mylist,2000); {2000 здесь максимальное число итераций для предотвращения зацикливания}
{в итоге в mylist будут хэндлы всех видимых окон}
{не стоит забывать что скрывать Programm Manager не стоит}
for I := 0 to mylist.Count-1 do
begin
 fillchar( buff, SizeOf(buff),#0);
 GetWindowText(strtoint(mylist[i]), buff, SizeOf(buff));
 s:=buff;
{... тут уже проводить проверки и неугодные окна скрывать}
 if pos('AION client',s)<>0 then SetWindowPos(strtoint(mylist[i]),0,0,0,0,0,SWP_HIDEWINDOW or SWP_NOSIZE or SWP_NOZORDER);
{окно клиента игры имеет заголовок "AION client" его мы и скроем}
end;

Ого! Спасибо огромное!

зы: но способ не спас, едва запускаю программу - пишет детектед читед программ только как он определяет не пойму... программа же висит в фоне, и никого не трогает...
Здесь могла бы быть ваша реклама
WhatO_o?! вне форума Ответить с цитированием
Старый 15.08.2015, 22:48   #22
WhatO_o?!
Пользователь
 
Регистрация: 11.06.2011
Сообщений: 54
По умолчанию

Понято, нельзя в программном коде упоминать "AION Client"... с инишником проканало! Всем спасибо!
Здесь могла бы быть ваша реклама
WhatO_o?! вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
SW_HIDE не блокирует вывод программы Effort Помощь студентам 1 15.06.2011 22:06
ShowWindow(...., SW_SHOW) возвращает 0 Парсифаль Win Api 4 12.03.2010 04:21
Как узнать handle окна имея handle обного из его компонентов SeRhy Win Api 2 18.10.2009 19:31
Как имея handle окна узнать handle edit-a который находится в етом окне SeRhy Общие вопросы Delphi 1 20.07.2008 13:48