Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

api


Страницы:   1 2 3 4

Жаннка ©   (2006-04-24 13:24:00) 

ку,вопросик по api

var
 h: HWND;
 gg:pchar;
begin
h := findwindow('TWINDOWSCMD','Text Windows Commander 5.0 - Any One');
getwindowtext(h,gg,50);
edit2.Text:=gg;

почему то выводит полный бред в эдит:S‹Ш‹Ги\x1E7\x2

как быть?


balepa   (2006-04-26 10:22:00) [21]


> Жаннка   (25.04.06 23:38) [51]

Ну неужели догадаться было трудно ?
WM_SETTEXT это SETTEXT - "Установить текст"


> balepa ©   (25.04.06 07:56) [50]

Это про "чилд" было.


Жаннка   (2006-04-25 23:38:00) [22]

я чего то не пойму уже,вот код который выводит текст последнего эдита:
const
MAX_SIZE = 255;
var
hWindow, hParentWindow: THandle;
buf: PChar;
begin
hParentWindow := FindWindow(nil, 'Form2');
if hParentWindow = 0 then
  Exit;
hWindow := FindWindowEx(hParentWindow,0, 'tdbedit',nil);
if hWindow = 0 then
  Exit;
buf := nil;
try
  GetMem(buf, MAX_SIZE);
  SendMessage(hWindow, WM_GETTEXT, MAX_SIZE, Integer(buf));
edit1.Text:=buf;
finally
  if buf <> nil then
    FreeMem(buf);
end;

А это что? WM_SETTEXT не пойму
SendMessage(GetWindow(mHWND,GW_CHILD),WM_SETTEXT,0,LongInt(S));


balepa   (2006-04-25 07:56:00) [23]

procedure TForm1.Button1Click(Sender: TObject);
var
 S:PChar;
 mHWND: HWND;
begin
 S:='Server'#0;
 mHWND:= FindWindow('TForm1','Form1');
 if mHWND<>0 then
      SendMessage(GetWindow(mHWND,GW_CHILD),WM_SETTEXT,0,LongInt(S));
 else
 begin
   MessageBox(Form1.Handle,'Window not found','Message',16);
 end;
end;


Жаннка   (2006-04-25 07:45:00) [24]


> вместо нуля подставляй хендл найденного "чилда" поиск будет
> от него к следующему по очереди.
>

не поняла как это будет выглядеть,
hWindow := FindWindowEx(hParentWindow, 0, 'tdbedit','текст'); - это же и есь чилд


balepa   (2006-04-25 06:00:00) [25]


> Eraser ©   (24.04.06 14:46) [10]


Это и имелось ввиду.


sniknik   (2006-04-24 20:44:00) [26]

> не задавать  же текст в
> hWindow := FindWindowEx(hParentWindow, 0, 'tdbedit','текст');
вместо нуля подставляй хендл найденного "чилда" поиск будет от него к следующему по очереди.


Жаннка   (2006-04-24 19:34:00) [27]

Заголовок Form2
Class TDBEdit

если на форме один эдит то все номан,а если их многа как тогда?не задавать  же текст в
hWindow := FindWindowEx(hParentWindow, 0, 'tdbedit','текст');


Eraser   (2006-04-24 19:27:00) [28]


> Жаннка   (24.04.06 19:22) [43]

какое название класса или заголовок у окна, на котором edit'ы и названия класса edit'ов?


Жаннка   (2006-04-24 19:27:00) [29]

во,поняла...спасибо за такую помощь!


Жаннка   (2006-04-24 19:22:00) [30]

работает,но только на калькуляторе....меняю на Tform1 или на другое и все...


Eraser   (2006-04-24 19:15:00) [31]


> Жаннка   (24.04.06 18:55) [39]

