Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.05.21;
Скачать: CL | DM;

Вниз

api   Найти похожие ветки 

 
Eraser ©   (2006-04-24 19:05) [40]


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

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


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


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

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


 
Eraser ©   (2006-04-24 19:15) [42]


> Жаннка   (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:22) [43]

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


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

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


 
Eraser ©   (2006-04-24 19:27) [45]


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

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


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

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

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


 
sniknik ©   (2006-04-24 20:44) [47]

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


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


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


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


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


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

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


 
balepa ©   (2006-04-25 07:56) [50]

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 23:38) [51]

я чего то не пойму уже,вот код который выводит текст последнего эдита:
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-26 10:22) [52]


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

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


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

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


 
Жаннка   (2006-04-26 12:17) [53]

дык я поняла что это установить,мне то надо получить, а не установить


 
balepa ©   (2006-04-26 12:40) [54]


> Жаннка   (26.04.06 12:17) [53]


ДЫК WM_GETTEXT

У тебя ж вроде уже получилось ?


 
Жаннка   (2006-04-26 13:28) [55]

получилось,но пролема в том,что если на форме другого приложения не один edit,то я получаю текст ИЗ ПОСЛЕДНЕГО едита,а мне нужно из конкретного


 
balepa ©   (2006-04-26 13:50) [56]

А програмка в которой эдиты тобою писана ?


 
Жаннка   (2006-04-26 13:59) [57]

да,мной,но это для того чтоб научиться,дальше надо будет из базы данных нашей фирмы


 
balepa ©   (2006-04-26 14:09) [58]


> Жаннка   (26.04.06 13:59) [57]


Так из базы или с эдитов ?


 
Жаннка   (2006-04-26 14:11) [59]

пока из эдитов


 
balepa ©   (2006-04-26 14:35) [60]

В приложении с эдитами сделай хотя бы свой обработчик собственных сообщений.


 
Жаннка   (2006-04-26 14:38) [61]

хм...а если это не мое приложение,тогда как


 
balepa ©   (2006-04-26 14:42) [62]

Разберитесь сначала откуда надо брать информацию в конечном итоге.


 
Жаннка   (2006-04-26 14:44) [63]

есть приложение, на нем 6 эдитов,вот из них надо вытащить текст


 
balepa ©   (2006-04-26 14:52) [64]

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/windowing/windows/windowreference/windowfunctions/enumchildwindows.asp

Посмотри может это то что нужно.


 
Жаннка   (2006-04-27 16:01) [65]

то наверно,но разобраться не могу :(
вот пробую такой текст
var
Hndl,h: THandle;
st: string;
begin
SetLength(st, 255);
FillChar(st[1],255,0);
h:=FindWindow(nil,"Form2");
Hndl:= FindWindowEx(h,0,"tdbedit",nil);
SendMessage(hndl,WM_GETTEXT,255, Integer(@st[1]));
Label1.Caption:= st;
опять же с последнего эдита берет..


 
balepa ©   (2006-04-27 17:18) [66]

http://delphimaster.net/view/4-1145516275/

function ChildWnd(h:THandle; wparam:integer): Bool;stdcall;
var
 Text: array [0..256] of Char;
begin
GetWindowText(h, text, 200);
if Text = "Edit1" then
 Form1.Label1.Caption:= Text
else if Text = "Edit2" then
 Form1.Label2.Caption:= Text
else if Text = "Edit3" then
 Form1.Label3.Caption:= Text
else if Text = "Edit4" then
 Form1.Label4.Caption:= Text;
result:=true;
end;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
 h: hwnd;
begin
 EnumChildWindows(Form1.Handle,@ChildWnd,0);
end;


 
balepa ©   (2006-04-28 06:38) [67]

function EnumProc(h: HWND;lparam: Integer): Boolean;
var
 N: PChar;
begin
 getmem(N,51);
 GetClassName(h,N,50);
 if N = "TEdit" then
   MessageBox(Form1.Handle,"ff","ff",16);
 freemem(N,51);
result:= True;
end;
{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
 EnumChildWindows(Form1.Handle,@EnumProc,0);
end;


 
Жаннка   (2006-04-28 13:52) [68]

вот код,вытаскивает из эдитов на форме текст,а как быть если эдит находится на panel или pagecontrol,нашла функцию
EnumChildWindows(WndParent: HWnd; EnumFunc: TFarProc; lparam: Longint): Bool;
WndParent - эт понятно,а с enumfunc и lparam как быть?
посмарела предыдущий пост чет не врубаюсь
var
Hndl,h: THandle;
st: string;
begin
SetLength(st, 255);
FillChar(st[1],255,0);
h:=FindWindow(nil,"Form1");
Hndl:= FindWindowEx(h,0,"TEdit",nil);
SendMessage(hndl,WM_getTEXT,255, Integer(@st[1]));
edit1.text:= st;
Hndl:= FindWindowEx(h,Hndl,"TEdit",nil);
SendMessage(hndl,WM_getTEXT,255, Integer(@st[1]));
edit2.text:=st;


 
balepa ©   (2006-04-28 13:56) [69]


> Жаннка   (28.04.06 13:52) [68]


Во что неврубаетесь ?


 
Жаннка   (2006-04-28 14:00) [70]

как работать с функцией EnumChildWindows
а точнее EnumFunc: TFarProc; lparam: Longint
что с ними делать?


 
balepa ©   (2006-04-28 14:09) [71]


> Жаннка   (28.04.06 14:00) [70]
> как работать с функцией EnumChildWindows
> а точнее EnumFunc: TFarProc; lparam: Longint
> что с ними делать?


Издеваетесь ?
Вот так ее нужно описать перед словом Interface
function EnumProc(h: HWND;lparam: Integer): Boolean; STDCALL;

А вот это после слова interface;
function EnumProc(h: HWND;lparam: Integer): Boolean;
//h = handle эдита
var
N: PChar;
begin
getmem(N,51);
GetClassName(h,N,50);
if N = "TEdit" then
  MessageBox(Form1.Handle,"ff","ff",16); //вот здесь берете текст с эдита с помощью Sendmessage(....); и вставляете куда вам надо.
freemem(N,51);
result:= True;
end;


 
balepa ©   (2006-04-28 14:38) [72]


> balepa ©   (28.04.06 14:09) [71]


з.ы. сори не interface, а implementation



Страницы: 1 2 вся ветка

Текущий архив: 2006.05.21;
Скачать: CL | DM;

Наверх




Память: 0.61 MB
Время: 0.042 c
5-1132135864
Shopot
2005-11-16 13:11
2006.05.21
Где достать компоненты?


3-1143974013
Alex Romanskiy
2006-04-02 14:33
2006.05.21
Out парметры в ХП MySQL


15-1146121485
Darvin
2006-04-27 11:04
2006.05.21
Дальность передачи данных по usb


2-1147022953
Первокласник Вася
2006-05-07 21:29
2006.05.21
Terminate или Close?


15-1146151811
pasha_golub
2006-04-27 19:30
2006.05.21
Бильярдные симуляторы