Seite 1 von 2

Virtual Desktop

Verfasst: 30.08.2006 13:46
von pws32
Hallo,

ich wollte dieses Programm aus dem engl. Forum ausprobieren

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 

;Show an error
Procedure Abort(s.s)
  MessageRequester("", "Error: "+s.s)
  End
EndProcedure

;Check a result and ev. abort
Procedure Chk(a.l, s.s)
  ;If a is false, abort.
  ;If a is false and s contains an error message, show it before abort.
  If Not(a)
    If s.s
      Abort(s.s)
    Else
      End
    EndIf
  EndIf
EndProcedure

hWinSta = OpenWindowStation_("WinSta0", 0, #WINSTA_ALL)
Chk( SetProcessWindowStation_(hWinSta) , "Failed to set window station")

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)
Chk( hDesk, "Failed to create desktop")
Chk( SwitchDesktop_(hDesk), "Failed to switch desktop")

Delay(2000)

Chk( SwitchDesktop_(hDefaultDesk), "Failed to switch desktop")

CloseDesktop_(hDesk)
CloseDesktop_(hDefaultDesk)
CloseWindowStation_(hWinSta)
bekomme es leider nicht zum rennen wegen der Fehlermeldung Line 1: Constant not Fond:....

ich benutzte allerdings noch PB 3.93

kann jemand helfen ?

Verfasst: 30.08.2006 14:01
von Kaeru Gaman
WELCHE konstante denn, Line 1 is gerammelte full mit konstanten...

und ja, es liegt möglicherweise an deiner alten version...
von wann war denn das posting im englichen forum...

Verfasst: 30.08.2006 14:10
von ts-soft
#DESKTOP_ALL
ist in PB 4.0 auch nicht definiert und kann ich nirgends finden. Wahrscheinlich fehlt eine Zeile!?

Verfasst: 30.08.2006 14:19
von Friedhelm
Die MSDN ist dein Freund :allright: :allright: :allright:

http://msdn.microsoft.com/library/defau ... in_c__.asp

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
;Show an error
Procedure Abort(s.s)
  MessageRequester("", "Error: "+s.s)
  End
EndProcedure

;Check a result and ev. abort
Procedure Chk(a.l, s.s)
  ;If a is false, abort.
  ;If a is false and s contains an error message, show it before abort.
  If Not(a)
    If s.s
      Abort(s.s)
    Else
      End
    EndIf
  EndIf
EndProcedure

hWinSta = OpenWindowStation_("WinSta0", 0, #WINSTA_ALL)
Chk( SetProcessWindowStation_(hWinSta) , "Failed to set window station")

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)
Chk( hDesk, "Failed to create desktop")
Chk( SwitchDesktop_(hDesk), "Failed to switch desktop")

Delay(2000)

Chk( SwitchDesktop_(hDefaultDesk), "Failed to switch desktop")

CloseDesktop_(hDesk)
CloseDesktop_(hDefaultDesk)
CloseWindowStation_(hWinSta) 
mfg
Freidhelm

Verfasst: 30.08.2006 14:20
von pws32
eigenlich findet meine 3.93 keine der in Zeile 1 genannten Constaten


das Posting ist vom 1.5.2006

und hier der Link dazu

http://www.purebasic.fr/english/viewtop ... ty+desktop

#WINSTA_ACCESSGLOBALATOMS

Verfasst: 30.08.2006 14:25
von pws32
Hallo Friedhelm,

jetzt mekert mein 3.93 Line 1: Constant not Fond: #WINSTA_ACCESSGLOBALATOMS

welche PB Version benutzt Du

Gruss Peter

Verfasst: 30.08.2006 14:27
von Kaeru Gaman
pws32 hat geschrieben:eigenlich findet meine 3.93 keine der in Zeile 1 genannten Constaten
dann musst du wohl alle einzeln auf der MSDN zusammensuchen, oder auf 4.0 upgraden.

auf jeden Fall an die von Friedhelm ergänzte definition von #DESKTOP_ALL denken.

Verfasst: 30.08.2006 14:28
von DarkDragon
API-Viewer hilft(API-Guide weniger)

vDesktop

Verfasst: 30.08.2006 15:16
von pws32
So habe auf 4.0 gedatet und nun läuft das Programm, ich stelle mir vor hiermit ein Programm zu erstellen welches ich im Kioskmode betreiben kann, habe jetzt auch mal ein Testwindow gebaut welches leider nicht auf dem vDesktop angezeigt wird sondern nur auf dem original Desktop, weiss einer warum?

VORSICHT ! wenn man das Programm so startet kommt man nicht so leicht aus dem vDesktop heraus, mit Strg+Alt+Del Taskmanager aufrufen und auf abmelden drücken, dann ist man wieder beim alten Desktop

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 


Global FontID1
FontID1 = LoadFont(1, "Arial", 22, #PB_Font_Bold)

;Show an error 
Procedure Abort(s.s) 
  MessageRequester("", "Error: "+s.s) 
  End 
EndProcedure 

;Check a result and ev. abort 
Procedure Chk(a.l, s.s) 
  ;If a is false, abort. 
  ;If a is false and s contains an error message, show it before abort. 
  If Not(a) 
    If s.s 
      Abort(s.s) 
    Else 
      End 
    EndIf 
  EndIf 
EndProcedure 

hWinSta = OpenWindowStation_("WinSta0", 0, #WINSTA_ALL) 
Chk( SetProcessWindowStation_(hWinSta) , "Failed to set window station") 

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) 
Chk( hDesk, "Failed to create desktop") 
Chk( SwitchDesktop_(hDesk), "Failed to switch desktop") 



If OpenWindow(1, 216, 0, 255, 165, "Test",  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
  If CreateGadgetList(WindowID(1))
    TextGadget(1, 20, 70, 210, 30, "Test", #PB_Text_Center)
    SetGadgetFont(1, FontID1)
  EndIf
EndIf

Repeat
  Event = WaitWindowEvent()
  WindowID = EventWindow()
  GadgetID = EventGadget()
  EventType = EventType()
  If Event = #PB_Event_Gadget
  EndIf
Until Event = #PB_Event_CloseWindow


;Delay(2000) 

Chk( SwitchDesktop_(hDefaultDesk), "Failed to switch desktop") 

CloseDesktop_(hDesk) 
CloseDesktop_(hDefaultDesk) 
CloseWindowStation_(hWinSta) 
 


Re: #WINSTA_ACCESSGLOBALATOMS

Verfasst: 30.08.2006 15:23
von Friedhelm
pws32 hat geschrieben:Hallo Friedhelm,

jetzt mekert mein 3.93 Line 1: Constant not Fond: #WINSTA_ACCESSGLOBALATOMS

welche PB Version benutzt Du

Gruss Peter
Ich benutzt PB 4 8) 8) 8)

Schon was gefunden
http://windowssdk.msdn.microsoft.com/en ... 87391.aspx

mfg
Friedhelm