Leekspin im Vollbildmodus

Für allgemeine Fragen zur Programmierung mit PureBasic.
Lateiner
Beiträge: 3
Registriert: 11.08.2009 21:28

Leekspin im Vollbildmodus

Beitrag 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
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Leekspin im Vollbildmodus

Beitrag 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
a²+b²=mc²
Antworten