Experte für List&Label gesucht
Ich setze seit einiger Zeit List&Label 12 für meine Druckausgaben ein.
Bei einem Formulardruck sollen 2 Kopien aus Schacht 1 und 3 Kopien aus Schacht 2 des Druckers automatisch gedruckt werden.
Leider gibt es keinen einfachen LL-Funktionsaufruf, der diese an sich einfache Sache steueren kann. Die Hotline verwies auf eine umständliche Variante, API-Funktionen aus der CMLS12.DLL zu nutzen: LLStgsysStorageOpen, LLStgsysGetPageCount() und andere Funktionen zur direkten Verwaltung der Previewdatei.
Nur leider lassen diese sich nicht aus Xbase++ nicht aufrufen (Fehlermeldung Unbekannte Funktion DllCallPepare), was auf einen Parameterkonflikt in der DllCallPepare() hindeutet.
Bsp.: Das Öffnen der bereits fertigen Previewdatei sieht (gekürzt) ungefähr so aus:
local sStg:="C:\TMP\TROMLISTE.LL"
local hStg
hStg:=LLStgsysStorageOpen(sStg, "", .t., .t.)
if hStg =0
msgbox("Fehler")
else
msgbox("OK")
endi
...
DLLFUNCTION LLStgsysStorageOpen( cFilename, cTemppath, lReadonly, lOneJobTranslation ) USING STDCALL FROM CMLS12.DLL
Der Ersatz von STDCALL durch die C-Aufrufkonvention CDECL brachte nichts.
Hat jemand eine Idee, wie man die Problemstellung noch lösen könnte bzw. was falsch ist an dem API-Aufruf? Die Datei CMLS12.DLL befindet sich in C:\WINDOWS\SYSTEM32 und enhält wirklich eine Funktion namens
LLStgsysStorageOpen, was im Hex-Editor zu sehen ist.
Danke im Voraus
Frank
List & Label -API Aufruf
Moderator: Moderatoren
- brandelh
- Foren-Moderator
- Beiträge: 15699
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 69 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
Hallo,
mit List&Label kenne ich mich zwar nicht aus, aber das gleiche Ergebnis haben wir aus anderen Programmen dahingehend gelöst, dass wir für den gleichen Drucker 2 Druckobjecte erstellt haben. Im einen Standardpapierschacht und im zweiten den anderen Papierschacht.
Dann müsstest du nur 2 identische aber getrennte Druckjobs erstellen, den einen auf den ersten den anderen auf den zweiten Drucker.
mit List&Label kenne ich mich zwar nicht aus, aber das gleiche Ergebnis haben wir aus anderen Programmen dahingehend gelöst, dass wir für den gleichen Drucker 2 Druckobjecte erstellt haben. Im einen Standardpapierschacht und im zweiten den anderen Papierschacht.
Dann müsstest du nur 2 identische aber getrennte Druckjobs erstellen, den einen auf den ersten den anderen auf den zweiten Drucker.
Gruß
Hubert
Hubert
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9387
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 104 Mal
- Danksagung erhalten: 362 Mal
- Kontaktdaten:
Hast Du CMBTLS12.CH eingebunden - und CMBTLS12.PRG? Die enthalten nämlich die Templates für die DLL-Calls. Außerdem muß LS12LoadTemplates aufgerufen werden. Dann steht das Storage-System zur Verfügung. Das ist tatsächlich die bequemste Art, das zu steuern:
- Dokument als Preview speichern, nicht drucken
- 2 Kopien an Drucker/Schacht 1
- 3 Kopien an Drucker/Schacht 2
Das sind insgesamt nur vier oder fünf Zeilen Code.
Edit: DLLFUNCTION ... kannst Du weglassen. Das geschieht alles bei LoadTemplates. Die Funktionen stehen ohne DLL-Wrapping zur Verfügung.
- Dokument als Preview speichern, nicht drucken
- 2 Kopien an Drucker/Schacht 1
- 3 Kopien an Drucker/Schacht 2
Das sind insgesamt nur vier oder fünf Zeilen Code.
Edit: DLLFUNCTION ... kannst Du weglassen. Das geschieht alles bei LoadTemplates. Die Funktionen stehen ohne DLL-Wrapping zur Verfügung.
Herzlich,
Tom
Tom