Seite 1 von 1
Outlook Termine auslesen und erstellen (PureDisphelper?)
Verfasst: 17.06.2008 17:30
von ndklinux
Hallo an alle,
Hat vielleicht jemand eine Idee wie man bei Outlook (2003) Termine über PureBasic auslesen und erstellen kann.
Habe schon das ganze Internet durchgegooglet aber leider nichts erreicht ;(
Vielen Dank
Re: Outlook Termine auslesen und erstellen (PureDisphelper?)
Verfasst: 17.06.2008 20:31
von Kiffi
ndklinux hat geschrieben:Hat vielleicht jemand eine Idee wie man bei Outlook (2003) Termine über PureBasic auslesen und erstellen kann.
ich selber nutze Outlook nicht und meines Wissens gibt es noch keinen
entsprechenden PB-Code hierzu.
Wenn Du allerdings einen Code in VB(S) zum Thema findest (und ich
vermute stark, dass es davon etliche gibt): Den kann man relativ leicht und
fast eins zu eins in die PureDispHelper-Syntax umsetzen.
Also: Noch mal an die Google-Maschine setzen, fleissig suchen und wenn Du
fündig geworden bist, den Code hier posten.
Grüße .... Kiffi
Verfasst: 18.06.2008 02:05
von ndklinux
Hallo,
Danke für die Antwort. Ich habe mal dies hier zum erstellen eines Termins gefunden. Beim auslesen der Termine bin ich noch nicht weiter gekommen.
Code: Alles auswählen
' Create a new appointment.
Dim olAppt As Outlook.AppointmentItem
Set olAppt = olApp.CreateItem(olAppointmentItem)
' Set start time for 2-minutes from now...
olAppt.Start = Now() + (2# / 24# / 60#)
' Setup other appointment information...
With olAppt
.Duration = 60
.Subject = "Meeting to discuss plans..."
.Body = "Meeting with " & olItem.FullName & " to discuss plans."
.Location = "Home Office"
.ReminderMinutesBeforeStart = 1
.ReminderSet = True
End With
' Save Appointment...
olAppt.Save
Alles in Visual Basic, kann man das nach PB übersetzen?
Verfasst: 18.06.2008 09:56
von Kiffi
ndklinux, Du Schlingel! Du solltest doch einen
funktionierenden
Code posten
Code: Alles auswählen
EnableExplicit
Define.l olApp ; Application
Define.l olAppt ; AppointmentItem
Define.d StartDate ; Startdatum als Double!
#olAppointmentItem = 1
olApp = dhCreateObject("Outlook.Application")
If olApp
dhGetValue("%o", @olAppt, olApp, ".CreateItem(%d)", #olAppointmentItem)
If olAppt
; Set start time for 2-minutes from now...
StartDate = AddDate(Date(), #PB_Date_Minute, 2)
StartDate = StartDate / 86400.0 + 25569.0
dhPutValue(olAppt, ".Start = %D", @StartDate)
; Setup other appointment information...
dhPutValue(olAppt, ".Duration = %d", 60)
dhPutValue(olAppt, ".Subject = %T", @"Remember...")
dhPutValue(olAppt, ".Body = %T", @"PureBasic: Feel the ..Pure.. Power :-)")
dhPutValue(olAppt, ".Location = %T", @"PureBoard")
dhPutValue(olAppt, ".ReminderMinutesBeforeStart = %d", 1)
dhPutValue(olAppt, ".ReminderSet = %d", #True)
; Save Appointment...
dhCallMethod(olAppt, ".Save")
dhReleaseObject(olAppt)
Else
Debug "!olAppt"
EndIf
dhReleaseObject(olApp)
Else
Debug "!olApp"
EndIf
Schau Dir den Code mal in Ruhe an und vergleiche ihn mit dem VB-Code.
Du wirst eine Menge an Parallelen erkennen und sehen, dass die
Umsetzung zwischen den beiden Programmiersprachen gar nicht so
schwierig ist.
Grüße ... Kiffi
Verfasst: 20.06.2008 19:28
von marco2007
Hi,
das sollte mal weiterhelfen:
Code: Alles auswählen
Procedure.s VBScriptCode()
Protected VBS$
VBS$ + "Const cal = 9" + #CRLF$
VBS$ + "Set objOutlook = CreateObject(" + Chr(34) + "Outlook.Application" + Chr(34) + ")" + #CRLF$
VBS$ + "Set objNamespace = objOutlook.GetNamespace(" + Chr(34) + "MAPI" + Chr(34) + ")" + #CRLF$
VBS$ + "Set objFolder = objNamespace.GetDefaultFolder(cal)" + #CRLF$
VBS$ + "Set colItems = objFolder.Items" + #CRLF$
VBS$ + "Anzahl = colItems.Count" + #CRLF$
VBS$ + "For Each objItem in colItems" + #CRLF$
VBS$ + "name = name & objItem & vbCRLF & objItem.start & vbCRLF & objItem.End & vbCRLF & objItem.body & vbCRLF & vbCRLF"+ #CRLF$
VBS$ + "Next" + #CRLF$
ProcedureReturn VBS$
EndProcedure
SCtr_SetLanguage("VBScript")
SCtr_AddCode(VBScriptCode())
MessageRequester(SCtr_EvalStr("Anzahl") + " Einträge", SCtr_EvalStr("name"))
Für PureDisphelper mußt Du es jedoch noch ein bißchen anpassen.
Ich habe hier das ScriptControl von TS-Soft & MK-Soft verwendet.
http://www.purebasic.fr/german/viewtopic.php?t=8761
lg
Marco
Verfasst: 20.06.2008 20:26
von marco2007
...und da ich schon auf
http://support.microsoft.com/kb/201095/de war. Folgender VBS-Code fügt Outlook einen PureBasic-Button hinzu:
Code: Alles auswählen
; Outlook muss geöffnet sein!
Procedure.s VBS_AddButton()
Protected VBS$
VBS$ + "Set ol = CreateObject(" + Chr(34) + "Outlook.Application" + Chr(34) + ")" + #CRLF$
VBS$ + "Set objBar = ol.ActiveExplorer.CommandBars.Item(" + Chr(34) + "Standard" + Chr(34) + ")" + #CRLF$
VBS$ + "Set objButton = objBar.Controls.Add(, , , , True)" + #CRLF$
VBS$ + "With objButton" + #CRLF$
VBS$ + ".caption = " + Chr(34) + "PureBasic"+ Chr(34) + #CRLF$
VBS$ + ".Tooltiptext = " + Chr(34) + "Feel the Pure Power" + Chr(34) + #CRLF$
VBS$ + ".Visible = True " + #CRLF$
VBS$ + "End With" + #CRLF$
ProcedureReturn VBS$
EndProcedure
SCtr_SetLanguage("VBScript")
SCtr_AddCode(VBS_AddButton())
lg
Marco
Verfasst: 21.06.2008 00:38
von ndklinux
Hi,
Vielen Dank das mit dem erstellen der Termine klappt wunderbar.
Zum Auslesen von Outlook Terminen habe ich folgenden Code in PHp gefunden. Werde versuchen den in PB umzusetzen. Poste ihn dann hier falls mal jemand so etwas braucht.
Code: Alles auswählen
<?
$outlook = new COM("outlook.application") or die("Konnte Outlook nicht instantiieren");
print "Outlook Version {$outlook->Version}, Product-Code {$outlook->ProductCode}";
$myNameSpace = $outlook->GetNamespace("MAPI");
$myNameSpace->Logon('Outlook');
$myFolder = $myNameSpace->GetDefaultFolder(9);
$colItems = $myFolder->Items;
foreach($colItems as $item) {
echo "Start: ".$item->Start."\n";
echo "Ende: ".$item->End."\n";
echo "Location: ".$item->Location."\n";
echo "Subject: ".$item->Subject."\n";
echo "Sensitivity: ".$item->Sensitivity."\n";
echo "Body: ".$item->Body."\n";
echo "LastModificationTime: ".$item->LastModificationTime."\n\n";
}
?>
Verfasst: 21.06.2008 08:30
von marco2007
...Du kannst doch meinen ersten Code verwenden...der ist bereits umgesetzt und funktioniert.
Okay, hier das selbe noch mal mit PureDisphelper:
Code: Alles auswählen
EnableExplicit
Procedure.s Termine()
Protected VBS$
VBS$ + "Const cal = 9" + #CRLF$
VBS$ + "Set objOutlook = CreateObject(" + Chr(34) + "Outlook.Application" + Chr(34) + ")" + #CRLF$
VBS$ + "Set objNamespace = objOutlook.GetNamespace(" + Chr(34) + "MAPI" + Chr(34) + ")" + #CRLF$
VBS$ + "Set objFolder = objNamespace.GetDefaultFolder(cal)" + #CRLF$
VBS$ + "Set colItems = objFolder.Items" + #CRLF$
VBS$ + "Anzahl = colItems.Count" + #CRLF$
VBS$ + "For Each objItem in colItems" + #CRLF$
VBS$ + "name = name & objItem & vbCRLF & objItem.start & vbCRLF & objItem.End & vbCRLF & objItem.body & vbCRLF & vbCRLF"+ #CRLF$
VBS$ + "Next" + #CRLF$
ProcedureReturn VBS$
EndProcedure
dhToggleExceptions(#True)
Define.l Result, Anzahl, obj = dhCreateObject("MSScriptControl.ScriptControl")
Define.s Script
If obj
dhPutValue(obj, "Language = %T", @"VBScript")
Script = Termine()
dhCallMethod(obj, "AddCode(%T)", @Script)
dhGetValue("%T", @Result, obj, "Eval(%T)", @"name")
dhGetValue("%T", @Anzahl, obj, "Eval(%T)", @"Anzahl")
MessageRequester(PeekS(Anzahl)+ " Termine", PeekS(Result))
EndIf
Das hier ist nicht schlecht:
www.easyon.at/support/prog/vb/outlook/files/vbso.pdf
lg
Marco