упс.. эт я параметры местами перепутал... :(
короче вот как я сделал

procedure TForm1.Button1Click(Sender: TObject);
const
 MAX_SIZE = 255;
var
 hWindow, hParentWindow: THandle;
 buf: PChar;
begin
 hParentWindow := FindWindow(nil, 'Калькулятор');
 if hParentWindow = 0 then
   Exit;
 hWindow := FindWindowEx(hParentWindow, 0, 'Edit', nil);
 if hWindow = 0 then
   Exit;
 buf := nil;
 try
   GetMem(buf, MAX_SIZE);
   SendMessage(hWindow, WM_GETTEXT, MAX_SIZE, Integer(buf));
   ShowMessage(buf);
 finally
   if buf <> nil then
     FreeMem(buf);
 end;
end;


Жаннка   (2006-04-24 19:12:00) [32]


> всмысле "пишется"? с какого перепугу туда должно что то
> писаться? )
> что находится в edit'e и что возвращается в st?

в эдите который находиться в другом приложении
в том эдите и строки типа "Отчет" и проста числа "52.000"
а в st - БеА


Eraser   (2006-04-24 19:05:00) [33]


> Жаннка   (24.04.06 18:55) [39]

всмысле "пишется"? с какого перепугу туда должно что то писаться? )
что находится в edit'e и что возвращается в st?
PS попробуй SendMessage(hndl, WM_GETTEXT, Integer(PChar(st [1])), 255);


Жаннка   (2006-04-24 18:55:00) [34]

var
Hndl: THandle;
h,k:hwnd;
st: string;
begin
SetLength(st, 255);
h:=FindWindow('TForm1','Form1');
k:=FindWindow('Tedit',nil);
Hndl:= FindWindowEx(h,k,'TEdit',nil);
SendMessage(hndl, WM_GETTEXT, Integer(PChar(st)), 255);
Label7.Caption:= st;

в эдит пишеться какое то "БеА" ;)


Eraser   (2006-04-24 18:49:00) [35]


> Жаннка   (24.04.06 18:42) [36]


SendMessage(h, WM_GETTEXT, Integer(PChar(st)), 255);


Жаннка   (2006-04-24 18:48:00) [36]

точнее так
var
Hndl: THandle;
h,k:hwnd;
st: string;
begin
SetLength(st, 255);
h:=FindWindow('TForm1','Form1'); parent
k:=FindWindow('Tedit',nil); child -- но как определить конкретный едит
Hndl:= FindWindowEx(h,k,'TEdit',nil);
//SendMessage(hndl,st); -ваще не поняла как функция работает
Label7.Caption:= st;
end;


Жаннка   (2006-04-24 18:42:00) [37]


> Eraser

var
Hndl: THandle;
h:hwnd;
st: string;
begin
SetLength(st, 255);
h:=FindWindow('TForm1','Form1'); нахожу приложение с которым буду работать
Hndl:= FindWindowEx(h, 0, 'Edit',nil); нахожу эдит(кстати как выбрать конкретный эдит,классы и хенделы знаю)
SendMessage(hndl, // как быть дальше запуталась Msg, wParam: Word; lParam: Longint): Longint;
Label7.Caption:= st; //вывод


Eraser   (2006-04-24 18:30:00) [38]


> Жаннка   (24.04.06 18:29) [34]

да.


Жаннка   (2006-04-24 18:29:00) [39]


> Жанна, ну третий раз повторяю, что не будет работать getwindowtext
> для edit'ов в чужом процессе...

посылать sendmessage'ем в каждый эдит?


Жаннка   (2006-04-24 18:27:00) [40]


> причет тип "Edit" не найдется и в дельфевской форме (если
> специально не определить), а уж окно типа "xz" и представить
> себе сложно... (не от х.з. случаем? не "развод" ли?)
>
> p.s. рано за winapi  взялся...

не,xz это типо любая форма;)
в так,есть программа,у нее на форме штук 10 эдитов и я выдираю из них данные и вставляю в свои...с дальнейшими подсчетами и преобразованиями...


Страницы:   1 2 3 4

Наверх

Титульная страница Поиск, карта сайта Написать письмо