Форум: "Начинающим";
Текущий архив: 2006.05.21;
Скачать: [xml.tar.bz2];
Вниз
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;
Скачать: [xml.tar.bz2];
Память: 0.61 MB
Время: 0.019 c