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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #16  
Старый 09.10.2008, 11:49
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Москва
Сообщения: 2,907
Версия Delphi: Delphi XE
Репутация: выкл
По умолчанию

Electronic_Arts, наверное что-то из набора SetFocus, SetActiveWindow или сообщения WM_SETFOCUS, WM_ACTIVATE?
__________________
Некоторые программисты настолько ленивы, что сразу пишут рабочий код.

Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты.
Ответить с цитированием
  #17  
Старый 09.10.2008, 22:36
Аватар для Electronic_Arts
Electronic_Arts Electronic_Arts вне форума
Местный
 
Регистрация: 13.07.2006
Адрес: на земле
Сообщения: 562
Версия Delphi: Delphi 11
Репутация: 18
Восклицание

Ребята я нашол проблему - когда я использую этот код
Код:
q:=FindWindow('WindowsForms10.Window.8.app3', nil);
w:=FindWindowEx(q, 0, 'WindowsForms10.SysListView32.app3', nil) ;
showwindow(W, sw_hide);
оно скрывает другой WindowsForms10.SysListView32.app3 который находиться в другой окне программы которая даже не в активном состоянии
а всего в проге компонентов WindowsForms10.SysListView32.app3 две штуки а код скрывает только одного несмотря на то что они одинокого имени класса....как лечить?
Ответить с цитированием
  #18  
Старый 10.10.2008, 07:54
Аватар для s0Creator
s0Creator s0Creator вне форума
Местный
 
Регистрация: 20.02.2008
Адрес: Московская область
Сообщения: 420
Репутация: 884
По умолчанию

http://kladovka.net.ru/index.cgi?pid=dir&rid=4&ppn=4
Цитата:
windset.zip (126999 байт)
MagneticLight : 2005-12-31 23:32:11
Получение списка родительских и дочерних окон в компоненте TTreeView в виде дерева (Родительское->Дочернее), в списке предоставляются: дескриптор, класс, заголовок. При выборе, с ними можно оперировать. http://mgclt.h16.ru naumov_@mail.ru
А это сам проект: Оператор окон.zip
Там вродебы все есть что надо.
(Жаль что не мое ).
Ответить с цитированием
  #19  
Старый 10.10.2008, 23:58
Аватар для Electronic_Arts
Electronic_Arts Electronic_Arts вне форума
Местный
 
Регистрация: 13.07.2006
Адрес: на земле
Сообщения: 562
Версия Delphi: Delphi 11
Репутация: 18
Восклицание

s0Creator спасибо тебе огромное но проблема еще остаеться вот выложил скрины посмотрите так наверно попонятнее будет



Так сделал вот так - но ничего не получаеться оно вообше не хочет найти то что мне нужно
Код:
procedure TForm1.Button6Click(Sender: TObject);
var
x : hwnd;
begin
x:=FindWindow('WindowsForms10.SysListView32.app3', nil);
edit1.Text:=trim(copy(IntToStr(x), 0, 9));
EnableWindow(StrToInt(Edit1.Text), True);
end;
и так тоже попробывал тоже ничего не получаеться
Код:
procedure TForm1.Button6Click(Sender: TObject);
var
x, w : hwnd;
begin
x:=FindWindow('WindowsForms10.Window.8.app3', nil);
w:=FindWindowEx(x, 0, 'WindowsForms10.SysListView32.app3', nil) ;
edit1.Text:=trim(copy(IntToStr(w), 0, 9));
EnableWindow(StrToInt(Edit1.Text), True);
end;

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

а если искать не по классу, а по названию окна или и по классу и по названию, т.е.
Код:
procedure TForm1.Button6Click(Sender: TObject);
var
x, w : hwnd;
begin
x:=FindWindow('WindowsForms10.Window.8.app3', 'Начать тест - Демонстрационный режим ');
w:=FindWindowEx(x, 0, 'WindowsForms10.SysListView32.app3', nil) ;
edit1.Text:=trim(copy(IntToStr(w), 0, 9));
EnableWindow(w, True);
end;
да и стоит посмотреть, что хотят функции поиска окон:
Код:
function FindWindow(lpClassName, lpWindowName: PChar): HWND; stdcall;
function FindWindowEx(Parent, Child: HWND; ClassName, WindowName: PChar): HWND; stdcall;
взято из Windows.pas

имхо: в edit лучше кидать после использования хендла найденного окна, а то мало ли "обтримится" не так и обратно из текста преобразуется не очень
должно помочь, по крайней мере думаю, что поможет
__________________
Понять, что хочет заказчик - бесценно, ведь он платит MasterCard
Ответить с цитированием
  #21  
