![]() |
Text zur anderer Anwendung senden
Hallo,
ich kämpfe mich gerade mit der Fernsteuerung einer fremden Anwedung ab. Ich möchte aus unserem Controlling-System heraus einen Auftrag in unserem ERP System aufrufen. Ich kann den Suchdialog des fremden Programms öffnen, dort ist als einzige Komponente ein Grid. Manuell würde man nun eine Auftragsnummer eingeben und mit einer Funktionstaste aufrufen. Ich möchte nun eine mehrstellige Zeichenfolge an dieses Grind senden, und weiss nicht wie ich dies übertragen kann. Ich finde das Handle des Grids, zerlege den String der die Auftragsnummer bedeutet in einzelne Zeichen und müsste diese nun irgendwie übertragen. Ich habe schon diverse Code-Schnipse ausprobiert, aber noch nicht zum Ziel gelangt. Kann mir da jemend helfen? Gruß Sugar |
AW: Text zur anderer Anwendung senden
Hi,
wenn Du an die Sourcen beider Programme ran kommst, dann bieten sich für Kleinigkeiten die Windows Messages an, für größere "Kleinigkeiten" die Windows MMF. Hast Du mit einem dieser Teile schon mal was gemacht? Wenn ja: Was waren da genau die Probleme, wenn nein, dann schau es dir mal an... GRüße |
AW: Text zur anderer Anwendung senden
Zitat:
Die Anwendung die ich jetzt bedienen muss setzt mit jedem Tatsendruck einen SELECT ab (warum auch immer so kompliziert weiß ich nicht) - ich muss also die Auftragsnummer in einzelne Zeichen zerlegen und nach unc nach absenden. Größer wird die Sache nicht, wenn ich diese Eingabe umgesetzt bekomme fehlt nur noch ein klick zum Aufru. Und der steht schon ;) |
AW: Text zur anderer Anwendung senden
Hallo,
einzelne Zeichen sende ich so:
Delphi-Quellcode:
SendMessage(FDBGridHandle,WM_CHAR,30,0);
|
AW: Text zur anderer Anwendung senden
|
AW: Text zur anderer Anwendung senden
Danke für die Hinweise! Mein Kernproblem aber bleibt, wie ich einen Text ind die entsprechenden Integerparamter umwandle die WM_COPYDATA und WM_CHAR erwarten?
Zudem denke ich, dass das Grid, das ja die Tastatureingabe des externen Programms verarbietet explizit auf Key UP/Down reagiert.... |
AW: Text zur anderer Anwendung senden
Dann schicke ihm doch noch eines, dafür gibt es ja auch Messages. Vom "Klang" her würde ich schätzen, dass es Sinn machen könnte das letzte Zeichen des Textes aus dem WM_COPYDATA raus zu lassen, und per WM_KEYDOWN/UP nachzuliefern. Wenn die Routine des Zielprogramms wirklich pro Char ausgeführt werden soll, kann man damit ja auch im Zweifel den gesamten Text kleckerweise rüber schubsen. Oder ich habe das Problem missverstanden; auch immer eine Option :)
|
AW: Text zur anderer Anwendung senden
Nein, das Problem ist schon korrekt verstanden. Ob ich den String am Ende wirklich auch "zerlegen" muss oder nicht ist mir eiegtnlich egal, zum testen müsste ich nur wissen, wie man einen String mit WM_CHAR "versendet"
Beispiel: Mein Suchbegriff ist "123/01" Den Ausdruck zerlege ich in 1-2-3-/-0-1 und würde ihn dann folgendermaßen senden wollen: sendmessage(handle,wm_char,ord('1'),0); sendmessage(handle,wm_char,ord('1'),0); ... Zum testen in Ordnung. Nur, wie wanlde ich die einzelnen Zeichen so um, dass ich in den Ausdruck buchstabenweise übergeben kann also eine Schleife durchlaufe und jedes einzelne Zeichen von 1 bis Ende übergebe? In Etwa so: sendmessage(handle,wm_char,ord(Copy(MeinSTtring,1,1)),0); |
AW: Text zur anderer Anwendung senden
Meinst Du so?
Delphi-Quellcode:
for i := 1 to length(MeinString) do
begin sendmessage(handle,wm_char,ord(MeinString[i]),0); end; |
AW: Text zur anderer Anwendung senden
Ausprobieren?
Aber was die Parameter betrifft: ![]() Also falls der lParam doch nötig ist. (kommt ja auch etwas darauf an, welche Messages und wie das Programm diese auswertet) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:10 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