Seite 1 von 2
Kein Ton
Verfasst: 02.11.2004 16:13
von KeyKon
Ich habe ein Programm geschrieben das die ganze Zeit, bis man auf ein SysTrayIcon klickt verborgen, gar nichts macht, es benutzt unter anderem die Sound Lib.
Es lief alles wunderbar.
Doch jetzt hab ich es zur EXE gemacht und sobald dieses Programm läuft (also auch wenn es verborgen läuft) geht der Ton von allen anderen Programmen die laufen nicht mehr!
Liegt das am Programm, oder ist das unvermeidlich???
KeyKon
Re: Kein Ton
Verfasst: 02.11.2004 16:30
von Kiffi
> Doch jetzt hab ich es zur EXE gemacht
als was lief es denn vorher?
Grüße ... Kiffi
Verfasst: 02.11.2004 16:53
von KeyKon
Ja als Code (mit PB gestartet)
Verfasst: 02.11.2004 19:03
von Kiffi
> als Code (mit PB gestartet)
hast Du schon mal in den Taskamanger geschaut, wenn der 'Code' gestartet
worden ist? Dort findest Du eine EXE mit dem Präfix PureBasic gefolgt von
einer eindeutigen ID. Das ist Dein Code, der zu einer temporären EXE
kompiliert worden ist.
Es kann also nicht daran liegen, daß Du Dein Programm zu einer EXE
'gemacht' hast, weil PB das sowieso bei jedem Programmstart für Dich
erledigt.
Grüße ... Kiffi
Verfasst: 03.11.2004 14:21
von KeyKon
Nun woran liegt es denn???
Hat denn keiner eine Ahnung?
KeyKon
Verfasst: 03.11.2004 14:38
von nco2k
ohne beispielcode kann dir auch nicht geholfen werden.
c ya,
nco2k
Verfasst: 03.11.2004 15:58
von KeyKon
Ich befürchte nur das der Code selbst gekürzt sehr unübersichtlich ist
Naja hier einmal gekürzt:
Code: Alles auswählen
InitSprite()
InitMouse()
InitKeyboard()
InitSound()
NewList Prog.s()
AddElement(Prog())
Prog() = "D:\PureBasic\PureBasic Demo\PureBasic.exe"
Procedure runprogramm(nummer)
If nummer <> -1
SelectElement(Prog(),nummer)
RunProgram(Prog())
EndIf
hit = 0
Goto back
EndProcedure
OpenScreen(640,480,16,"")
Procedure stexten(text$,x1,x2,y1)
Locate(x1+((x2-x1)-TextLength(text$))/2,y1)
DrawText(text$)
EndProcedure
Global sfx$
Global gfx$
Global hit.l
sfx$ = "C:\Eigene Dateien\Eigene Musik\"
gfx$ = "C:\Eigene Dateien\Eigene Bilder\"
Procedure Load()
For x = 0 To 1
LoadSound(x,sfx$+"Sound"+Str(x+1)+".wav")
Next
LoadSprite(0,gfx$+"Back640-480.bmp",0)
LoadSprite(1,gfx$+"Mouse.bmp",0)
For x = 1 To 11
LoadSprite(1+x,gfx$+"Icon"+Str(x)+".bmp",0)
Next
;LoadMovie(0,"")
For x = 1 To 1
TransparentSpriteColor(x,255,0,255)
Next
EndProcedure
Structure frage
frage.s
sound.l
spezi.s
EndStructure
NewList frage.frage()
AddElement(frage())
frage()\frage = "Wilkommen! Melden sie sich bitte an:"
frage()\sound = 0
frage()\spezi = "abf"
AddElement(frage())
frage()\frage = "Wilkommen Master KeyKon! Was wollen sie heute tun?"
frage()\sound = 1
frage()\spezi = "aus"
NewList names1.s()
AddElement(names1())
names1() = "PureBasic"
AddElement(names1())
names1() = "Andere Software"
AddElement(names1())
names1() = "Spiele"
AddElement(names1())
names1() = "Kalender"
AddElement(names1())
names1() = "Gehen"
Ele = 0
Lel = 1
Repeat
If Ele <> Lel
SelectElement(frage(),Ele)
If frage()\sound <> -1
PlaySound(frage()\sound)
EndIf
Lel = Ele
EndIf
ExamineMouse()
ExamineKeyboard()
DisplaySprite(0,0,0)
StartDrawing(ScreenOutput())
FrontColor(255,255,0)
Box(0,0,640,50)
Box(590,450,50,30)
DrawingMode(1)
FrontColor(250,10,10)
Locate(5,5)
DrawText(frage()\frage)
stexten("Back",590,640,455)
If frage()\spezi = "abf"
If abf = 0
input$ + KeyboardInkey()
If KeyboardReleased(#PB_Key_Back)
input$ = Left(input$, Len(input$)-1)
EndIf
Locate(5,30)
DrawText(input$)
ElseIf abf = 1
code$ + KeyboardInkey()
If KeyboardReleased(#PB_Key_Back)
code$ = Left(code$, Len(code$)-1)
EndIf
stern$ = ""
For x = 0 To Len(code$)-1
stern$+"x"
Next
Locate(5,30)
DrawText(stern$)
ElseIf abf = 2
If UCase(input$) = "KEYKON" And UCase(code$) = "12311"
Ele = 1
abf = 0
ElseIf code$ = ""
Goto Back
Else
Lel = 12345
Ele = 0
abf = 0
code$ = ""
input$ = ""
EndIf
EndIf
If KeyboardPushed(#PB_Key_Return)
abf+1
Delay(1000)
EndIf
If back = 1
back = 0
StopDrawing()
runprogramm(-1)
EndIf
EndIf
StopDrawing()
If frage()\spezi = "aus"
For x = 0 To 4
StartDrawing(ScreenOutput())
FrontColor(10,100,250)
If x < 4
Box(30,70+x*100,200,80)
Else
Box(30+230,70+x*100-400,200,80)
EndIf
DrawingMode(1)
FrontColor(200,200,30)
If x < 4
Locate(30+8+64+8,70+x*100+30)
Else
Locate(30+8+64+8+230,70+x*100+30-400)
EndIf
SelectElement(names1(),x)
DrawText(names1())
StopDrawing()
If x < 4
DisplaySprite(x+2,38,70+x*100+8)
Else
DisplaySprite(x+2,38+230,70+x*100+8-400)
EndIf
Next
If back = 1
Ele = 0
EndIf
Select hit
Case 1
RunProgramm(0)
Case 2
Ele = 2
Case 3
Ele = 3
Case 4
Case 5
Goto back
EndSelect
EndIf
back = 0
hit = 0
If MouseButton(1) = 1 And klick = 0
klick = 1
For x = 0 To 7
If x < 4
If MouseX() > 30 And MouseY() > 70+x*100 And MouseX() < 30+200 And MouseY() < 70+x*100+80
Hit = x+1
EndIf
Else
If MouseX() > 30+230 And MouseY() > 70+x*100-400 And MouseX() < 30+230+200 And MouseY() < 70+80+x*100-400
Hit = x+1
EndIf
EndIf
Next
If MouseX() > 590 And MouseX() < 640 And MouseY() > 450 And MouseY() < 480
Back = 1
EndIf
ElseIf MouseButton(1) = 0 And klick = 1
klick = 0
EndIf
DisplayTransparentSprite(1,MouseX(),MouseY())
FlipBuffers()
Until Ende = 1
back:
hit = 0
CloseScreen()
OpenWindow(0,0,0,20,10,#PB_Window_SystemMenu,"Test1")
AddSysTrayIcon(0,WindowID(),LoadImage(0,"C:\eigene Dateien\Icon.ico"))
SysTrayIconToolTip(0,"Angemeldet")
HideWindow(0,1)
Repeat
Event = WaitWindowEvent()
If Event = #PB_Event_SysTray
If EventType() = #PB_EventType_LeftClick
RemoveSysTrayIcon(0)
CloseWindow(0)
code$ = ""
hit = 0
OpenScreen(640,480,16,"")
Load()
Goto start
EndIf
EndIf
Until Event = #PB_Event_CloseWindow
Verfasst: 03.11.2004 17:19
von Kiffi
> Ich befürchte nur das der Code selbst gekürzt sehr unübersichtlich ist
das liegt wohl auch daran, daß Du den Code nicht eingerückt hast und keine
Kommentare verwendest.
Es sollte in Deinem Sinne sein, das jetzt nachzuholen.
Grüße ... Kiffi
Verfasst: 03.11.2004 22:52
von KeyKon
Ich hoffe das ist besser:
Code: Alles auswählen
; Inits
InitSprite()
InitMouse()
InitKeyboard()
InitSound()
; Variablen (Normalerweise viel mehr)
NewList Prog.s()
;Start-Links:
AddElement(Prog())
Prog() = "D:\PureBasic\PureBasic\PureBasic.exe"
;MenüModie:
Structure frage
frage.s
sound.l
spezi.s
EndStructure
NewList frage.frage()
AddElement(frage())
frage()\frage = "Wilkommen! Melden sie sich bitte an:"
frage()\sound = 0
frage()\spezi = "abf"
AddElement(frage())
frage()\frage = "Wilkommen Master KeyKon! Was wollen sie heute tun?"
frage()\sound = 1
frage()\spezi = "aus"
;Namen des Hauptmenüs
NewList names1.s()
AddElement(names1())
names1() = "PureBasic"
AddElement(names1())
names1() = "Andere Software"
AddElement(names1())
names1() = "Spiele"
AddElement(names1())
names1() = "Kalender"
AddElement(names1())
names1() = "Gehen"
Ele = 0
Lel = 1
Global sfx$
Global gfx$
Global hit.l
sfx$ = "C:\Eigene Dateien\Eigene Musik\"
gfx$ = "C:\Eigene Dateien\Eigene Bilder\"
OpenScreen(640,480,16,"")
; Proceduren
Procedure runprogramm(nummer)
If nummer <> -1
SelectElement(Prog(),nummer)
RunProgram(Prog())
EndIf
hit = 0
Goto back
EndProcedure
Procedure stexten(text$,x1,x2,y1)
Locate(x1+((x2-x1)-TextLength(text$))/2,y1)
DrawText(text$)
EndProcedure
Procedure Load()
;hier wird der Ton geladen:
For x = 0 To 1
LoadSound(x,sfx$+"Sound"+Str(x+1)+".wav")
Next
;
LoadSprite(0,gfx$+"Back640-480.bmp",0)
LoadSprite(1,gfx$+"Mouse.bmp",0)
For x = 1 To 11
LoadSprite(1+x,gfx$+"Icon"+Str(x)+".bmp",0)
Next
For x = 1 To 1
TransparentSpriteColor(x,255,0,255)
Next
EndProcedure
; RestartLabel und Load
start:
Load()
; HauptSchleife
Repeat
If Ele <> Lel
SelectElement(frage(),Ele)
If frage()\sound <> -1
;Und hier im Fall der Fälle abgespielt:
PlaySound(frage()\sound)
;
EndIf
Lel = Ele
EndIf
; Abfragen
ExamineMouse()
ExamineKeyboard()
;Hintergrund:
DisplaySprite(0,0,0)
;2D Drawing
StartDrawing(ScreenOutput())
FrontColor(255,255,0)
Box(0,0,640,50)
Box(590,450,50,30)
DrawingMode(1)
FrontColor(250,10,10)
Locate(5,5)
DrawText(frage()\frage)
stexten("Back",590,640,455)
;Die Verschiedenen Modie:
If frage()\spezi = "abf"
If abf = 0
input$ + KeyboardInkey()
If KeyboardReleased(#PB_Key_Back)
input$ = Left(input$, Len(input$)-1)
EndIf
Locate(5,30)
DrawText(input$)
ElseIf abf = 1
code$ + KeyboardInkey()
If KeyboardReleased(#PB_Key_Back)
code$ = Left(code$, Len(code$)-1)
EndIf
stern$ = ""
For x = 0 To Len(code$)-1
stern$+"x"
Next
Locate(5,30)
DrawText(stern$)
ElseIf abf = 2
If UCase(input$) = "KEYKON" And UCase(code$) = "12311"
Ele = 1
abf = 0
ElseIf code$ = ""
Goto Back
Else
Lel = 12345
Ele = 0
abf = 0
code$ = ""
input$ = ""
EndIf
EndIf
If KeyboardPushed(#PB_Key_Return)
abf+1
Delay(1000)
EndIf
If back = 1
back = 0
StopDrawing()
runprogramm(-1)
EndIf
EndIf
StopDrawing()
;Anderer Modus
If frage()\spezi = "aus"
For x = 0 To 4
StartDrawing(ScreenOutput())
FrontColor(10,100,250)
If x < 4
Box(30,70+x*100,200,80)
Else
Box(30+230,70+x*100-400,200,80)
EndIf
DrawingMode(1)
FrontColor(200,200,30)
If x < 4
Locate(30+8+64+8,70+x*100+30)
Else
Locate(30+8+64+8+230,70+x*100+30-400)
EndIf
SelectElement(names1(),x)
DrawText(names1())
StopDrawing()
If x < 4
DisplaySprite(x+2,38,70+x*100+8)
Else
DisplaySprite(x+2,38+230,70+x*100+8-400)
EndIf
Next
If back = 1
Ele = 0
EndIf
Select hit
Case 1
RunProgramm(0)
Case 2
Ele = 2
Case 3
Ele = 3
Case 4
Case 5
Goto back
EndSelect
EndIf
back = 0
hit = 0
;Universal Mausabfrage:
If MouseButton(1) = 1 And klick = 0
klick = 1
For x = 0 To 7
If x < 4
If MouseX() > 30 And MouseY() > 70+x*100 And MouseX() < 30+200 And MouseY() < 70+x*100+80
Hit = x+1
EndIf
Else
If MouseX() > 30+230 And MouseY() > 70+x*100-400 And MouseX() < 30+230+200 And MouseY() < 70+80+x*100-400
Hit = x+1
EndIf
EndIf
Next
If MouseX() > 590 And MouseX() < 640 And MouseY() > 450 And MouseY() < 480
Back = 1
EndIf
ElseIf MouseButton(1) = 0 And klick = 1
klick = 0
EndIf
;Maus zeichnen:
DisplayTransparentSprite(1,MouseX(),MouseY())
FlipBuffers()
Until Ende = 1
;Loop-Ende und "Schlaf Modus:
back:
hit = 0
CloseScreen()
;Verstecktes Fenster:
OpenWindow(0,0,0,20,10,#PB_Window_SystemMenu,"Test1")
AddSysTrayIcon(0,WindowID(),LoadImage(0,"C:\eigene Dateien\Icon.ico"))
SysTrayIconToolTip(0,"Angemeldet")
HideWindow(0,1)
;Schlaf-Schleife:
Repeat
Event = WaitWindowEvent()
If Event = #PB_Event_SysTray
If EventType() = #PB_EventType_LeftClick
RemoveSysTrayIcon(0)
CloseWindow(0)
code$ = ""
hit = 0
OpenScreen(640,480,16,"")
Goto start
EndIf
EndIf
Until Event = #PB_Event_CloseWindow
Re: Kein Ton
Verfasst: 03.11.2004 23:13
von PBZecke
KeyKon hat geschrieben: geht der Ton von allen anderen Programmen die laufen nicht mehr!
Liegt das am Programm, oder ist das unvermeidlich???
KeyKon
Hört man denn von Deinem Programm noch etwas?