mikka hat geschrieben:das Thema mit den PDF´s [...], dass es nur mit der Vollversion funktionieren würde (zumindest beim Drucken aus Navision heraus), ist evtl. bei dieser Problematik auch was dran?
Das Drucken ist nicht das Problem, das geht ganz hervorragend mit der Shell-Automation, aufzurufen mit
Printfile(<Dateiname mit Pfad>); (Funktionen siehe unten)
Sein Problem war das Schließen der Anwendung, nachdem es zur Ansicht geöffnet wurde.
Ăśbrigens,
bei den Meisten Anwendungen, nicht nur bei Acrobat, klappt das auf unten beschriebene weise, es geht immer dann, wenn im KontextmenĂĽ der Datei im Explorer ein Drucken oder Print zu finden ist.
In der Regel schließt sich die Anwendung danach selbständig wieder.
Funktion: Printfile(Filename : Text[250])
- Code: Alles auswählen
CREATE(objShell);
IF NOT EXISTS(Filename) THEN EXIT;
SplitDirFile(Filename,Dir,File);
objFolder := objShell.NameSpace(Dir);
objFolderItems := objFolder.Items;
objFolderItem := objFolderItems.Item(File);
objVerbs := objFolderItem.Verbs;
i:=-1;
REPEAT
i+=1;
IF i<objVerbs.Count THEN
objVerb := objVerbs.Item(i);
UNTIL (STRPOS(UPPERCASE(objVerb.Name),'PRINT')>0) OR (STRPOS(UPPERCASE(objVerb.Name),'DRUCKEN')>0) OR (i >=objVerbs.Count);
IF i<=objVerbs.Count THEN BEGIN
objVerb.DoIt;
END ELSE
ERROR(Text104, Filename);
Die nötigen Variablen:
- Code: Alles auswählen
Name DataType Subtype
objShell Automation 'Microsoft Shell Controls And Automation'.Shell
objFolder Automation 'Microsoft Shell Controls And Automation'.Folder
objFolderItems Automation 'Microsoft Shell Controls And Automation'.FolderItems
objFolderItem Automation 'Microsoft Shell Controls And Automation'.FolderItem
objVerbs Automation 'Microsoft Shell Controls And Automation'.FolderItemVerbs
objVerb Automation 'Microsoft Shell Controls And Automation'.FolderItemVerb
Dir Text 250
File Text 250
i Integer
Funktion: SplitDirFile(Filename : Text[250];VAR Dir : Text[250];VAR File : Text[250])
- Code: Alles auswählen
Position:=0;
REPEAT
temppos:=STRPOS(COPYSTR(Filename,Position+1),'\');
Position+=temppos;
UNTIL temppos=0;
IF Position>0 THEN BEGIN
Dir:=PADSTR(Filename,Position);
File:=COPYSTR(Filename,Position+1);
END ELSE BEGIN
Dir:='';
File:=Filename;
END;
Und die Variablen:
- Code: Alles auswählen
Name DataType
Position Integer
temppos Integer