https://sites.google.com/site/foxscheduler/
However, while it looks okay, there is an exchange of thoughts about the advantage of using Google Calendar instead of that which is the ability to share data not only within our app but also to our personal computers and mobile devices. That is a valid point but the thing I dislike is in order to do that, is to rely on Google's own APIs as they may change those now and then; for the betterment of google products.
And so with that in mind, and taking into consideration the argument about that sharing capability, here instead is my preferred way. Not using google API but to embed Google Calendar via Internet Explorer automation within our form:
Declare Integer GetWindowLong In User32 Integer HWnd, Integer nIndex
Declare Integer SetWindowLong In user32 Integer HWnd,;
INTEGER nIndex, Integer dwNewLong
Declare Integer SetWindowPos In user32;
INTEGER HWnd,;
INTEGER hWndInsertAfter,;
INTEGER x,;
INTEGER Y,;
INTEGER cx,;
INTEGER cy,;
INTEGER uFlags
Declare Integer SetParent In user32;
INTEGER hWndChild,;
INTEGER hWndNewParent
loTest = Createobject("Form1")
loTest.Show(1)
Read Events
Define Class Form1 As Form
Caption
= 'Google Calendar
on Form'
AutoCenter = .T.
Height = 700
Width = 900
ShowWindow = 2
oIE = .F.
Procedure Init
Local
lcURL, lnStyle, loHWnd, loIE As internetexplorer.Application
lcURL = 'https://calendar.google.com/calendar/r'
loIE = Createobject("InternetExplorer.Application")
Thisform.oIE = m.loIE
With loIE
.Visible = .F.
.Silent = .T.
.FullScreen=.T.
.Navigate2(m.lcURL)
.ClientToWindow(.Width,.Height)
Do While .ReadyState <> 4
Enddo
loHWnd = .HWnd
lnStyle = GetWindowLong(m.loHWnd, -6)
SetWindowLong(m.loHWnd, -12, Bitxor(lnStyle, 0x00400000))
SetParent(m.loHWnd,Thisform.HWnd)
This._Resize()
.Visible = .T.
Endwith
Bindevent(This,'_Resize',This,'Resize')
Endproc
Procedure
_Resize
With Thisform
SetWindowPos(.oIE.HWnd, 1, .Left, .Top, .Width, .Height,0x0001)
Endwith
Endproc
Procedure
Destroy
Clear
Events
This.oIE.Quit
This.oIE = Null
Endproc
Procedure
KeyPress
Lparameters
nKeyCode, nShiftAltCtrl
If m.nKeyCode = 27
Thisform.Release
Endif
Endproc
Enddefine
If you haven't logged in at your google account yet when you first run this, it will require you to. After that, IE will remember it and the next runs will go straight to Google Calendar.
No comments:
Post a Comment