Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Externe Editbox mit Programm befüllen (https://www.delphipraxis.net/152519-externe-editbox-mit-programm-befuellen.html)

WizoHulk 25. Jun 2010 10:22

Externe Editbox mit Programm befüllen
 
Hallo

Ich hoffe ich habe jetzt nicht unnötig einen neuen Thread erstellt, denn ich habe nichts zu mein problem gefunden.

Und zwar habe ich ein Programm wo eine 3 Editboxen vorhanden sind,
diese möchte ich aber duch ein Programm Befüllen.

Ich habe einen Stringgrid mit verschiedenen Werten, wenn ich auf eine Zelle Betätige, dann nimmt er die komplette Zeile und soll diese in die 3 Editboxen Befüllen, leider aber leider bekomm ich das nicht hin.
Ab eine Anweisung noch mit reingebaut, dass er eine Meldung abgeben soll, wenn die ControlId nicht vorhanden ist.
Delphi-Quellcode:
procedure TForm1.SetEditText(const AControlId: Integer; const AText: String);
var
  LWnd: HWND;    // Windows API, Erfordern ein Fenster Handle
begin
  SetLastError(0);
  LWnd := FindWindow('#32770', 'InputSearchDlg');
  LWnd := GetDlgItem(LWnd, AControlId);

  //LWnd := FindWindowEx(LWnd, 0, 'Edit', nil);

  if LWnd <> 0 then
    begin
    if not SetWindowTextW(LWnd, PWideChar(WideString(AText))) then
      ShowMessage(SysErrorMessage(GetLastError));
    end else
    begin
      windows.beep(400,100);
      messagebeep(MB_ICONERROR );
    end;

end;
ich hoffe ihr könnt damit was anfangen, schon mal danke im Vorraus.

Luckie 25. Jun 2010 10:28

AW: Externe Editbox mit Programm befüllen
 
Zitat:

Zitat von WizoHulk (Beitrag 1031534)
leider aber leider bekomm ich das nicht hin.

Was bekommst du nicht hin? Werden die Edits nicht gefunden oder wird der Text nicht in die Edits geschrieben?

WizoHulk 25. Jun 2010 10:35

AW: Externe Editbox mit Programm befüllen
 
ohh das ging ja schnell...

Der Text wird nicht in die Edit geschrieben.
er meckert ja nicht rum, das er die Edits nicht findet bzw. die Die ControlId's.

Bummi 25. Jun 2010 10:44

AW: Externe Editbox mit Programm befüllen
 
bist Du sicher daß #32770 passt?

WizoHulk 25. Jun 2010 10:51

AW: Externe Editbox mit Programm befüllen
 
das Hat mir der X-Spy mir angezeigt..

was sollte denn da sonnst hin?

DeddyH 25. Jun 2010 11:08

AW: Externe Editbox mit Programm befüllen
 
Die Zahl kommt mir bekannt vor, das ist ein Windows-Dialog, richtig? Aber zum Problem:
Zitat:

Zitat von MSDN
However, SetWindowText cannot change the text of a control in another application.

Versuch es doch einmal mit WM_SETTEXT.

WizoHulk 25. Jun 2010 22:02

AW: Externe Editbox mit Programm befüllen
 
Meinst du statt:
Delphi-Quellcode:
TForm1.SetEditText(const AControlId: Integer; const AText: String);
dann:
Delphi-Quellcode:
TForm1.WM_SETTEXT(const AControlId: Integer; const AText: String);
?

Aphton 25. Jun 2010 23:34

AW: Externe Editbox mit Programm befüllen
 
Ähm bestimmt nicht.
WM_SETTEXT ist eine Konstante. Um genauer zu sein, ist sie eine Message-Konstante.
Such lieber mal nach Hier im Forum suchenSendMessage() & Hier im Forum suchenPostMessage() und informiere dich darüber.

MfG

WizoHulk 28. Jun 2010 09:10

AW: Externe Editbox mit Programm befüllen
 
Hmmm.

haut trotz SendMessage nicht hin. kann das sein, das da im Windows irgendwas blokiert wird?
denn das Programm liegt ja auf einen anderen Rechner.

Delphi-Quellcode:
procedure TForm1.SetEditText(const AControlId: Integer; const AText: String);
var
  LWnd: HWND;    // Windows API, Erfordern ein Fenster Handle
begin
  SetLastError(0);
  LWnd := FindWindow('#32770', 'InputSearchDlg');
  LWnd := GetDlgItem(LWnd, AControlId);

  //LWnd := FindWindowEx(LWnd, 0, 'Edit', nil);

  if LWnd <> 0 then
    begin
    if not SetWindowTextW(LWnd, PWideChar(WideString(AText))) then
      ShowMessage(SysErrorMessage(GetLastError));
    end else
    begin
      windows.beep(400,100);
      messagebeep(MB_ICONERROR );
    end;


und den Button
Delphi-Quellcode:
procedure TForm1.ok_btnClick(Sender: TObject);
begin

  SendMessage(18025, StringGrid1.Cells[1, StringGrid1.Selection.Top]);
 
//SetEditText(18025, StringGrid1.Cells[1, StringGrid1.Selection.Top]);
 
//SetEditText(18026, StringGrid1.Cells[2, StringGrid1.Selection.Top]);

//SetEditText(18027, StringGrid1.Cells[3, StringGrid1.Selection.Top]);

hoika 28. Jun 2010 09:44

AW: Externe Editbox mit Programm befüllen
 
Hallo,

Zitat:

denn das Programm liegt ja auf einen anderen Rechner.
OHA.

Diese Info kommt aber etwas spät.

Hast du dir mal überlegt,
woher FindWindow das Handle bekommen soll,
wenn nicht mal die IP oder der Computername im Code steht ???

Was du willst geht so nicht.

Auf dem anderen Rechner muss ein kleines (von dir geschriebenes Server-Programm) gestartet sein,
mit dem du per TCP-IP kommunizierst (z.B. per Indy).
Das Programm kann dann das FindWindow machen.


Heiko


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:56 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz