Code: Alles auswählen
FUNCTION Outlook(sOrt, sBetreff, dDatum, sTimeVon, sTimeBis, sText)
LOCAL nZeilen:=0
SET Date Format "yyyymmdd"
SetDefaultString(sOrt,"")
SetDefaultString(sBetreff,"")
SetDefaultDate(dDatum,Date())
SetDefaultString(sTimeVon," : : ")
SetDefaultString(sTimeBis,Time())
SetDefaultString(sText,"")
SETPRC(0,0)
SET PRINTER TO (_SDATEI_BEN(100)+"OUTLOOK.ICS")
SET DEVICE TO PRINTER
SET CONSOLE OFF
SET PRINT ON
@ nZeilen,0 SAY "BEGIN:VCALENDAR";nZeilen++
@ nZeilen,0 SAY "PRODID:-//Microsoft Corporation//Outlook 14.0 MIMEDIR//EN";nZeilen++
@ nZeilen,0 SAY "VERSION:2.0";nZeilen++
@ nZeilen,0 SAY "METHOD:PUBLISH";nZeilen++
@ nZeilen,0 SAY "X-MS-OLK-FORCEINSPECTOROPEN:TRUE";nZeilen++
@ nZeilen,0 SAY "BEGIN:VEVENT";nZeilen++
@ nZeilen,0 SAY "CLASS:PUBLIC";nZeilen++
IF ! empty(sText)
@ nZeilen,0 SAY "DESCRIPTION:"+ANSItoUTF8(sText);nZeilen++
ENDIF
@ nZeilen,0 SAY "DTEND:"+DtoS(dDatum)+"T"+SubStr(sTimeVon,1,2)+SubStr(sTimevon,4,2)+"00Z";nZeilen++
@ nZeilen,0 SAY "DTSTART:"+DtoS(dDatum)+"T"+SubStr(sTimeBis,1,2)+SubStr(sTimeBis,4,2)+"00Z";nZeilen++
IF ! empty(sOrt)
@ nZeilen,0 SAY "LOCATION:"+ANSItoUTF8(sOrt);nZeilen++
ENDIF
@ nZeilen,0 SAY "PRIORITY:5";nZeilen++
@ nZeilen,0 SAY "SEQUENCE:0";nZeilen++
IF ! empty(sBetreff)
@ nZeilen,0 SAY "SUMMARY;LANGUAGE=de-ch:"+ANSItoUTF8(sBetreff);nZeilen++
ENDIF
@ nZeilen,0 SAY "TRANSP:OPAQUE";nZeilen++
@ nZeilen,0 SAY "X-MICROSOFT-CDO-BUSYSTATUS:BUSY";nZeilen++
@ nZeilen,0 SAY "X-MICROSOFT-CDO-IMPORTANCE:1";nZeilen++
@ nZeilen,0 SAY "X-MICROSOFT-DISALLOW-COUNTER:FALSE";nZeilen++
@ nZeilen,0 SAY "X-MS-OLK-AUTOFILLLOCATION:FALSE";nZeilen++
@ nZeilen,0 SAY "X-MS-OLK-CONFTYPE:0";nZeilen++
@ nZeilen,0 SAY "BEGIN:VALARM";nZeilen++
@ nZeilen,0 SAY "TRIGGER:-PT"+AppIni():GetEntry("INIT", "OUTLOOK_TRIGGER","30","C")+"M";nZeilen++
@ nZeilen,0 SAY "ACTION:DISPLAY";nZeilen++
@ nZeilen,0 SAY "DESCRIPTION:Reminder";nZeilen++
@ nZeilen,0 SAY "END:VALARM";nZeilen++
@ nZeilen,0 SAY "END:VEVENT";nZeilen++
@ nZeilen,0 SAY "END:VCALENDAR";nZeilen++
SET PRINT OFF
SET DEVICE TO SCREEN
SET CONSOLE ON
SET Printer OFF
SET Printer to
SET Date GERMAN
apiShellExecute(NIL, SHELL_OPEN, _SDATEI_BEN(100)+"OUTLOOK.ICS")
Return .T.
function ANSItoUTF8( cAnsi )
Local i
Local imax := Len(cAnsi)
Local cstr := ""
Local cbin := ""
for i := 1 to imax
//-- das reicht erst einmal, da in Xbase die Funktion Asc()
//-- nur Wert im Bereich zwischen 0 und 255 zurück gibt
If asc(cAnsi[I]) > 127
cbin:="110000"+ntoc(asc(cAnsi[I]),2)
cstr +=Chr(cton(left(cbin,8),2))+Chr(cton("10"+right(cbin,6),2))
else
cstr +=cAnsi[I]
endif
next
cUtf8 := cstr
return cUtf8
FUNCTION cton( cBin )
LOCAL iPos := 0
LOCAL iCount:= 0
LOCAL iInt := 0
LOCAL iWert := 0
LOCAL cTemp := ""
cBin := Alltrim(cBin)
iCount := LEN(cBin)
FOR iPos = 0 to iCount-1
cTemp := cBin[iCount-iPos]
iWert := val(cTemp)
iInt := iInt + ( iWert * (2^(iPos)) )
NEXT
RETURN Int(iInt)