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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 06.10.2008, 23:33
Аватар для Electronic_Arts
Electronic_Arts Electronic_Arts вне форума
Местный
 
Регистрация: 13.07.2006
Адрес: на земле
Сообщения: 562
Версия Delphi: Delphi 11
Репутация: 18
Восклицание Работа с чужими окнами

Есть Form2 оно не активна у нее стоит значение Enabled:=false;
Как из своего проги сделать Form2.Enabled:=true;
Активировать чужое окно в чужой проге???

Это возможно - буду благодарен если пояснее обясните...
От примера не откажусь

Заранее благодарю
Ответить с цитированием
  #2  
Старый 07.10.2008, 10:51
Аватар для Thrasher
Thrasher Thrasher вне форума
Illuminati
 
Регистрация: 06.03.2008
Адрес: Крым, г. Симферополь
Сообщения: 348
Репутация: 8808
По умолчанию

А можно по-подробнее задачу поставить? Может быть хватит и ресурс-редактора? Или что?
__________________
Хорошо написанная программа не требует документации
ICQ 9-184-668.
Ответить с цитированием
  #3  
Старый 07.10.2008, 17:54
Drozh Drozh вне форума
Активный
 
Регистрация: 12.06.2008
Сообщения: 313
Репутация: 40
По умолчанию

Код:
var
  Style: DWORD;
  Wnd: HWND;
begin
  Wnd := FindWindow(nil, 'Form2'); // ищем окно

   if Wnd <> 0 then // если нашли...
   begin
    Style := GetWindowLong(Wnd, GWL_STYLE); // берем спсок стилей
    Style := Style and not WS_DISABLED; // убираем ненужный

    SetWindowLong(Wnd, GWL_STYLE, Style); // устанавливаем обновленный
                                          // стиль
    InvalidateRect(0, nil, TRUE); // перерисовываем все окна
   end;
end;
Ответить с цитированием
  #4  
Старый 07.10.2008, 19:04
Аватар для Vayrus
Vayrus Vayrus вне форума
Исполняемый Ретровирус
 
Регистрация: 09.08.2008
Адрес: Umbrella Corporation
Сообщения: 743
Репутация: 1293
Восклицание

Воспользуйся моей программой WinInfo, должно помочь:
"программа для получение информации об окне под курсором. Главная особенность - включение неактивных контролов приложений, если прога, н-р, пробная и не дает нажать кнопку некоторое время. Также показывает пароли скрытые звездочками."

http://www.delphisources.ru/forum/showthread.php?t=5120
Ответить с цитированием
  #5  
Старый 07.10.2008, 21:42
Аватар для Electronic_Arts
Electronic_Arts Electronic_Arts вне форума
Местный
 
Регистрация: 13.07.2006
Адрес: на земле
Сообщения: 562
Версия Delphi: Delphi 11
Репутация: 18
Восклицание

Vayrus - прога супер - но ты можешь дать мне исходник ту части которая активирует не активные кокна и компоненты???
Ответить с цитированием
  #6  
Старый 07.10.2008, 23:07
Аватар для Electronic_Arts
Electronic_Arts Electronic_Arts вне форума
Местный
 
Регистрация: 13.07.2006
Адрес: на земле
Сообщения: 562
Версия Delphi: Delphi 11
Репутация: 18
Восклицание

Есть программа в нем стоит компонент
SysListView32.app3 она не активна - а в нем стоит настройки самой проги - мне нужно активировать это окно из своей проги - как мне это сделать?

Саму прогу написали на Microsoft Visual C# / Basic .NET

Имя класса: WindowsForms10.SysListView32.app3

Программа Vayrus-а умеет активировать это окно - но как то это делает но как???
Ответить с цитированием
  #7  
Старый 07.10.2008, 23:26
Drozh Drozh вне форума
Активный
 
Регистрация: 12.06.2008
Сообщения: 313
Репутация: 40
По умолчанию

Я же писал выше, тебе необходимо найти только HWND окна
Ответить с цитированием
  #8  
Старый 07.10.2008, 23:43
Аватар для Electronic_Arts
Electronic_Arts Electronic_Arts вне форума
Местный
 
Регистрация: 13.07.2006
Адрес: на земле
Сообщения: 562
Версия Delphi: Delphi 11
Репутация: 18
Восклицание

Drozh не помогает - оно просто обновляет все окна и все - это не меняет значение компонента и не активирует отключенный компонент
Ответить с цитированием
  #9  
Старый 08.10.2008, 07:56
Аватар для Vayrus
Vayrus Vayrus вне форума
Исполняемый Ретровирус
 
Регистрация: 09.08.2008
Адрес: Umbrella Corporation
Сообщения: 743
Репутация: 1293
Восклицание

Исходники затерял

Но попробуй это:
ShowWindow(YourWindowHandle, SW_SHOW);

А вообще поройся в Windows SDK, там все есть
Ответить с цитированием
  #10  
