VB Script in WinCC flexible

Probiere mal das hier, sollte bei CE auch gehen:

Code:
Dim OpSysSet, obj
Set OpSysSet = GetObject("winmgmts:{impersonationLevel=impersonate," & _
"(Shutdown)}//./root/cimv2").ExecQuery _
("SELECT * FROM Win32_OperatingSystem" &_
" WHERE Primary=true")

For Each obj In OpSysSet
obj.Win32Shutdown(2)
Next

du kannst bei "obj.Win32Shutdown(#)" die # auch durch folgendes ersetzten:

Code:
0 = Logoff
1 = Shutdown 
2 = Reboot 
4 = Force 
8 = Poweroff
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
hi, danke für den code.
leider Funktioniert der nicht so ganz.
positiv ist aber das WinCC flexible keinen Fehler meldet. nur das gerät führt das script halt nicht aus.

Weist du vlt noch eine andere Lösung??

mfg
 
Ich hab hier nur Pc's und mein Vorschlag wird bei einigen Entsetzen hervorrufen...

...aber wie wärs wenn du dir über ein Relais der Steuerung nen Öffner für zwei Sekunden ansteuerst? (Wenn's auf die schnelle sein muss)

An alle - ich weiß dass ist absolut schwach aber es funktioniert!
 
hi, danke für den code.
leider Funktioniert der nicht so ganz.
positiv ist aber das WinCC flexible keinen Fehler meldet. nur das gerät führt das script halt nicht aus.

Weist du vlt noch eine andere Lösung??

mfg

Hast du das mal kurz als Runtime auf deinem PC gestartet und probiert ?
Auf meinen System als Runtime geht es.
Bei Windows CE sollte das "eigentlich" auch gehen, wenn kein Fehler kommt ist das ja schonmal eine gute Vorraussetzung ;)

hast du mal versucht einen Shutdown zu machen oder Force ?

@xhasx

er hat ja ein MP277... da gibt es keinen Knopf den man überbrücken könnte ;)
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Aber man könnte einen "Knopf" oder "Skript" in der Hmi projektieren das die Steuerung veranlasst ein Schütz kurzzeit zu betätigen... Und dieses nimmt dann die Versorgungsspannung vom MP :) (Halt nen Öffner dass beim Cpu hochlauf das Panel auf jeden Fall unter Spannung ist)
Ich weiss - sehr unschön!
 
Hi,

Danke für eure Ideen. Die Sache mit dem Relai wollt ich zuerst auch machen, aber das fällt vollkommen flach, weil ich ein MP277 WLan Mobile Panel hab.
Und des Ding hat nen Ein-Taster. Des dumme daran ist, das ich net einfach die Stromversorgung wegnehmen kann und des ding Startet dann wieder, sondern ich muss jedes mal die Taste drücken.... naja egal

Hab jetzt einen USB Stick mit ner netten kleinen exe Datei, die das Panel sofort killt und dann wieder startet. Des ganze ruf ich einfach über "Starte progamm" im Winccflexible auf, und wolla Problem gelöst.

MFG
 
Hi ich bins nochmal.
Ich hab zwar zuerst gedacht, das sich mein Problem erledigt hat, aber nach etlichen Tests hat sich herausgestellt, das mein exe file ab und zu das Panel dazu bringt sich aufzuhängen.
Wegen dem vb scribt, gibts vielleicht die Möglichkeit das script für mein Panel anzupassen?
Ich hab das script auch mal in der pc runtime getestet, da funktionierts wunderbar. Nur halt auf dem Panel nicht. Ich Versteh zwar nichts von scripten, aber kann es sein das du eine Datei die irgendwo hinterlegt sein muss aufrufst? Und die evtl nur in der runtime vorhanden ist?

Nächste Frage:
Ich hab in der Systemsteuerung des Panels unter "OP" einen "reboot" Knopf. Gibts vlt irgenwie die Möglichkeit den von wincc aus auszulosen, oder vlt durch ne bat Datei?

Schon mal danke für eure Hilfe
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Garog schrieb:
Set OpSysSet = GetObject("winmgmts:{impersonationLevel=impersonate," & _
"(Shutdown)}//./root/cimv2").ExecQuery _
("SELECT * FROM Win32_OperatingSystem" &_
" WHERE Primary=true")

winmgmts gehört zu Windows Management Instrumentation (WMI)
WMI funzt nur auf Windows 2000 oder Windows XP:
http://www.microsoft.com/technet/scriptcenter/guide/sas_wmi_jgfx.mspx?mfr=true
you can write WMI scripts that automate the management of the following aspects of your enterprise:•Computers based on Windows XP Professional and Windows 2000
 
Zuletzt bearbeitet:
Hi,
also die coredll.dll hab ich in meinem Panel,
nur wie mach ich daraus jetzt ne exe Datei die ich dann aufrufen kann?

