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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.11.2007, 17:52   #11
Domovoy
Форумчанин
 
Регистрация: 24.10.2007
Сообщений: 254
По умолчанию

Заработало с того что он сделал так FindWindowEx(h,0,0,'');
указав пустоту
Domovoy вне форума Ответить с цитированием
Старый 13.11.2007, 20:58   #12
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
Сообщение от Domovoy Посмотреть сообщение
Заработало с того что он сделал так FindWindowEx(h,0,0,'');
указав пустоту
Это - несерьезно. Давайте все-таки разберемся с поиском по имени класса объекта. Почему не получается, хотя в винапишном хэлпе все подробно прописано?
Модераторы, подключайтесь! На вас смотрит весь форум!
mihali4 вне форума Ответить с цитированием
Старый 13.11.2007, 21:18   #13
_Dmitry
Участник клуба
 
Аватар для _Dmitry
 
Регистрация: 02.09.2007
Сообщений: 1,193
По умолчанию

Получилось после замены nil на имя класса
h:=FindWindow('TForm1','Form1');
_Dmitry вне форума Ответить с цитированием
Старый 13.11.2007, 21:23   #14
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
Сообщение от _Dmitry Посмотреть сообщение
Получилось после замены nil на имя класса
h:=FindWindow('TForm1','Form1');
Немного не по теме. Этот вопрос решен. Вопрос в FindWindowEx по имени класса.
mihali4 вне форума Ответить с цитированием
Старый 13.11.2007, 21:25   #15
_Dmitry
Участник клуба
 
Аватар для _Dmitry
 
Регистрация: 02.09.2007
Сообщений: 1,193
По умолчанию

Этот код загоняет текст в Edit калькулятора Windows XP
Код:
procedure TForm1.Button1Click(Sender: TObject);
var h,sh: integer;
begin
h:=FindWindow('SciCalc','Калькулятор');
Label1.Caption:=IntToStr(h);
sh:=FindWindowEx(h,0,'Edit',0);
Label2.Caption:=IntToSTr(sh);
SendMessage(sh,WM_SETTEXT,0,LParam(PChar('MyText222')));
Application.ProcessMessages;
end;
Имена и классы определял с помощью InqSoft
_Dmitry вне форума Ответить с цитированием
Старый 13.11.2007, 21:51   #16
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
Сообщение от _Dmitry Посмотреть сообщение
Этот код загоняет текст в Edit калькулятора Windows XP
Имена и классы определял с помощью InqSoft
Почитайте мои посты, сделайте по ним парочку простейших формочек и... ваш фокус не пройдет.
Более того, при указании и имени класса, и имени окна даже окно не находится!
mihali4 вне форума Ответить с цитированием
Старый 14.11.2007, 07:25   #17
nechto
Пользователь
 
Аватар для nechto
 
Регистрация: 13.11.2007
Сообщений: 26
По умолчанию

Я имел ввиду, что ваш код работает спасибо огромное, а вот мой код не работает.
nechto вне форума Ответить с цитированием
Старый 14.11.2007, 07:49   #18
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Более того, при указании и имени класса, и имени окна даже окно не находится!
Да, я тоже столкнулся с этим феноменом, и не понял почему...
Перешел на Enum'ы и проблема исчезла...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 14.11.2007, 09:17   #19
nechto
Пользователь
 
Аватар для nechto
 
Регистрация: 13.11.2007
Сообщений: 26
По умолчанию

Уважаемый, Stilet, а не моглы бы вы привести пример кода с использованием EnumWindow, потому, что у меня 7Delphi его не понимает.
nechto вне форума Ответить с цитированием
Старый 14.11.2007, 09:37   #20
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Могу:
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    ListBox1: TListBox;
    ListBox2: TListBox;
    procedure ListBox1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
       function enumWindow_Crtfox_Enum(h:THandle;l:integer):boolean; stdcall;
       function enumCWindow(h:THandle;l:integer):boolean; stdcall;
    function WindowCaption(wind:hwnd=0):string;
 function WindowClass(wind:hwnd):string;

var  a:array of hwnd;
  Form1: TForm1;

implementation

{$R *.dfm}
        //********** FUNCTION **********
 function WindowClass;
 var Nm:Array[0..255] of Char;
 begin
    nm:='';
    GetClassName(Wind,Nm,sizeof(nm)); // ñ÷èòûâàåì  òåêñò çàãîëîâêà îêíà
    result:=string(nm);
 end;
 //********** END FUNCTION ******

 //********** FUNCTION **********
 function WindowCaption;
 var Nm:Array[0..255] of Char;
 begin
    if wind =0 then wind:=GetForegroundWindow; 
    GetWindowText(Wind,Nm,sizeof(nm)); // ñ÷èòûâàåì  òåêñò çàãîëîâêà îêíà
    result:=string(nm);
 end;
 //********** END FUNCTION ******

  function enumWindow_Crtfox_Enum;
   var i:integer;
   begin
    result:=true;
    Form1.ListBox1.Items.Add(WindowCaption(h)+' ('+WindowClass(h)+')');
    SetLength(a,length(a)+1);
   EnumChildWindows(h,@enumCWindow,0);
    i:=length(a);
    a[i-1]:=h;
   end;

  function enumCWindow;
   begin
    result:=true;
    Form1.ListBox1.Items.Add('|-----'+WindowCaption(h)+' ('+WindowClass(h)+')');
   end;

procedure TForm1.ListBox1Click(Sender: TObject);
begin
  ListBox2.Items.Clear;
  EnumChildWindows(a[ListBox1.ItemIndex],@enumCWindow,0);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
      EnumWindows(@enumWindow_Crtfox_Enum,0);
end;

end.
Цитата:
потому, что у меня 7Delphi его не понимает
Странное Делфи, наверное на для винды...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как имея handle окна узнать handle edit-a который находится в етом окне SeRhy Общие вопросы Delphi 1 20.07.2008 13:48
Запуск своего модуля из чужой программы Volkogriz Общие вопросы Delphi 7 16.10.2007 05:19
Завершение работы чужой программы Viteef Win Api 12 24.09.2007 12:31
Не могу найти KlErik Общие вопросы Delphi 4 11.01.2007 11:40