Старый 08.10.2008, 21:52
Аватар для Electronic_Arts
Electronic_Arts Electronic_Arts вне форума
Местный
 
Регистрация: 13.07.2006
Адрес: на земле
Сообщения: 562
Версия Delphi: Delphi 11
Репутация: 18
Восклицание

Ребята может я что то не так делаю - ничего не помогает

Код:
 z := FindWindow('WindowsForms10.SysListView32.app3', nil);
 if FindWindow('WindowsForms10.SysListView32.app3', nil) <> 0 then
 begin
  ShowWindow(z, SW_SHOW); // это для показа - а вить окно 
                                          // на котором    
                                         // стоит компонент виден просто она 
                                         //не активна (Enabled:=false;)
  end;
Ответить с цитированием
  #11  
Старый 08.10.2008, 22:11
Аватар для cotseec
cotseec cotseec вне форума
Активный
 
Регистрация: 16.07.2008
Сообщения: 353
Версия Delphi: D7,TDE06,RAD09
Репутация: 1443
По умолчанию

на сколько я знаю необходимо найти сначала само окно (по капшену например), а потом уже на этом окне искать необходимый элемент
SysListView32.app3 - это окно или элемент окна (кнопка, радиобатон и т.д.)?
хотя могу ошибаться, пока других мыслей нет
__________________
Понять, что хочет заказчик - бесценно, ведь он платит MasterCard
Ответить с цитированием
  #12  
Старый 08.10.2008, 23:58
Аватар для Electronic_Arts
Electronic_Arts Electronic_Arts вне форума
Местный
 
Регистрация: 13.07.2006
Адрес: на земле
Сообщения: 562
Версия Delphi: Delphi 11
Репутация: 18
Восклицание

Вот эт главное окно проги
Имя класса окна: WindowsForms10.Window.8.app3 Хендл окна - 000702B4
Как сделали незнаю но все окна которые запускаються в проге имеют одно и те же название класса(WindowsForms10.Window.8.app3)

Хендл окна где находиться компонент которую надо активировать - 001C034C

А вот Имя класса компонента которую надо активировать
WindowsForms10.SysListView32.app3 Хендл компонента - 000D0316


Вот Имя класса кнопок находяшихся на окне проги
WindowsForms10.BUTTON.app3

Выяснил одно что все компоненты и окна отличаються только по заголовку и по хендлу
Ответить с цитированием
  #13  
Старый 09.10.2008, 00:06
Аватар для cotseec
cotseec cotseec вне форума
Активный
 
Регистрация: 16.07.2008
Сообщения: 353
Версия Delphi: D7,TDE06,RAD09
Репутация: 1443
По умолчанию

тогда подход другой нужен, приведенный текст программы, насколько я понял, обеспечивает поиск компонента, класс которого WindowsForms10.SysListView32.app3, а т.к.
Цитата:
Выяснил одно что все компоненты и окна отличаються только по заголовку и по хендлу
то по идее он находит компонент, но не тот, который нужен
З.Ы. мысли вслух, так сказать
__________________
Понять, что хочет заказчик - бесценно, ведь он платит MasterCard
Ответить с цитированием
  #14  
Старый 09.10.2008, 00:35
Аватар для Electronic_Arts
Electronic_Arts Electronic_Arts вне форума
Местный
 
Регистрация: 13.07.2006
Адрес: на земле
Сообщения: 562
Версия Delphi: Delphi 11
Репутация: 18
Восклицание

Ага потому что если написать такую строку то при несколько нажатии на Button1 оно закроет и открытые окна и саму прогу...
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
h: HWND;
begin
h := FindWindow('WindowsForms10.Window.8.app3', nil);
 if FindWindow('WindowsForms10.Window.8.app3', nil) <> 0 then
 begin
      PostMessage(h, WM_close, 0, 0);
end;
end;

как быть?
Ответить с цитированием
  #15  
Старый 09.10.2008, 00:54
Аватар для cotseec
cotseec cotseec вне форума
Активный
 
Регистрация: 16.07.2008
Сообщения: 353
Версия Delphi: D7,TDE06,RAD09
Репутация: 1443
По умолчанию

Есть книжка М Фленов - Delphi глазами хакера там описан метод поиска кнопки "Пуск" на панели задач и много всяких прибамбасов для работы с системными вещами

Цитата:
Итак, чтобы получить контроль над кнопкой Пуск, нужно написать следующий код:
Код:
StartBtnWnd:=FindWindow('Shell_TrayWnd', nil);
StartBtnBmp:=FindWindowEx(StartBtnWnd, 0, 'Button' , nil) ;
Здесь в первой строчке отыскивается окно панели задач. Результат поиска сохраняется в переменной startBtnwnd. Во второй строчке находим саму кнопку Пуск внутри найденной панели задач. Результат этого поиска будет храниться В переменной StartBtnBmp.

посмотри, может поможет
__________________
Понять, что хочет заказчик - бесценно, ведь он платит MasterCard

Последний раз редактировалось cotseec, 09.10.2008 в 00:56.
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

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