Du könntest dir von MS die richtigen SDK's für das in den Panels genutzte WinCE (war das V5?) und den richtigen Compiler besorgen (hab ich vor Jahren mal mit den TP270 gemacht, hat sogar funktioniert).

Oder du bekommst raus (ich weiß das leider nicht), ob man die DLL in VBScript einbinden kann und wenn ja, wie man auf die in der DLL enthaltenen Funktionen dann Zugriff nimmt.

Vielleicht findet sich hier im Forum noch jemand, der das schon einmal gemacht hat.
 
Hi,

ich hab bei ner Seite von Microsoft ein VB Code gefunden, der einen Neustart von WinCE V5 auslöst.
Problem bei der sache is nur das ich den nicht einfach so in WinCC flexible einbinden kann.
In dem Code sind, wenn ich alles richtig interpretiere, vier Unterprogramme.
Das letzt Unterprogamm ist für mich unwichtig. Is glaub ich blos des ausgeben von am Meldefenster.
Der eigentliche Restart findet glaub ich in der Reset pocket pc funktion statt. Dabei wird glaub ich irgendein wert aus dem ctlcode in den IOKernel geschoben.
Weis jemand wie ich aus den drei Funktionen eine Funktion mach die ich unter Wincc flexible einbinden kann?

Private Const FILE_DEVICE_HAL As Integer = &H101
Private Const METHOD_BUFFERED As Integer = 0
Private Const FILE_ANY_ACCESS As Integer = 0

Private Function CTL_CODE( _
ByVal DeviceType As Integer, _
ByVal Func As Integer, _
ByVal Method As Integer, _
ByVal Access As Integer) As Integer

Return (DeviceType << 16) Or (Access << 14) Or (Func << 2) Or Method

End Function

Declare Function KernelIoControl Lib "CoreDll.dll" _
(ByVal dwIoControlCode As Integer, _
ByVal lpInBuf As IntPtr, _
ByVal nInBufSize As Integer, _
ByVal lpOutBuf As IntPtr, _
ByVal nOutBufSize As Integer, _
ByRef lpBytesReturned As Integer _
) As Integer

Private Function ResetPocketPC() As Integer
Dim bytesReturned As Integer = 0
Dim IOCTL_HAL_REBOOT As Integer = CTL_CODE(FILE_DEVICE_HAL, _
15, METHOD_BUFFERED, FILE_ANY_ACCESS)
Return KernelIoControl(IOCTL_HAL_REBOOT, IntPtr.Zero, 0, _
IntPtr.Zero, 0, bytesReturned)
End Function

Private Sub ResetDevice()
Dim msg As String
Dim title As String
Dim style As MsgBoxStyle
Dim response As MsgBoxResult
msg = "Are you sure you want to reset the device?"
style = MsgBoxStyle.DefaultButton2 Or _
MsgBoxStyle.Question Or MsgBoxStyle.YesNo
title = "Device Reset"
response = MsgBox(msg, style, title)
If response = MsgBoxResult.Yes Then ' User chose Yes.
ResetPocketPC()
End If

End Sub

Mfg
polybassa
 
Hallo

Ich schau mir das Spielchen jetzt schon ne Weile an...
Ich behaupte mal dass man in VBS (man beachte das S) keine DLL's einbinden kann. Wenn du aber die DLL als Eigenes Control (Drag and Drop auf ein Bild ziehen) einbinden kannst, kannst du mittels Skripten auf das Objekt und deren Funktionen zugreifen.

Meine Schnelllösung wäre glaub bis zum heutigen das einfachste und billigste. Klar versuche ich soweit es geht alles per SW zu erschlagen - an manchen Punkten wo aber Zeit und Geld ins Spiel kommen kommt man um "Unsaubere" Lösungen nicht vorbei! Ihr müsst Geld haben wenn man sich so lange mit dem Thema beschäftigen kann...
 
@xhasx
Wenn die Sache mit dem Relai funktionieren würd, hätt ichs schon längst gemacht, aber das Problem an der Sache ist, das die Panels einen Ein-Taster haben (so wie ein normaler PC zuhause). Und wenn ich einfach die Versorgungsspannung aus-und einschalte, passiert erstmal garnichts.
Solange bis der Eintaster gedrückt wird.
Und Blockieren kann ich den Eintaster auch nicht. Sonst passiert des gleiche wie bei deinen PC's. Des Panel fährt ca 5 Sekunden hoch und dann wird es wieder ausgeschalten.
Da der Taster fest in der Folientastatur des Panels integriert ist kann ich den auch nicht kontaktieren und über ein Relai künstlich einen Einschaltimpuls erzeugen.
So wenn dir jetzt noch eine weiter Unsaubere Lösung einfällt, dann schieß los.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ups, das wusste ich nicht...
Ich versuch mich mal schlau zu machen... Also irgendwo hab ich noch ein MP370. Das hat keinen Knopf aber CE... Vielleicht bring ich was raus...
 
Zurück
Oben