Lazarus und Fremdprogramm
Lazarus und Fremdprogramm
Hallo,
ich habe noch keine große Erfahrung mit Lazarus, daher habe ich erst einmal das Einsteigerforum gewählt,
auch wenn die Thematik recht knifflig ist.
Ich möchte bestimmte Felder in unserem Firmen ERP-System (unter Windows) über eine Lazarusanwendung füllen.
So möchte ich die Eingabe erleichtern, stelle ich mir zumindest vor.
An die Datenbank im Hintergrund komme ich nicht dran, daher möchte ich es so versuchen.
Die Idee kam mir durch ein Textbausteinprogramm. Das wird mittels Hotkey aufgerufen und man kann in jede beliebige Anwendung
vordefinierte Bausteine einfügen. Nur die müssen speziell sein, man kann sie nicht in dem Textbausteinprogramm nicht erstellen.
Habe schon Stunden mit Google verbracht, bin so weit das SendInput und Sendkey eine Rolle spielen könnten,
ebenso getactivewindow und lazmouseandkey package.
Habe viel gelesen, komme aber nicht weiter, ich finde auch keine Beispiele die ich verwenden kann, ehrlich gesagt ist mir
das auch zu komplex, so viel Erfahrung habe ich nicht.
also
- woher weiß mein Lazprogramm aus welcher Anwendung es aufgerufen wurde bzw. aus welchem Eingabefeld?
- es gibt insgesamt 3 Felder zufüllen
- das Programm hat auch 3 Felder
- auf z.B. einen Buttonklick, soll der Text aus Feld 1 in das aktive Feld der ERP-Anwendung gelangen
- dann müsste ein TAB gesendet werde, Feld 2 wird angesprungen und gefüllt, dann Feld 3
Ich hoffe das ich mich nicht zu umständlich ausgedrückt habe, ist mein erster Beitrag in einem Forum
Hätte jemand einen Denkanstoß oder schon selbst Erfahrung mit einem ähnlichen Projekt?
Vielen Dank
Gruß
Thomas
ich habe noch keine große Erfahrung mit Lazarus, daher habe ich erst einmal das Einsteigerforum gewählt,
auch wenn die Thematik recht knifflig ist.
Ich möchte bestimmte Felder in unserem Firmen ERP-System (unter Windows) über eine Lazarusanwendung füllen.
So möchte ich die Eingabe erleichtern, stelle ich mir zumindest vor.
An die Datenbank im Hintergrund komme ich nicht dran, daher möchte ich es so versuchen.
Die Idee kam mir durch ein Textbausteinprogramm. Das wird mittels Hotkey aufgerufen und man kann in jede beliebige Anwendung
vordefinierte Bausteine einfügen. Nur die müssen speziell sein, man kann sie nicht in dem Textbausteinprogramm nicht erstellen.
Habe schon Stunden mit Google verbracht, bin so weit das SendInput und Sendkey eine Rolle spielen könnten,
ebenso getactivewindow und lazmouseandkey package.
Habe viel gelesen, komme aber nicht weiter, ich finde auch keine Beispiele die ich verwenden kann, ehrlich gesagt ist mir
das auch zu komplex, so viel Erfahrung habe ich nicht.
also
- woher weiß mein Lazprogramm aus welcher Anwendung es aufgerufen wurde bzw. aus welchem Eingabefeld?
- es gibt insgesamt 3 Felder zufüllen
- das Programm hat auch 3 Felder
- auf z.B. einen Buttonklick, soll der Text aus Feld 1 in das aktive Feld der ERP-Anwendung gelangen
- dann müsste ein TAB gesendet werde, Feld 2 wird angesprungen und gefüllt, dann Feld 3
Ich hoffe das ich mich nicht zu umständlich ausgedrückt habe, ist mein erster Beitrag in einem Forum
Hätte jemand einen Denkanstoß oder schon selbst Erfahrung mit einem ähnlichen Projekt?
Vielen Dank
Gruß
Thomas
- Niesi
- Lazarusforum e. V.
- Beiträge: 334
- Registriert: So 26. Jun 2016, 19:44
- OS, Lazarus, FPC: Linux Mint Cinnamon (Windows wenn notwendig), Lazarus 3.0 FPC 3.3.1
Re: Lazarus und Fremdprogramm
Das wird so nicht gehen. Ich vermute, dass das Textbausteinprogramm über die Zwischenablage arbeitet. Das könntest Du auch versuchen. Die Eingebenden müssen dann jeweils den vorgefertigten Text z. B. per "Strg" + "v" einfügen.thhz hat geschrieben: ↑Mo 28. Feb 2022, 22:10
- es gibt insgesamt 3 Felder zufüllen
- das Programm hat auch 3 Felder
- auf z.B. einen Buttonklick, soll der Text aus Feld 1 in das aktive Feld der ERP-Anwendung gelangen
- dann müsste ein TAB gesendet werde, Feld 2 wird angesprungen und gefüllt, dann Feld 3
Es sei denn, Du verfügst über eine Schnittstelle zu dem Programm, dessen Felder Du füllen möchtest - aber einfach so mal an oder gar in ein laufendes Programm Eingaben von außen senden, da wüsste ich nicht, wie das funktionieren sollte ...
Wissen ist das einzige Gut, das sich vermehrt, wenn es geteilt wird ...
- af0815
- Lazarusforum e. V.
- Beiträge: 6209
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: Lazarus und Fremdprogramm
Einsteigspunkte
viewtopic.php?t=7729
viewtopic.php?t=3767
https://www.tech-ecke.de/index_quereins ... lieren.htm
Das größte Problem ist, das man nicht unbedingt gut sieht wohin man was sendet
viewtopic.php?t=7729
viewtopic.php?t=3767
https://www.tech-ecke.de/index_quereins ... lieren.htm
Das größte Problem ist, das man nicht unbedingt gut sieht wohin man was sendet
Code: Alles auswählen
uses
.......
,windows
,ShellApi
, JwaWinUser // für TInput
;
..........
procedure SendVK(aVK:word);
var
input: TInput;
begin
FillChar(input, sizeof(TInput), 0);
input.type_ := INPUT_KEYBOARD;
input.ki.wVk := aVK;
SendInput(1, @input, sizeof(TInput));
end;
procedure SendF1;
begin
SendVK(VK_F1);
end;
- Dateianhänge
-
- uwinhelper.pas
- Hilfsroutinen um mit Fremden Programm zu kommunizieren
- (6.85 KiB) 54-mal heruntergeladen
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
- Niesi
- Lazarusforum e. V.
- Beiträge: 334
- Registriert: So 26. Jun 2016, 19:44
- OS, Lazarus, FPC: Linux Mint Cinnamon (Windows wenn notwendig), Lazarus 3.0 FPC 3.3.1
Re: Lazarus und Fremdprogramm
Das ist jedenfalls sehr interessant und könnte eine Möglichkeit sein, die Aufgabenstellung gut zu lösen ...
Wissen ist das einzige Gut, das sich vermehrt, wenn es geteilt wird ...
-
- Lazarusforum e. V.
- Beiträge: 3158
- Registriert: Di 22. Jul 2008, 19:27
- OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
- CPU-Target: 32bit x86 armhf
- Wohnort: Köln
- Kontaktdaten:
Re: Lazarus und Fremdprogramm
Wenn deine ERP Software von einem großen Softwareanbieter aus Walldorf kommt, hast du noch die Möglichkeit des SAP GUI Scriptings. Das läuft über OLE bzw. COM Automatisierung und kann prinzipiell auch von Lazarus aus genutzt werden.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
- af0815
- Lazarusforum e. V.
- Beiträge: 6209
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: Lazarus und Fremdprogramm
Mit Hilfe der Routinen kann man untersuchen ob vielleicht die im fremden Programm verwendeten Felder (besonders die Eingabefelder) Komponentenamen haben. Dann wird es etwas einfacher. Dann kann man die direkt adressieren und gezielt schreiben.
Ich habe mich da mit dem Titel und Classennamen des Fensters beschäftigt. ListWinComp('Titel Fenster', 'Namen der Classe', AStringList) hat mir da geholfen.
Ich habe mich da mit dem Titel und Classennamen des Fensters beschäftigt. ListWinComp('Titel Fenster', 'Namen der Classe', AStringList) hat mir da geholfen.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
Re: Lazarus und Fremdprogramm
Guten Abend,
vielen Dank,
da habt ihr mir aber viel aufgegeben
werde mich damit beschäftigen
ein Problem ist schon aufgetreten, wenn ich
die Unit uwinhelper einbinden und das Projekt kompiliere kommt
diese Meldung: uwinhelper.pas(121,51) Error: Illegal type conversion: "TStringList" to "LongInt"
habe diese Zeilen testweise auskommentiert, dann läuft die Kompilierung durch.
Arbeite mit Lazarus 2.0.12
nochmals vielen Dank
Gruß
Thomas
vielen Dank,
da habt ihr mir aber viel aufgegeben
werde mich damit beschäftigen
ein Problem ist schon aufgetreten, wenn ich
die Unit uwinhelper einbinden und das Projekt kompiliere kommt
diese Meldung: uwinhelper.pas(121,51) Error: Illegal type conversion: "TStringList" to "LongInt"
habe diese Zeilen testweise auskommentiert, dann läuft die Kompilierung durch.
Arbeite mit Lazarus 2.0.12
nochmals vielen Dank
Gruß
Thomas
- af0815
- Lazarusforum e. V.
- Beiträge: 6209
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: Lazarus und Fremdprogramm
Den Fehler sehe ich mir an, kann sein, das der fpc strenger geworden ist. Die Unit ist etwas älter, da kann sowas schon vorkommen.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
Re: Lazarus und Fremdprogramm
Hab's nicht auf Windows getestet, aber Longint ist da für 64bit nicht gut.
Geht das besser?
Code: Alles auswählen
EnumChildWindows(hWindow, @EnumWindowChildProc, LPARAM(aList));
- af0815
- Lazarusforum e. V.
- Beiträge: 6209
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: Lazarus und Fremdprogramm
Ich würde sagen ja, der Code ist nur unter 32Bit gelaufen, wie gesagt schon älter. Es hier darum, das der Callback das richtige Objekt verwendet. Die Routinen sind dafür das man eventuell einen Zugriff auf Komponenten in Fremdprogrammen unter Windows bekommt. Auch damit amn erkennen kann, in welchen Zustand sich ein Fremdprogramm befindet. Ich habe es verwendet um bei einem Messprogramm herauszufinden ob es gestartet ist, ob irgendwelche Abfragen offen sind. Dazu habe ich mir angeshen, welcher Dialog gerade offen ist und dann die entsprechenden Tasten gesendet um das Programm zum Messen zu bewegen. Das wird dann wieder über die Messuhren selbst gesteuert. Nur die Software verwendet eine proprietäres Bluetooth Protokoll, sonst hätte ich mir das ganze nicht auf Windows angetan. Da sind die Routinen entstanden, sie sind nur ein Beispiel wie man zu ein paar Infos von Fremdprogrammen kommen kann.theo hat geschrieben: ↑Mi 2. Mär 2022, 11:13Hab's nicht auf Windows getestet, aber Longint ist da für 64bit nicht gut.
Geht das besser?Code: Alles auswählen
EnumChildWindows(hWindow, @EnumWindowChildProc, LPARAM(aList));
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
Re: Lazarus und Fremdprogramm
Hallo,
habe die Unit entsprechend angepasst, es funktioniert,
die Kompilierung läuft durch.
Vielen Dank
Gruß
Thomas
habe die Unit entsprechend angepasst, es funktioniert,
die Kompilierung läuft durch.
Vielen Dank
Gruß
Thomas