Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.02.14;
Скачать: [xml.tar.bz2];




Вниз

Связь между приложениями 


Kurt   (2002-01-29 23:13) [0]

Приветствую.
Знающие люди, как вам такой вот вопросик.
Есть у меня програма, работающая и не мною написаная. И есть у этой програмы поля для ввода параметров. После ввода она их обрабатывает и выдает информацию. Так вот, система ввода у нее для меня не удобная и я хотелбы ее упростить и ускорить. Может быть можно написать програму в которой вводить информацию, а она пускай пересылает ее той програме? Ну что-то вроде моста, пускай автоматически заполняет нужные поля (обычные поля типа TEdit).
Если кто-нибуть представляет как такое делается, то прошу просветить.
Зарание благадарю.



ТеньЛуны   (2002-01-29 23:46) [1]

если программа написана на СОМ технологиях, то может и что получиться. А если нет, то мне кажется, долше писать оболочку-над-оболочкой, так сказать, чем написать всё заново.

С уважением



yaJohn   (2002-01-30 11:18) [2]

Mojno poprobovat". Poishi po forumu nechto vrode "kak emulirovat" najatia klavish dlia chujogo okna". V principe, kajdiy (?) kontrol imeet okno. T.e. mojno iz vneshnego prilojenia emulirovat" emu najatia klavish. No est" eshe vopros, kak HWND dlia kontrola iz chujogo Application uznat".
V obshem - mutornoe zaniatie.



USAtyj   (2002-01-30 12:36) [3]

Вот код для определения хендлов всех (почти) контролов на нужной форме. В нужный эдит вводится текст.
Нажатие кнопки, если че, тоже через SendMessage.


unit Unit1;

interface

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

type
TForm1 = class(TForm)
Memo1: TMemo;
Button1: TButton;
Button2: TButton;
Label1: TLabel;
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
handleF:HWND;
handleARR: array [1..100000] of HWND;
handleID: array [1..100000] of integer;
i,n:integer;
implementation

{$R *.DFM}

procedure TForm1.Button2Click(Sender: TObject);
var NRetries:integer;
iError:string;
Buff: array [0..256] of Char;
begin
NRetries:=0;
iError:="";
handleF:=0;
handleF:=FindWindow(nil,PChar("MyProgram")); // MyProgram - заголовок окна, которое надо найти и в котором контролы определить
if handleF <> 0 then begin
Memo1.Lines.Add("Найдено окно");
n:=0;
for i:=0 to 1000000 do begin
if GetDlgItem(handleF,i)<>0 then begin
n:=n+1;
handleARR[n]:=GetDlgItem(handleF,i);
handleID[n]:=i;
Memo1.Lines.Add(IntToStr(i));
end;
end;
Memo1.Lines.Add("Всего:="+IntToStr(n));
end else begin
iError:="Окно не найдено";
end;;
Memo1.Lines.Add(iError);
for i:=1 to n do begin
if handleID[i] = 8976 then begin
SendMessage(handleARR[i],WM_SETTEXT,0, integer(pchar("9w900888"))); // здесь контролу с хендлом 8976 присваивается текст "9w900888"
end;
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Close;
end;


end.



Набережных С.   (2002-01-30 19:31) [4]

Получаем спипок дескрипторов и классов дочерних окон можно так:

function EnumChildProc(Wnd:HWND; lPrm:LPARAM):bool;stdcall;
var
s:string;
begin
SetLength(s,MAX_PATH+1);
SetLength(s,GetClassName(wnd,pChar(s),MAX_PATH));
TStringList(lPrm).AddObject(s,pointer(Wnd));
Result:=true;
end;

procedure EnumChilds(Handle:HWND);
var
n:integer;
SL:TStringList;
begin
SL:=TStringList.Create;
EnumChildWindows(Handle,@EnumChildProc,integer(SL));
end;

Получить или установить текст в EDIT - Get(Set)WindowText.




Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.02.14;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.73 MB
Время: 0.015 c
3-42691           Макс                  2002-01-22 12:21  2002.02.14  
Как программно присвоить полю Integer значение NULL


6-42828           Дремучий              2001-11-21 19:24  2002.02.14  
Файловая структура веб-узла


1-42770           HDD                   2002-01-30 05:54  2002.02.14  
Помогите пожалуйста!


7-42886           amamed_3071           2001-11-09 13:41  2002.02.14  
Как Форму сохранит в DLL


3-42676           Georg                 2002-01-18 13:27  2002.02.14  
Построение индексов