![]() |
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:
ich hoffe ihr könnt damit was anfangen, schon mal danke im Vorraus.
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; |
AW: Externe Editbox mit Programm befüllen
Zitat:
|
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. |
AW: Externe Editbox mit Programm befüllen
bist Du sicher daß #32770 passt?
|
AW: Externe Editbox mit Programm befüllen
das Hat mir der X-Spy mir angezeigt..
was sollte denn da sonnst hin? |
AW: Externe Editbox mit Programm befüllen
Die Zahl kommt mir bekannt vor, das ist ein Windows-Dialog, richtig? Aber zum Problem:
Zitat:
|
AW: Externe Editbox mit Programm befüllen
Meinst du statt:
Delphi-Quellcode:
dann:
TForm1.SetEditText(const AControlId: Integer; const AText: String);
Delphi-Quellcode:
?
TForm1.WM_SETTEXT(const AControlId: Integer; const AText: String);
|
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 ![]() ![]() MfG |
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]); |
AW: Externe Editbox mit Programm befüllen
Hallo,
Zitat:
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 |
AW: Externe Editbox mit Programm befüllen
Hallo,
ich steuer das über den Remotedebugger. Der fernrechner startet ja beide Programme und wenn ich auf den OK Button drücke, soll er ja die Daten aus dem Stringgrid die ich vorher auswähle in das andere Programm mit dem Editfeld (18025,18026 und 18027) reinladen. ich hab auch eine Anweisung gegeben falls er die editfelder nicht finden sollte, das er dann ein Signal von sich gibt. Er sagt mir ja anicht, das die Editboxen nicht vorhanden sind. Das muss ja heißen, das er sie je gefunden hat und das er die Werte aus der Tabelle in die Editboxen befeuern kann, was er nicht macht. |
AW: Externe Editbox mit Programm befüllen
Habe mir eben mal nen kleines Testprogramm geschrieben, und da hat es Funktioniert einmal für den Auslöser
Delphi-Quellcode:
und einmal die Function
SendMessage(19055,WM_SetText,0,integer(PChar(edit1.Text)));
Delphi-Quellcode:
aber bei dem anderen nicht.obwohl es fast der gleiche Code ist.
var
LWnd: HWND; // Windows API, Erfordern ein Fenster Handle begin SetLastError(0); LWnd := FindWindow(#32770, 'InputSearchDlg'); LWnd := GetDlgItem(LWnd, AControlId); if LWnd <> 0 then begin if not SetWindowTextW(LWnd, PWideChar(WideString(AText))) then ShowMessage(SysErrorMessage(GetLastError)); end else begin ShowMessage('Handle nicht gefunden'); windows.beep(400,100); messagebeep(MB_ICONERROR ); end; kann es vileicht sein, das windows es abblockt, auf der höchsten Priorität steht. das Programm ist im Autostart und mann kommt ganz schlecht auf den Desktop, da es Permanent immer in den Vordergrund gestellt wird. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:24 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz