You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
732 lines
25 KiB
732 lines
25 KiB
EnableExplicit
|
|
|
|
; DYMO Label Software (DLS) have to be installed.
|
|
; This Include is created for DLS v.8+ (year 2015+).
|
|
; Maybe it works with lower version, but this is untested.
|
|
|
|
|
|
; Constants
|
|
; ===========================================================
|
|
|
|
; For Printers with more than one tray
|
|
Enumeration DYMO_Tray
|
|
#DYMO_Tray_Unknown = -1
|
|
#DYMO_Tray_Left = 0
|
|
#DYMO_Tray_Right = 1
|
|
#DYMO_Tray_Auto = 2
|
|
EndEnumeration
|
|
|
|
; for DYMO_SetAddressPOSTNET(POSTNET_Pos)
|
|
#DYMO_POSTNET_Pos_None = "NONE"
|
|
#DYMO_POSTNET_Pos_Top = "TOP"
|
|
#DYMO_POSTNET_Pos_Buttom = "BUTTOM"
|
|
|
|
; not really needed, but nice to know
|
|
#DYMO_False = #False ; 0
|
|
#DYMO_True = ~#DYMO_False ; -1
|
|
|
|
|
|
; Initialize all needed components or release them
|
|
; ===========================================================
|
|
|
|
DeclareDLL DYMO_Init()
|
|
; Use this BEFORE any use of DYMO_*() commands.
|
|
; Prevent any use of DYMO_*() procedures if return value is not #True.
|
|
; Return: #True or #False
|
|
|
|
DeclareDLL DYMO_Release()
|
|
; Release all objects created with DYMO_Init()
|
|
; After using DYMO_Release() stop using any DYMO_*() command.
|
|
; If you want to reuse DYMO_* commands, you can call DYMO_Init() again.
|
|
; Return: void
|
|
|
|
|
|
; Manage Printer(s) and printing
|
|
; ===========================================================
|
|
|
|
DeclareDLL DYMO_ExaminePrinters()
|
|
; Examine available DYMO printers
|
|
; Return: Number of available printers
|
|
|
|
DeclareDLL.s DYMO_NextPrinter()
|
|
; Cycle through the List of DYMO-Printer examined with DYMO_ExaminePrinters()
|
|
; Return: Printer name or #Null$ if no more printers available
|
|
|
|
DeclareDLL.s DYMO_GetCurrentPrinterName()
|
|
; Get the name of the currently selected printer
|
|
; Return: selected printer name
|
|
|
|
DeclareDLL DYMO_SelectPrinter(PrinterName.s)
|
|
; Redirects output to the selected printer. PrinterName is of the
|
|
; form "Printer name on Port". Returns TRUE on success, FALSE
|
|
; on error. Example:
|
|
; To Select the <LabelWriter EL60 on COM3>, you would use the
|
|
; command: DYMO_SelectPrinter("DYMO LabelWriter EL60 on COM3:")
|
|
; Return: #DYMO_True or #DYMO_False
|
|
|
|
DeclareDLL DYMO_IsTwinTurboPrinter(PrinterName.s)
|
|
; Returns TRUE if the specified printer (PrinterName) is a
|
|
; LabelWriter Twin Turbo, FALSE otherwise.
|
|
; Return: #DYMO_True or #DYMO_False
|
|
|
|
DeclareDLL DYMO_SetPrintMode(HighQuality = #True)
|
|
; When "HighQuality" is set to TRUE (Default value), labels containing barcode(s)
|
|
; will print at high quality mode but the print speed is reduced.
|
|
; Unsetting this mode will cause all labels to print at the fasted print
|
|
; speed.
|
|
|
|
DeclareDLL DYMO_GetCurrentPaperTray()
|
|
; Further Information: When the currently selected printer is a
|
|
; LabelWriter Twin Turbo, DYMO Label software attempts To
|
|
; associate a paper tray With the currently opened label file. As an
|
|
; example, If the last label printed on the left tray was "Address
|
|
; 30252" And the last label printed on the right tray was "Shipping
|
|
; 30323", then when the user opens a label file that uses the
|
|
; "Address 30252" paper size, DYMO Label software automatically
|
|
; sets the tray selection To left tray.
|
|
; Return: the current active paper tray
|
|
; Possible Return values include:
|
|
; #DYMO_Tray_Unknown = Unknown Tray (program user must specify)
|
|
; #DYMO_Tray_Left = Left Tray (Roll)
|
|
; #DYMO_Tray_Right = Right Tray (Roll)
|
|
; #DYMO_Tray_Auto = Auto Switch
|
|
|
|
DeclareDLL DYMO_IsPrinterOnline(PrinterName.s)
|
|
; This applies to locally connected printers only. Shared printers
|
|
; always return true. Returns true if the specified printer is online,
|
|
; false if the printer is offline.
|
|
; Return: #DYMO_True or #DYMO_False
|
|
|
|
DeclareDLL DYMO_StartPrintJob()
|
|
DeclareDLL DYMO_StopPrintJob()
|
|
; Wrapping DYMO_PrintLabel() calls within the DYMO_StartPrintJob() and
|
|
; DYMO_EndPrintJob() calls will cause labels to be printed as pages of the
|
|
; same print job.
|
|
; The benefit is seen with reduced the print job.
|
|
;
|
|
; Example:
|
|
; ; this printing loop creates a 10 page print job
|
|
; DYMO_StartPrintJob()
|
|
; For i = 1 to 10
|
|
; ; update some fields on the label
|
|
; DYMO_PrintLabel() ; print one label
|
|
; Next
|
|
; DYMO_StopPrintJob();
|
|
;
|
|
; this code above will print labels much faster than the code below:
|
|
;
|
|
; ; this printing loop creates 10 different one page print jobs
|
|
; For i = 1 to 10
|
|
; ; update some fields on the label
|
|
; DYMO_PrintLabel() ; print one label
|
|
; Next
|
|
;
|
|
; Return: void
|
|
|
|
DeclareDLL DYMO_PrintLabel(Copies = 1, Tray = #DYMO_Tray_Unknown, ShowDialog = #False)
|
|
; Prints the current label. "Copies" is the number of copies to print.
|
|
; "ShowDialog" controls the display of the print-progress dialog. If
|
|
; TRUE, then the dialog is displayed. Returns TRUE on success,
|
|
; FALSE on error.
|
|
; Note: When the currently selected printer is a LabelWriter Twin Turbo, this command defaults to
|
|
; use the left roll.
|
|
; Possible values For the "Tray" parameter include:
|
|
; #DYMO_Tray_Left = Left Roll
|
|
; #DYMO_Tray_Right = Right Roll
|
|
; #DYMO_Tray_Auto = Auto Switch - This puts the printer in a mode where it starts to
|
|
; print from the last printed roll and automatically switch over to the
|
|
; other roll when the starting roll runs out of paper. It continues to
|
|
; toggle back and forth between rolls as long as the user refills rolls
|
|
; once they become empty. This mode of printing is useful when the
|
|
; user is printing a large number of labels.
|
|
; Return: #DYMO_True or #DYMO_False
|
|
|
|
|
|
; Automatic creation of print-jobs
|
|
; ===========================================================
|
|
|
|
DeclareDLL DYMO_SmartPasteFromClipboard()
|
|
; Parses text data in the Clipboard into records and prints a label for
|
|
; each record.
|
|
; Return: #DYMO_True if the operation was successful,
|
|
; #DYMO_False if the operation failed.
|
|
|
|
DeclareDLL DYMO_SmartPasteFromFile(File.s)
|
|
; Parses comma or tab delimited data in a file into records and prints
|
|
; a label For each record.
|
|
; Return: #DYMO_True if the operation was successful,
|
|
; #DYMO_False if the operation failed.
|
|
|
|
DeclareDLL DYMO_SmartPasteFromString(Text.s)
|
|
; Parses text data in "Text" into records and prints a label for each
|
|
; record.
|
|
; Return: #DYMO_True if the operation was successful,
|
|
; #DYMO_False if the operation failed.
|
|
|
|
|
|
; Manage .label files
|
|
; ===========================================================
|
|
|
|
DeclareDLL DYMO_OpenMemory(*Buffer, BufferSize)
|
|
; Reads a label file from a buffer (vs. from a file or URL). This is
|
|
; useful If you intend to manage the binary data yourself. The
|
|
; buffer must be filled with the binary Data of the label file.
|
|
; Return: #DYMO_True if the label file was Read from the buffer correctly.
|
|
; #DYMO_False if the buffer is invalid.
|
|
|
|
DeclareDLL DYMO_SaveMemory()
|
|
; Returns a pointer, which is actually containing
|
|
; the binary data of the label file currently open in DYMO Label
|
|
; software.
|
|
; You can use MemorySize() tu get the size of the buffer.
|
|
; If you not longer need the data use FreeMemory()
|
|
; Return: *Buffer
|
|
|
|
DeclareDLL DYMO_OpenURL(URL.s)
|
|
; Opens a label file using an URL. The URL can start with http, https,
|
|
; ftp, or file, etc.
|
|
; Return: #DYMO_True if the file was opened successfully,
|
|
; #DYMO_False if the file does not exist.
|
|
|
|
DeclareDLL DYMO_OpenLabel(File.s, ShowDialogBoxIfFail = #False)
|
|
; Opens a label file. Returns TRUE on success, FALSE on error.
|
|
; *Functional Difference Alert:
|
|
; The function will try to open the specified label file name With the .label extension first, even If
|
|
; the parameter specifies a different file extension.
|
|
; For example, If your application calls:
|
|
; DYMO_OpenLabel("mylabel.lwl")
|
|
; The function will try to look for the file in the following order:
|
|
; mylabel.label
|
|
; mylabel.lwl
|
|
; mylabel.lwt
|
|
; * The reason for this behavior has to do with how the implementation handles both ".lwl" and
|
|
; ".label" file formats. The implementation converts ".lwl" format into ".label" format internally
|
|
; before performing any actions on a label file. What this means is that when a label that was
|
|
; opened as ".lwl" will be saved as a ".label" file if the DYMO_SaveLabel() method is called.
|
|
; So if an SDK application opens a ".lwl" label file, modifies it, then saves the file. The file would
|
|
; be saved as a ".label" file. When the application returns to open the same ".lwl" file expecting to
|
|
; see the modifications, the DYMO_OpenLabel() procedure would need to open the ".label" file for the
|
|
; modification to be seen.
|
|
; If "ShowDIalogBoxIfFail" is set to TRUE and the specified file name is not found, opens the
|
|
; Label File Open dialog box.
|
|
; Return: #DYMO_True if the file was opened successfully,
|
|
; #DYMO_False if the file does not exist.
|
|
|
|
DeclareDLL DYMO_SaveLabel(File.s = #Null$)
|
|
; Saves the current label. Returns TRUE on success, FALSE on
|
|
; error. If a "File" is given, saves the current label under a new name.
|
|
; *Functional Difference Alert:
|
|
; The function will save the specified label file name in the .label file extension, even if the
|
|
; parameter specifies a different file extension.
|
|
; For example, If your application calls:
|
|
; DYMO_SaveLabel("SomeFile.lwl")
|
|
; the function will save the file As "SomeFile.label". The label file is in the new DYMO Label v.8
|
|
; .label file format.
|
|
|
|
; Manage Most Recently Used (MRU) .label files
|
|
; ===========================================================
|
|
|
|
DeclareDLL DYMO_MRU_GetFileCount()
|
|
; Return: the number of files in the MRU label file list.
|
|
|
|
DeclareDLL DYMO_MRU_OpenFile(Index)
|
|
; Returns a label file name from the MRU label files List. The "Index"
|
|
; parameter identifies which file name in the MRU to return. The
|
|
; index is zero-based and the file name DOES NOT include the file
|
|
; path or extension. Example: "SomeFile"
|
|
|
|
DeclareDLL.s DYMO_MRU_GetFileName(Index)
|
|
|
|
DeclareDLL DYMO_MRU_ExamineFiles()
|
|
; Examine available MRU files
|
|
; Return: Number of available Files
|
|
|
|
|
|
DeclareDLL.s DYMO_MRU_NextFile()
|
|
; Cycle through the MRU-List examined with DYMO_MRU_ExamineFiles()
|
|
; Return: Filename or #Null$ if no more available
|
|
|
|
|
|
; Proxy-settings (for commands with URL)
|
|
; ===========================================================
|
|
|
|
DeclareDLL DYMO_ProxySetup(Protocol.s, ServerName.s, Port.l, ProxyBypass.s, UserName.s, Password.s)
|
|
; Allows customized proxy settings (different from IE’s Default
|
|
; proxy settings). All URL related function calls in the SDK will
|
|
; adhere to these proxy settings.
|
|
|
|
DeclareDLL DYMO_ProxyClearSettings()
|
|
; Clears all proxy settings and revert back to using IE’s default
|
|
; proxy settings.
|
|
|
|
DeclareDLL DYMO_ProxyBypass(Set = #True) ; #False = default
|
|
; Setting the property to TRUE will cause all URL related SDK
|
|
; functions To bypass any proxy settings, including IE’s Default
|
|
; proxy settings.
|
|
; Setting the property to FALSE (the Default value) means all URL
|
|
; related SDK functions will use either IE’s Default proxy setting or
|
|
; the user specified proxy settings
|
|
|
|
|
|
; Manage currently loaded .label and modify objects
|
|
; ===========================================================
|
|
|
|
DeclareDLL DYMO_ExamineObjects(VariableOnly = #True)
|
|
; Examine available objects in the current loaded label. If "VariableOnly" is set to
|
|
; TRUE then only variable Objects are examined.
|
|
; Return: Number of Objects
|
|
|
|
DeclareDLL.s DYMO_NextObject()
|
|
; Cycle through the objects examined with DYMO_ExamineObjectes()
|
|
; Return: ObjectName or #Null$ if no more available
|
|
|
|
DeclareDLL DYMO_GetAddressFieldCount()
|
|
; This procedure returns the number of address objects on the current
|
|
; label. Used to determine possible values for the index parameter of
|
|
; the DYMO_SetAddressPOSTNET() and DYMO_SetAddress functions.
|
|
|
|
DeclareDLL.s DYMO_GetText(Object.s)
|
|
; Given an "Object" name returns the contents of the object.
|
|
; This operation only applies to address, barcode and text objects.
|
|
|
|
DeclareDLL DYMO_SetAddress(Address.s, Index = 1)
|
|
; Given an "Index" of an address object, places the text in the object.
|
|
; The index is normally 1, but for designs with more than one
|
|
; address object, the index can be greater than one to select other
|
|
; address objects.
|
|
; Return: #DYMO_True on success or #DYMO_False on error
|
|
|
|
DeclareDLL DYMO_SetField(Object.s, Text.s)
|
|
; Given an object name, and some text, changes the text of the object
|
|
; to have the new text. This operation only applies to address,
|
|
; barcode, and text objects.
|
|
; Return: #DYMO_True on success or #DYMO_False on error
|
|
|
|
DeclareDLL DYMO_SetAddressPOSTNET(POSTNET_Pos.s, Index = 1)
|
|
; Given an index of an address object, changes the POSTNET
|
|
; barcode setting for the object. The index is normally 1, but for
|
|
; designs with more than one address object, the index can be greater
|
|
; than one to select other address objects.
|
|
; Position can be #DYMO_POSTNET_Pos_None,
|
|
; #DYMO_POSTNET_Pos_Top or #DYMO_POSTNET_Pos_Buttom
|
|
; Return: void
|
|
|
|
DeclareDLL DYMO_PasteFromClipboard(Object.s)
|
|
; Paste text from the clipboard to an object by the given
|
|
; "Object" name.
|
|
; Return: #DYMO_True on success or #DYMO_False on error
|
|
|
|
DeclareDLL DYMO_SetImageFile(Object.s, File.s)
|
|
; Load an image file to a graphic object by the given "Object" name.
|
|
; Return: #DYMO_True on success or #DYMO_False on error
|
|
|
|
DeclareDLL DYMO_SetImageURL(Object.s, URL.s)
|
|
; Allows specifying URL as the image source for an image object on
|
|
; the label.
|
|
; Return: #DYMO_True on success or #DYMO_False on error
|
|
|
|
DeclareDLL DYMO_PasteImageFromClipboard(Object.s)
|
|
; Paste image from the clipboard to an object by the given
|
|
; "Object" name.
|
|
; Return: #DYMO_True on success or #DYMO_False on error
|
|
|
|
|
|
; Internally used Procedures
|
|
; ===========================================================
|
|
|
|
Declare INTERNAL_DYMO_Variant2Buffer(*Var.VARIANT);Return: *Mem Pointer (use FreeMemory() / MemorySize())
|
|
Declare INTERNAL_DYMO_Buffer2Variant(*Buffer, BufferSize);Return: *Variant, use VariantClear_() AND ClearStructure() !!
|
|
|
|
|
|
; some tests for the include
|
|
; ===========================================================
|
|
CompilerIf Defined(INCLUDE_DYMO, #PB_Constant) ; if DYMO / DYMO_DLL is already included
|
|
CompilerError "<" + #PB_Compiler_Filename + "> DYMO already included !!"
|
|
CompilerElse
|
|
#INCLUDE_DYMO = #True
|
|
CompilerEndIf
|
|
CompilerIf Defined(INCLUDE_COMATE, #PB_Constant) = #False ; if COMatePLUS is not included
|
|
XIncludeFile "COMatePLUS/COMatePLUS_Residents.pbi"
|
|
XIncludeFile "COMatePLUS/COMatePLUS.pbi"
|
|
;CompilerWarning "<" + #PB_Compiler_Filename + ~"> if you want to include other COMatePLUS Version, you have to include \"COMatePLUS.pbi\""
|
|
CompilerEndIf
|
|
CompilerIf #PB_Compiler_Unicode = #False
|
|
CompilerError "<" + #PB_Compiler_Filename + "> Needs Unicode!!"
|
|
CompilerEndIf
|
|
|
|
|
|
; Structures
|
|
; ===========================================================
|
|
|
|
Structure DYMO_Struct_COM
|
|
AddIn.COMateObject
|
|
Labels.COMateObject
|
|
EndStructure
|
|
Structure DYMO_Struct_RetVar
|
|
NextPrinter.s
|
|
GetCurrentPrinterName.s
|
|
MRU_NextFile.s
|
|
MRU_GetFileName.s
|
|
NextObject.s
|
|
GetText.s
|
|
EndStructure
|
|
Structure DYMO_Struct
|
|
COM.DYMO_Struct_COM
|
|
List Printers.s()
|
|
List MRU_Files.s()
|
|
List Objects.s()
|
|
Initialized.i
|
|
RetVar.DYMO_Struct_RetVar
|
|
EndStructure
|
|
|
|
|
|
; Procedures
|
|
; ===========================================================
|
|
|
|
ProcedureDLL DYMO_Init()
|
|
Global DYMO.DYMO_Struct
|
|
|
|
; create needed COMate objects
|
|
If Not DYMO\Initialized
|
|
DYMO\COM\AddIn = COMate_CreateObject("Dymo.DymoAddIn")
|
|
DYMO\COM\Labels = COMate_CreateObject("Dymo.DymoLabels")
|
|
EndIf
|
|
|
|
If DYMO\COM\AddIn And DYMO\COM\Labels
|
|
DYMO\Initialized = #True
|
|
EndIf
|
|
|
|
ProcedureReturn DYMO\Initialized
|
|
EndProcedure
|
|
ProcedureDLL DYMO_Release()
|
|
|
|
; release COMate objects
|
|
If DYMO\Initialized
|
|
If DYMO\COM\AddIn
|
|
DYMO\COM\Labels\Release()
|
|
EndIf
|
|
If DYMO\COM\Labels
|
|
DYMO\COM\AddIn\Release()
|
|
EndIf
|
|
DYMO\Initialized = #False
|
|
EndIf
|
|
|
|
ClearList(DYMO\MRU_Files())
|
|
ClearList(DYMO\Objects())
|
|
ClearList(DYMO\Printers())
|
|
|
|
EndProcedure
|
|
|
|
ProcedureDLL DYMO_ExaminePrinters()
|
|
Protected Temp.s, i
|
|
ClearList(DYMO\Printers())
|
|
|
|
; get string vom dls
|
|
Temp.s = DYMO\COM\AddIn\GetStringProperty("GetDymoPrinters()")
|
|
|
|
; split string and fill list
|
|
For i = 0 To CountString(Temp, "|")
|
|
AddElement(DYMO\Printers())
|
|
DYMO\Printers() = StringField(Temp, i + 1, "|")
|
|
Next
|
|
|
|
ResetList(DYMO\Printers())
|
|
ProcedureReturn ListSize(DYMO\Printers())
|
|
EndProcedure
|
|
ProcedureDLL.s DYMO_NextPrinter()
|
|
DYMO\RetVar\NextPrinter = #Null$
|
|
|
|
If NextElement(DYMO\Printers())
|
|
DYMO\RetVar\NextPrinter = DYMO\Printers()
|
|
EndIf
|
|
|
|
ProcedureReturn DYMO\RetVar\NextPrinter
|
|
EndProcedure
|
|
ProcedureDLL DYMO_SelectPrinter(PrinterName.s)
|
|
|
|
ProcedureReturn DYMO\COM\AddIn\GetIntegerProperty("SelectPrinter('" + PrinterName + "')")
|
|
EndProcedure
|
|
ProcedureDLL DYMO_IsTwinTurboPrinter(PrinterName.s)
|
|
|
|
ProcedureReturn DYMO\COM\AddIn\GetIntegerProperty("IsTwinTurboPrinter('" + PrinterName + "')")
|
|
EndProcedure
|
|
ProcedureDLL DYMO_GetCurrentPaperTray()
|
|
|
|
ProcedureReturn DYMO\COM\AddIn\GetIntegerProperty("GetCurrentPaperTray()");
|
|
EndProcedure
|
|
ProcedureDLL.s DYMO_GetCurrentPrinterName()
|
|
DYMO\RetVar\GetCurrentPrinterName = DYMO\COM\AddIn\GetStringProperty("GetCurrentPrinterName()")
|
|
ProcedureReturn DYMO\RetVar\GetCurrentPrinterName
|
|
EndProcedure
|
|
ProcedureDLL DYMO_StartPrintJob()
|
|
|
|
DYMO\COM\AddIn\Invoke("StartPrintJob()")
|
|
EndProcedure
|
|
ProcedureDLL DYMO_StopPrintJob()
|
|
|
|
DYMO\COM\AddIn\Invoke("EndPrintJob()")
|
|
EndProcedure
|
|
ProcedureDLL DYMO_OpenLabel(File.s, ShowDialogBoxIfFail = #False)
|
|
|
|
If ShowDialogBoxIfFail
|
|
ProcedureReturn DYMO\COM\AddIn\GetIntegerProperty("Open2('" + File + "')")
|
|
Else
|
|
ProcedureReturn DYMO\COM\AddIn\GetIntegerProperty("Open('" + File + "')")
|
|
EndIf
|
|
|
|
EndProcedure
|
|
ProcedureDLL DYMO_SaveLabel(File.s = #Null$)
|
|
|
|
If File = #Null$
|
|
ProcedureReturn DYMO\COM\AddIn\GetIntegerProperty("Save()")
|
|
Else
|
|
ProcedureReturn DYMO\COM\AddIn\GetIntegerProperty("SaveAs('" + File + "')")
|
|
EndIf
|
|
|
|
EndProcedure
|
|
ProcedureDLL DYMO_PrintLabel(Copies = 1, Tray = #DYMO_Tray_Unknown, ShowDialog = #False)
|
|
|
|
Select Tray
|
|
Case #DYMO_Tray_Left, #DYMO_Tray_Right, #DYMO_Tray_Auto
|
|
ProcedureReturn DYMO\COM\AddIn\GetIntegerProperty("Print2(" + Str(Copies) + "," + Str(ShowDialog) + "," + Str(Tray) + ")")
|
|
Default
|
|
ProcedureReturn DYMO\COM\AddIn\GetIntegerProperty("Print(" + Str(Copies) + "," + Str(ShowDialog) + ")")
|
|
EndSelect
|
|
|
|
EndProcedure
|
|
ProcedureDLL DYMO_IsPrinterOnline(PrinterName.s)
|
|
|
|
ProcedureReturn DYMO\COM\AddIn\GetIntegerProperty("IsPrinterOnline('" + PrinterName + "')")
|
|
EndProcedure
|
|
ProcedureDLL DYMO_OpenMemory(*Buffer, BufferSize)
|
|
Protected *Var.VARIANT
|
|
Protected Ret = #False
|
|
|
|
; Create Variant bufffer and copy data
|
|
*Var = INTERNAL_DYMO_Buffer2Variant(*Buffer, BufferSize)
|
|
|
|
If *Var
|
|
Ret = DYMO\COM\AddIn\GetIntegerProperty("OpenStream(" + Str(*Var) + " AS VARIANT BYREF)")
|
|
VariantClear_(*Var)
|
|
ClearStructure(*Var, VARIANT)
|
|
EndIf
|
|
|
|
ProcedureReturn Ret
|
|
EndProcedure
|
|
ProcedureDLL DYMO_SaveMemory()
|
|
Protected *Var.VARIANT
|
|
Protected *Ret = #Null
|
|
|
|
; get return *variant from property
|
|
*Var = DYMO\COM\AddIn\GetVariantProperty("SaveStream()")
|
|
If *Var
|
|
*Ret = INTERNAL_DYMO_Variant2Buffer(*Var) ; allocate some memory and copy data
|
|
VariantClear_(*Var)
|
|
EndIf
|
|
|
|
ProcedureReturn *Ret
|
|
EndProcedure
|
|
ProcedureDLL DYMO_OpenURL(URL.s)
|
|
|
|
ProcedureReturn DYMO\COM\AddIn\GetIntegerProperty("OpenURL('" + URL + "')")
|
|
EndProcedure
|
|
ProcedureDLL DYMO_MRU_ExamineFiles()
|
|
Protected Temp.s, i
|
|
ClearList(DYMO\MRU_Files())
|
|
|
|
; get string from dls
|
|
Temp.s = DYMO\COM\AddIn\GetStringProperty("GetMRULabelFiles()")
|
|
|
|
; split string and fill list
|
|
For i = 0 To CountString(Temp, "|")
|
|
AddElement(DYMO\MRU_Files())
|
|
DYMO\MRU_Files() = StringField(Temp, i + 1, "|")
|
|
Next
|
|
|
|
ResetList(DYMO\MRU_Files())
|
|
ProcedureReturn ListSize(DYMO\MRU_Files())
|
|
EndProcedure
|
|
ProcedureDLL.s DYMO_MRU_NextFile()
|
|
DYMO\RetVar\MRU_NextFile = #Null$
|
|
|
|
If NextElement(DYMO\MRU_Files())
|
|
DYMO\RetVar\MRU_NextFile = DYMO\MRU_Files()
|
|
EndIf
|
|
|
|
ProcedureReturn DYMO\RetVar\MRU_NextFile
|
|
EndProcedure
|
|
ProcedureDLL DYMO_MRU_GetFileCount()
|
|
|
|
ProcedureReturn DYMO\COM\AddIn\GetIntegerProperty("GetMRULabelFileCount()")
|
|
EndProcedure
|
|
ProcedureDLL.s DYMO_MRU_GetFileName(Index)
|
|
DYMO\RetVar\MRU_GetFileName = DYMO\COM\AddIn\GetStringProperty("GetMRULabelFileName(" + Str(Index) + ")")
|
|
ProcedureReturn DYMO\RetVar\MRU_GetFileName
|
|
EndProcedure
|
|
ProcedureDLL DYMO_MRU_OpenFile(Index)
|
|
|
|
ProcedureReturn DYMO\COM\AddIn\GetIntegerProperty("OpenMRULabelFile(" + Str(Index) + ")")
|
|
EndProcedure
|
|
ProcedureDLL DYMO_SetPrintMode(HighQuality = #True)
|
|
|
|
If HighQuality
|
|
DYMO\COM\AddIn\Invoke("SetGraphicsAndBarcodePrintMode(#True)")
|
|
Else
|
|
DYMO\COM\AddIn\Invoke("SetGraphicsAndBarcodePrintMode(#False)")
|
|
EndIf
|
|
|
|
EndProcedure
|
|
ProcedureDLL DYMO_SmartPasteFromClipboard()
|
|
|
|
ProcedureReturn DYMO\COM\AddIn\GetIntegerProperty("SmartPasteFromClipboard()")
|
|
EndProcedure
|
|
ProcedureDLL DYMO_SmartPasteFromFile(File.s)
|
|
|
|
ProcedureReturn DYMO\COM\AddIn\GetIntegerProperty("SmartPasteFromFile('" + File + "')")
|
|
EndProcedure
|
|
ProcedureDLL DYMO_SmartPasteFromString(Text.s)
|
|
|
|
ProcedureReturn DYMO\COM\AddIn\GetIntegerProperty("SmartPasteFromString('" + Text + "')")
|
|
EndProcedure
|
|
ProcedureDLL DYMO_ProxySetup(Protocol.s, ServerName.s, Port.l, ProxyBypass.s, UserName.s, Password.s)
|
|
|
|
DYMO\COM\AddIn\Invoke("SetupProxySettings('" +
|
|
Protocol + "','" +
|
|
ServerName + "'," +
|
|
Str(Port) + ",'" +
|
|
ProxyBypass + "','" +
|
|
UserName + "','" +
|
|
Password + "')")
|
|
EndProcedure
|
|
ProcedureDLL DYMO_ProxyClearSettings()
|
|
|
|
DYMO\COM\AddIn\Invoke("ClearProxySettings()")
|
|
EndProcedure
|
|
ProcedureDLL DYMO_ProxyBypass(Set = #True) ; #False = default
|
|
|
|
If Set
|
|
DYMO\COM\AddIn\SetProperty("proxyBypass = #True")
|
|
Else
|
|
DYMO\COM\AddIn\SetProperty("proxyBypass = #False")
|
|
EndIf
|
|
|
|
EndProcedure
|
|
ProcedureDLL DYMO_ExamineObjects(VariableOnly = #True)
|
|
Protected Temp.s, i
|
|
ClearList(DYMO\Objects())
|
|
|
|
; get string of objects
|
|
If VariableOnly
|
|
Temp.s = DYMO\COM\Labels\GetStringProperty("GetObjectNames(#True)")
|
|
Else
|
|
Temp.s = DYMO\COM\Labels\GetStringProperty("GetObjectNames(#False)")
|
|
EndIf
|
|
|
|
; split string and fill list
|
|
For i = 0 To CountString(Temp, "|")
|
|
AddElement(DYMO\Objects())
|
|
DYMO\Objects() = StringField(Temp, i + 1, "|")
|
|
Next
|
|
|
|
ResetList(DYMO\Objects())
|
|
ProcedureReturn ListSize(DYMO\Objects())
|
|
EndProcedure
|
|
ProcedureDLL.s DYMO_NextObject()
|
|
DYMO\RetVar\NextObject = #Null$
|
|
|
|
If NextElement(DYMO\Objects())
|
|
DYMO\RetVar\NextObject = DYMO\Objects()
|
|
EndIf
|
|
|
|
ProcedureReturn DYMO\RetVar\NextObject
|
|
EndProcedure
|
|
ProcedureDLL.s DYMO_GetText(Object.s)
|
|
DYMO\RetVar\GetText = DYMO\COM\Labels\GetStringProperty("GetText('" + Object + "')")
|
|
ProcedureReturn DYMO\RetVar\GetText
|
|
EndProcedure
|
|
ProcedureDLL DYMO_SetAddress(Address.s, Index = 1)
|
|
|
|
ProcedureReturn DYMO\COM\Labels\GetIntegerProperty("SetAddress(" + Str(Index) + ",'" + Address + "')")
|
|
EndProcedure
|
|
ProcedureDLL DYMO_SetField(Object.s, Text.s)
|
|
|
|
ProcedureReturn DYMO\COM\Labels\GetIntegerProperty("SetField('" + Object + "','" + Text + "')")
|
|
EndProcedure
|
|
ProcedureDLL DYMO_GetAddressFieldCount()
|
|
|
|
ProcedureReturn DYMO\COM\Labels\GetIntegerProperty("AddressFieldCount()")
|
|
EndProcedure
|
|
ProcedureDLL DYMO_SetAddressPOSTNET(POSTNET_Pos.s, Index = 1)
|
|
|
|
DYMO\COM\Labels\Invoke("POSTNET(" + Str(Index) + ",'" + POSTNET_Pos + "')")
|
|
EndProcedure
|
|
ProcedureDLL DYMO_SetImageFile(Object.s, File.s)
|
|
|
|
ProcedureReturn DYMO\COM\Labels\GetIntegerProperty("SetImageFile('" + Object + "','" + File + "')")
|
|
EndProcedure
|
|
ProcedureDLL DYMO_SetImageURL(Object.s, URL.s)
|
|
|
|
ProcedureReturn DYMO\COM\Labels\GetIntegerProperty("SetImageURL('" + Object + "','" + URL + "',#NUllString)")
|
|
EndProcedure
|
|
ProcedureDLL DYMO_PasteFromClipboard(Object.s)
|
|
|
|
ProcedureReturn DYMO\COM\Labels\GetIntegerProperty("PasteFromClipboard('" + Object + "')")
|
|
EndProcedure
|
|
ProcedureDLL DYMO_PasteImageFromClipboard(Object.s)
|
|
|
|
ProcedureReturn DYMO\COM\Labels\GetIntegerProperty("PasteImageFromClipboard('" + Object + "')")
|
|
EndProcedure
|
|
|
|
Procedure INTERNAL_DYMO_Variant2Buffer(*Var.VARIANT)
|
|
Protected Size, *Ret = #Null, *SafeArray.SAFEARRAY
|
|
|
|
If *Var And *Var\vt = #VT_ARRAY|#VT_UI1 And *Var\parray
|
|
*SafeArray = *Var\parray
|
|
Size = *SafeArray\rgsabound[0]\cElements - *SafeArray\rgsabound[0]\lLbound
|
|
If Size
|
|
*Ret = AllocateMemory(Size)
|
|
If *Ret
|
|
If SafeArrayLock_(*SafeArray) = #S_OK
|
|
CopyMemory(*SafeArray\pvData, *Ret, Size)
|
|
SafeArrayUnlock_(*SafeArray)
|
|
Else
|
|
FreeMemory(*Ret)
|
|
*Ret = #Null
|
|
EndIf
|
|
EndIf
|
|
EndIf
|
|
EndIf
|
|
|
|
ProcedureReturn *Ret
|
|
EndProcedure
|
|
Procedure INTERNAL_DYMO_Buffer2Variant(*Buffer, BufferSize)
|
|
Protected *SafeArray.SAFEARRAY, SafeArrayBound.SAFEARRAYBOUND
|
|
Protected *Ret_Variant.VARIANT = AllocateStructure(VARIANT)
|
|
|
|
If *Ret_Variant And *Buffer And BufferSize > 0
|
|
VariantClear_(*Ret_Variant)
|
|
SafeArrayBound\lLbound = 0
|
|
SafeArrayBound\cElements = BufferSize
|
|
*SafeArray = SafeArrayCreate_(#VT_UI1, 1, SafeArrayBound)
|
|
If *SafeArray
|
|
If SafeArrayLock_(*SafeArray) = #S_OK
|
|
CopyMemory(*Buffer, *SafeArray\pvData, BufferSize)
|
|
*Ret_Variant\vt = #VT_ARRAY|#VT_UI1
|
|
*Ret_Variant\parray = *SafeArray
|
|
SafeArrayUnlock_(*SafeArray)
|
|
EndIf
|
|
EndIf
|
|
EndIf
|
|
|
|
ProcedureReturn *Ret_Variant
|
|
EndProcedure
|
|
|
|
DisableExplicit
|
|
; CursorPosition = 1
|
|
; Folding = AAAAAAAA-
|
|
; EnableXP
|
|
; CompileSourceDirectory
|
|
; EnableCompileCount = 0
|
|
; EnableBuildCount = 0
|
|
; EnableExeConstant
|
|
; EnableUnicode
|