XProfan & PHP Version/Update abfragen
[ Nach unten | Zum letzten Beitrag | Thema abonnieren | Neueste Beiträge zuerst ]
XProfan & PHP Version/Update abfragen
von Paradox am 26.02.2009 19:41Folgenden PHP Code auf PHP-fähigen Webspace hochladen und nach version.php benennen.
<?
$ver = $HTTP_GET_VARS[ver];
// hier immer die aktuelle Version eintragen
$version_aktuell = "1.1";
// Versionsvergleich
if($version_aktuell != $ver) {
echo "0";
}
else {
echo "1";
}
?>
$ver = $HTTP_GET_VARS[ver];
// hier immer die aktuelle Version eintragen
$version_aktuell = "1.1";
// Versionsvergleich
if($version_aktuell != $ver) {
echo "0";
}
else {
echo "1";
}
?>
Folgender XProfan Code ist von Uwe 'Pascal' Niemeyer (tomcatsoft):
$H Windows.ph
Proc StringToGUID
Parameters GUID$,GUID&
Declare Temp$
Temp$=space$(80)
~MultiByteToWideChar(1,1,addr(GUID$),-1,addr(Temp$),80)
external("ole32","CLSIDFromString",addr(Temp$),GUID&)
EndProc
Proc CallMethod
Parameters IFace&,Method&
Declare VTable&
VTable&=long(IFace&,0)
Method&=long(VTable&,Method&*4)
case %pcount=2:return call( Method&,IFace& )
case %pcount=3:return call( Method&,IFace&,&(3) )
case %pcount=4:return call( Method&,IFace&,&(3),$(4) )
case %pcount=5:return call( Method&,IFace&,&(3),&(4),&(5) )
EndProc
Proc Quelltext_Lesen
Parameters WebCtrl&
Declare IID#,Error&,IUnknown&,IWebBrowser&,Status&,IHTMLDocument2&,IHTMLElement&,Text&
Declare Size&,Text#,Text$
Dim IID#,16
external("ole32","CoInitialize",0)
Error&=external("atl","AtlAxGetControl",WebCtrl&,addr(IUnknown&))
StringToGUID("{D30C1661-CDAF-11d0-8A3E-00C04FC9E26E}",IID#)
Error&=CallMethod(IUnknown&,0,IID#,addr(IWebBrowser&))
While 1
Sleep 300
Error&=CallMethod(IWebBrowser&,31,addr(Status&))
CaseNot Status&:Break
EndWhile
Error&=CallMethod(IWebbrowser&,18,addr(IHTMLDocument2&))
Error&=CallMethod(IHTMLDocument2&,9,addr(IHTMLElement&))
Error&=CallMethod(IHTMLElement&,62,addr(Text&))
Size&=external("oleaut32","SysStringLen",Text&)
Dim Text#,Size&
~WideCharToMultiByte(0,0,Text&,-1,Text#,Size&,0,0)
external("oleaut32","SysFreeString",Text&)
Text$=string$(Text#,0)
CallMethod(IHTMLElement&,2)
CallMethod(IHTMLDocument2&,2)
Dispose Text#
Dispose IID#
external("ole32","CoUninitialize")
Return Text$
EndProc
Def AtlAxWinInit(0) ! "atl.dll","AtlAxWinInit"
Def AtlAxCreateControl(4) ! "atl.dll","AtlAxCreateControl"
Declare Atl&,Web&,a$,version$
Window 200,400-800,030
UserMessages 16
Atl& = Usedll("atl.dll")
AtlAxWinInit()
Version$="1.1"
a$ = "http://paradox.bplaced.net/version.php?ver="+version$'- Pfad oder URL zum PHP Script
'Diese URL kann und darf zum testen verwendet werden.
Web& = control("AtlAxWin",a$,$50300000,0,0,0,0,%hwnd,0,0,$200)'-HTML-Contol anlegen
a$ = Quelltext_Lesen(Web&)
a$ = Translate$(a$,"<BODY>","")
a$ = Translate$(a$,"</BODY>","")
If Right$(a$,1) ="1"
SetText %hwnd,"Software aktuell"
Else
SetText %hwnd,"Bitte Software aktualisieren"
EndIf
While 1
Waitinput
Case %umessage=16:Break
EndWhile
DestroyWindow(Web&)
Freedll Atl&
Proc StringToGUID
Parameters GUID$,GUID&
Declare Temp$
Temp$=space$(80)
~MultiByteToWideChar(1,1,addr(GUID$),-1,addr(Temp$),80)
external("ole32","CLSIDFromString",addr(Temp$),GUID&)
EndProc
Proc CallMethod
Parameters IFace&,Method&
Declare VTable&
VTable&=long(IFace&,0)
Method&=long(VTable&,Method&*4)
case %pcount=2:return call( Method&,IFace& )
case %pcount=3:return call( Method&,IFace&,&(3) )
case %pcount=4:return call( Method&,IFace&,&(3),$(4) )
case %pcount=5:return call( Method&,IFace&,&(3),&(4),&(5) )
EndProc
Proc Quelltext_Lesen
Parameters WebCtrl&
Declare IID#,Error&,IUnknown&,IWebBrowser&,Status&,IHTMLDocument2&,IHTMLElement&,Text&
Declare Size&,Text#,Text$
Dim IID#,16
external("ole32","CoInitialize",0)
Error&=external("atl","AtlAxGetControl",WebCtrl&,addr(IUnknown&))
StringToGUID("{D30C1661-CDAF-11d0-8A3E-00C04FC9E26E}",IID#)
Error&=CallMethod(IUnknown&,0,IID#,addr(IWebBrowser&))
While 1
Sleep 300
Error&=CallMethod(IWebBrowser&,31,addr(Status&))
CaseNot Status&:Break
EndWhile
Error&=CallMethod(IWebbrowser&,18,addr(IHTMLDocument2&))
Error&=CallMethod(IHTMLDocument2&,9,addr(IHTMLElement&))
Error&=CallMethod(IHTMLElement&,62,addr(Text&))
Size&=external("oleaut32","SysStringLen",Text&)
Dim Text#,Size&
~WideCharToMultiByte(0,0,Text&,-1,Text#,Size&,0,0)
external("oleaut32","SysFreeString",Text&)
Text$=string$(Text#,0)
CallMethod(IHTMLElement&,2)
CallMethod(IHTMLDocument2&,2)
Dispose Text#
Dispose IID#
external("ole32","CoUninitialize")
Return Text$
EndProc
Def AtlAxWinInit(0) ! "atl.dll","AtlAxWinInit"
Def AtlAxCreateControl(4) ! "atl.dll","AtlAxCreateControl"
Declare Atl&,Web&,a$,version$
Window 200,400-800,030
UserMessages 16
Atl& = Usedll("atl.dll")
AtlAxWinInit()
Version$="1.1"
a$ = "http://paradox.bplaced.net/version.php?ver="+version$'- Pfad oder URL zum PHP Script
'Diese URL kann und darf zum testen verwendet werden.
Web& = control("AtlAxWin",a$,$50300000,0,0,0,0,%hwnd,0,0,$200)'-HTML-Contol anlegen
a$ = Quelltext_Lesen(Web&)
a$ = Translate$(a$,"<BODY>","")
a$ = Translate$(a$,"</BODY>","")
If Right$(a$,1) ="1"
SetText %hwnd,"Software aktuell"
Else
SetText %hwnd,"Bitte Software aktualisieren"
EndIf
While 1
Waitinput
Case %umessage=16:Break
EndWhile
DestroyWindow(Web&)
Freedll Atl&
Das XProfan Programm sendet die Anfrage zum PHP Script. Dort werden die Versionen verglichen.
Es wird eine "0" für eine nicht aktuelle Version und eine "1" für eine aktuelle Version zurückgeliefert.
Das Ergebnis wird von den Proceduren ausgelesen und im weiteren Programmverlauf darauf reagiert.
In diesem Beispiel mit SetText %hwnd.
Schade finde ich das man das XProfan eigene @Create("HTMLWin" nicht so einfach auslesen kann.
Gruß

Antworten