Старый 11.10.2008, 09:30
Аватар для s0Creator
s0Creator s0Creator вне форума
Местный
 
Регистрация: 20.02.2008
Адрес: Московская область
Сообщения: 420
Репутация: 884
По умолчанию

а может так?
Код:
procedure TForm1.Button6Click(Sender: TObject);
var
  x, w, curent : hwnd;
begin
  x:=FindWindow('WindowsForms10.Window.8.app3', nil);
  w := 0;
  while true do
  begin
    w:=FindWindowEx(x, w, 'WindowsForms10.SysListView32.app3', nil) ;
    if w = 0 then
      break;

    //edit1.Text:=trim(copy(IntToStr(w), 0, 9));
    if IsWindowVisible(w) then 
      EnableWindow(w, True);
  end;

end;
или вообще все дочернии
Код:
function WinEnable(WinHandle: HWnd; lParam: LPARAM): Boolean; stdcall;
begin
  Result:=True;
  if IsWindowVisible(WinHandle) then
    EnableWindow(WinHandle, True);
end;

procedure TForm1.Button6Click(Sender: TObject);
var
  x, w, curent : hwnd;
begin
  x:=FindWindow('WindowsForms10.Window.8.app3', nil);
  EnumChildWindows(x, @WinEnable, 0);
end;
Ответить с цитированием
  #22  
Старый 11.10.2008, 11:35
Аватар для Electronic_Arts
Electronic_Arts Electronic_Arts вне форума
Местный
 
Регистрация: 13.07.2006
Адрес: на земле
Сообщения: 562
Версия Delphi: Delphi 11
Репутация: 18
Восклицание

Спасибо огромное этот код работает отлично
Код:
function WinEnable(WinHandle: HWnd; lParam: LPARAM): Boolean; stdcall;
begin
  Result:=True;
  if IsWindowVisible(WinHandle) then
    EnableWindow(WinHandle, True);
end;

procedure TForm1.Button6Click(Sender: TObject);
var
  x, w, curent : hwnd;
begin
  x:=FindWindow('WindowsForms10.Window.8.app3', nil);
  EnumChildWindows(x, @WinEnable, 0);
end;

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

А тут обычная проблема не хочет оно определять компонент WindowsForms10.SysListView32.app3 - незнаю почему...
Код:
procedure TForm1.Button6Click(Sender: TObject);
var
  x, w, curent : hwnd;
begin
  x:=FindWindow('WindowsForms10.Window.8.app3', nil);
  w := 0;
  while true do
  begin
    w:=FindWindowEx(x, w, 'WindowsForms10.SysListView32.app3', nil) ;
    if w = 0 then
      break;
    //edit1.Text:=trim(copy(IntToStr(w), 0, 9));
    if IsWindowVisible(w) then 
      EnableWindow(w, True);
  end;
end;
Ответить с цитированием
  #24  
Старый 11.10.2008, 13:03
Аватар для s0Creator
s0Creator s0Creator вне форума
Местный
 
Регистрация: 20.02.2008
Адрес: Московская область
Сообщения: 420
Репутация: 884
По умолчанию

первый тогда попробуй так
Код:
procedure TForm1.Button6Click(Sender: TObject);
var
  x, w, curent : hwnd;
begin
  x:=FindWindow('WindowsForms10.Window.8.app3', nil);
  w := 0;
  while true do
  begin
    w:=FindWindowEx(x, w, 'WindowsForms10.SysListView32.app3', nil);
    if w = 0 then
      break;

    EnableWindow(w, True);

    w := GetWindow(w, gw_hWndNext);
    if w = 0 then
      break;

  end;

end;
второй так
Код:
function WinEnable(WinHandle: HWnd; lParam: LPARAM): Boolean; stdcall;
var
 buff2 : array [0..127] of Char;
begin
  Result:=True;
  GetClassName(WinHandle, buff2, sizeof(buff2));
  if AnsiSameText('WindowsForms10.SysListView32.app3', AnsiString(buff2)) then
    EnableWindow(WinHandle, True);
end;

procedure TForm1.Button6Click(Sender: TObject);
var
  x, w, curent : hwnd;
begin
  x:=FindWindow('WindowsForms10.Window.8.app3', nil);
  EnumChildWindows(x, @WinEnable, 0);
end;
Ответить с цитированием
  #25  
Старый 11.10.2008, 16:45
Аватар для Electronic_Arts
Electronic_Arts Electronic_Arts вне форума
Местный
 
Регистрация: 13.07.2006
Адрес: на земле
Сообщения: 562
Версия Delphi: Delphi 11
Репутация: 18
Восклицание

спаааааааааааааааааасиииииииииииииииииибоооооооооо ооо
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

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