Seite 1 von 1

Leekspin im Vollbildmodus

Verfasst: 29.04.2013 18:01
von Lateiner
Hallo!
Ich benötige eine Lösung, mit der ich das bekannte SWF der Seite http://leekspin.com/ in einer Endlosschleife und möglichst in einem Kiosk ausführen kann.
Den Kiosk habe ich hier im Board auch gefunden:

Code: Alles auswählen

#WINSTA_ALL  = #WINSTA_ACCESSCLIPBOARD | #WINSTA_ACCESSGLOBALATOMS | #WINSTA_CREATEDESKTOP | #WINSTA_ENUMDESKTOPS | #WINSTA_ENUMERATE | #WINSTA_EXITWINDOWS | #WINSTA_READATTRIBUTES | #WINSTA_READSCREEN | #WINSTA_WRITEATTRIBUTES | #DELETE | #READ_CONTROL | #WRITE_DAC | #WRITE_OWNER
#DESKTOP_ALL = #DESKTOP_READOBJECTS | #DESKTOP_CREATEWINDOW | #DESKTOP_CREATEMENU | #DESKTOP_HOOKCONTROL | #DESKTOP_JOURNALRECORD | #DESKTOP_JOURNALPLAYBACK | #DESKTOP_ENUMERATE | #DESKTOP_WRITEOBJECTS | #DESKTOP_SWITCHDESKTOP | #STANDARD_RIGHTS_REQUIRED

#UOI_NAME = $2
Global m_sDesktop.s,hDesk,hDesk_2
m_sDesktop = Space(128)

Global cmdline$
cmdline$="spin.exe"

Procedure.s GetDesktopName()
  Protected hDesktop, lR, lSize, sBuff.s, iPos
  hDefaultDesk = OpenInputDesktop_(0, #False, #DESKTOP_READOBJECTS)
  If hDefaultDesk
    lSize = (Len(m_sDesktop) + 1) * 2
    sBuff=Space(lSize+1)
    lR = GetUserObjectInformation_(hDefaultDesk, #UOI_NAME, @sBuff, lSize, @lSize)
    CloseHandle_(hDesktop)
  EndIf
  ProcedureReturn sBuff
EndProcedure

;hWinSta = OpenWindowStation_("WinSta0", 0, #WINSTA_ALL)

;hDefaultDesk = OpenDesktop_("Default", #DF_ALLOWOTHERACCOUNTHOOK, 0, #DESKTOP_SWITCHDESKTOP)
;Chk(hDefaultDesk, "Failed to open default desktop")

hDesk = CreateDesktop_("My Desktop 2", 0, 0, #DF_ALLOWOTHERACCOUNTHOOK, #DESKTOP_ALL, 0)
SetThreadDesktop_(hDesk) 
SwitchDesktop_(hDesk)



OpenWindow(1, 0, 0, 0, 0, "", #PB_Window_BorderLess )

m_sDesktop = GetDesktopName()

tSi.STARTUPINFO
tSi\lpTitle = @m_sDesktop
tSi\lpDesktop = @m_sDesktop
; 
; tPi.PROCESS_INFORMATION
; 
; 
Result = CreateProcess_(#NUL,@cmdline$,#NUL,#NUL,#False,0,#NUL,#NUL,@tSi,@tPi)

Repeat
Delay(1)
Until GetAsyncKeyState_(#VK_ESCAPE) & $8000 = 32768

;TerminateThread_(GetThreadDesktop_(GetCurrentThreadId_()), 0)

hDesk_d = OpenDesktop_("Default", 0, #False, #DESKTOP_SWITCHDESKTOP)
SwitchDesktop_(hDesk_d)
SetThreadDesktop_(hDesk_d)
;CloseDesktop_(hDesk)
Der benötigt allerdings eine externe exe, die er ausführen kann.
Die SWF in ein EXE zu packen (z. B. mit dem Flash-Projektor) bringt nichts, da die Datei bei Beginn nicht bildschirmfüllend angezeigt wird.

Kann PureBasic Filme bildschirmfüllend und in einer Loop darstellen? Das würde mein Problem lösen...


Vielen Dank,
Lateiner

Re: Leekspin im Vollbildmodus

Verfasst: 29.04.2013 18:43
von Kiffi
willst Du jemanden in den Wahnsinn treiben? :shock:

Code: Alles auswählen

IncludePath "[DeinPfadZu]\COMatePLUS\"
XIncludeFile "COMatePLUS.pbi"
IncludePath ""

EnableExplicit

Define.COMateObject FlashObject

Define Loituma.s
Define Result

InitNetwork()

ReceiveHTTPFile("http://www.saichotictech.net/loituma.swf", GetTemporaryDirectory() + "loituma.swf")

Loituma = GetTemporaryDirectory() + "loituma.swf"

If OpenWindow(0, #PB_Ignore, #PB_Ignore, 800, 600, "loituma", #PB_Window_Invisible | #PB_Window_Maximize | #PB_Window_BorderLess)
	
	StickyWindow(0, #True)
	
	SetWindowColor(0, #Black)  
	
	ContainerGadget(0, 0, 0, WindowWidth(0), WindowHeight(0))
	CloseGadgetList()
	
	DisableGadget(0, #True)
	
	FlashObject = COMate_CreateObject("ShockwaveFlash.ShockwaveFlash", GadgetID(0))
	
	If FlashObject
		
		FlashObject\SetProperty("Menu = #False")
		
		FlashObject\Invoke("LoadMovie(#False, '" + Loituma + "')")
		
		Repeat
			result = FlashObject\GetIntegerProperty("ReadyState")
		Until Result = 4
		
		HideWindow(0, #False)
		
		Repeat
			
			Select WaitWindowEvent()
					
				Case #PB_Event_CloseWindow
					Break
					
				Case #PB_Event_RightClick
					Select EventWindow()
							
						Case 0
							Break
							
					EndSelect
					
			EndSelect
			
		ForEver
		
		FlashObject\Release()
		
	Else
		
	EndIf
	
EndIf
Beendet wird's mit rechter Maustaste.

Verrate nicht, dass Du es von mir hast...

Grüße ... Kiffi