Code: Alles auswählen
; gPreferences[460-5-1-1-794-154-0-331-144]
Structure AVI_INFO
aviWidth.l
aviHeight.l
aviFirstFrame.l
aviNumFrames.l
aviFPS.b
hWnd.l
EndStructure
Structure Aufloesung
Width.l
Height.l
EndStructure
Global AVI.AVI_INFO
Global AnzAuf.l
Global AddFrameToAVI, OpenAVIforWrite, CloseAVIStreams
Global Pfad$
Global T
T = 0
ImagePfad$ = "Data\Kamera.ico"
AnzAuf = 4
Dim Auf.Aufloesung(AnzAuf)
Auf(0)\Width = 640
Auf(0)\Height = 480
Auf(1)\Width = 800
Auf(1)\Height = 600
Auf(2)\Width = 1024
Auf(2)\Height = 768
Auf(3)\Width = 1152
Auf(3)\Height = 864
Auf(4)\Width = 1280
Auf(4)\Height = 720
#Library_AVIServ093 = 0
Procedure MakeDesktopScreenshot(ImageNr,x,y,Width,Height)
hImage = CreateImage(ImageNr,Width,Height)
hDC = StartDrawing(ImageOutput(ImageNr))
DeskDC = GetDC_(GetDesktopWindow_())
BitBlt_(hDC,0,0,Width,Height,DeskDC,x,y,#SRCCOPY)
StopDrawing()
ReleaseDC_(GetDesktopWindow_(),DeskDC)
ProcedureReturn hImage
EndProcedure
Procedure proc2(x)
If Not IsWindow(1)
Win = OpenWindow(1, -100, -100, 0, 0, "Null", #PB_Window_BorderLess)
EndIf
Win = WindowID(1)
AVI\hWnd.l
Debug Pfad$
Debug AVI\aviFPS
If CallFunctionFast(OpenAVIforWrite, Pfad$, @AVI) = #True
Debug "AVI geöffnet"
hBMP = MakeDesktopScreenshot(1, 0, 0, AVI\aviWidth, AVI\aviHeight)
If hBMP
Debug "Screenshot"
If AVI\aviWidth + AVI\aviHeight <> ImageWidth(1) + ImageHeight(1)
ResizeImage(1, AVI\aviWidth, AVI\aviHeight)
Debug "Image Resized"
EndIf
CallFunctionFast(AddFrameToAVI, hBMP, -1)
Debug "OK"
EndIf
CallFunctionFast(CloseAVIStreams)
EndIf
EndProcedure
Procedure proc()
Debug T
If T
CreateThread(@proc2(), 1)
Else
Proc2(0)
EndIf
EndProcedure
If OpenLibrary(#Library_AVIServ093, "D:\FileDownloads\Software\AVIServ\AVIServ093.dll")
AVI_Info = GetFunction(#Library_AVIServ093, "AVI_Info")
AVI_Init = GetFunction(#Library_AVIServ093, "AVI_Init")
AVI_Quit = GetFunction(#Library_AVIServ093, "AVI_Quit")
AddFrameToAVI = GetFunction(#Library_AVIServ093, "AddFrameToAVI")
CloseAVIStreams = GetFunction(#Library_AVIServ093, "CloseAVIStreams")
GetFrameFromAVI = GetFunction(#Library_AVIServ093, "GetFrameFromAVI")
OpenAVIforRead = GetFunction(#Library_AVIServ093, "OpenAVIforRead")
OpenAVIforWrite = GetFunction(#Library_AVIServ093, "OpenAVIforWrite")
If AVI_Info And AVI_Init And AVI_Quit And AddFrameToAVI And CloseAVIStreams And GetFrameFromAVI And OpenAVIforRead And OpenAVIforWrite
;alle Functionen OK
Else
MessageRequester("Fehler", "Eine oder mehrere Funktionen der AVIServ093.dll konnten nicht geladen werden.")
End
EndIf
Else
MessageRequester("Fehler", "Die Bibliothek AVIServ093.dll konnte nicht geladen werden.")
End
EndIf
If LoadImage(0, ImagePfad$) = 0
MessageRequester("Fehler", "Eine Bilddatei konnte nicht geladen werden.")
End
EndIf
OpenWindow(0, 0, 0, 200, 140, "Desktop2avi", #PB_Window_ScreenCentered)
If CreateGadgetList(WindowID(0))
TextGadget(0, 5, 5, 60, 20, "Auflösung:")
ComboBoxGadget(1, 65, 5, 130, 200)
For x = 0 To AnzAuf
AddGadgetItem(1, x, Str(Auf(x)\Width)+"*"+Str(Auf(x)\Height))
Next
SetGadgetState(1, 0)
TextGadget(2, 5, 35, 55, 25, "Frames pro Sek.:")
StringGadget(3, 65, 35, 130, 25, "15", #PB_String_Numeric)
TextGadget(4, 5, 70, 30, 20, "Pfad:")
StringGadget(5, 65, 70, 98, 25, "C:\Bildschirmaufnahme.avi")
ButtonGadget(6, 170, 70, 25, 25, "...")
ButtonGadget(7, 5, 105, 90, 30, "Beenden")
ButtonGadget(8, 105, 105, 90, 30, "Start")
EndIf
Quit = 0
If Not CallFunctionFast(AVI_Init)
MessageRequester("Fehler", "Library konnte nicht initraliersiert werden.")
End
EndIf
Repeat
Event = WaitWindowEvent()
If Event = #PB_Event_Gadget
Select EventGadget()
Case 6
Pfad$ = SaveFileRequester("Speichern", GetGadgetText(5), "avi-Datein|*.avi", 0)
If Pfad$
If LCase(Right(Pfad$, 4)) <> ".avi"
Pfad$ = Pfad$+".avi"
EndIf
SetGadgetText(5, Pfad$)
EndIf
Case 7
Quit = 1
Case 8
Frames = Val(GetGadgetText(3))
Width = Auf(GetGadgetState(1))\Width
Height = Auf(GetGadgetState(1))\Height
Pfad$ = GetGadgetText(5)
If Frames And Width And Height And Pfad$ And Timer = 0
XX = GetMinTimerResolution()
MaxFrames = 60/XX
If Frames > MaxFrames Or Frames < 1
MessageRequester("Fehler", "Die Anzahl der Frames pro Sekunde müssen zwischen "+Str(MaxFrames)+" und 1 liegen.")
Goto E
EndIf
AVI\aviWidth = Widht
AVI\aviHeight = Height
AVI\aviFPS = Frames
HideWindow(0, 1)
MessageRequester("Aufzeichnung beenden", "Klicken Sie auf die kleine Kamera neben ihrer Uhr um die Aufzeichnung zu beenden. Wenn Sie einen Signalton von ihrem Systemlautsprecher (Speaker) hören wurde die Aufzeichnung begonnen."+Chr(10)+Chr(10)+"Klicken Sie auf OK um die Aufzeichnung zu beginnen.")
FPMS.f = Frames/60
FPMS.f = FPMS.f*1000
Timer = StartTimer(0, FPMS.f, @proc())
If Timer
Beep(800, 20)
EndIf
AddSysTrayIcon(0, WindowID(0), ImageID(0))
SysTrayIconToolTip(0, "Aufzeichnung beenden")
EndIf
E:
EndSelect
ElseIf Event = #PB_Event_SysTray
If EventGadget() = 0
EndTimer(0)
Timer = 0
RemoveSysTrayIcon(0)
MessageRequester("Aufnahme beendet", "Sie haben die Aufnahme beendet."+Chr(10)+Chr(10)+"Der Pfad zu der Datei: "+Pfad$)
Pfad$ = ""
Quit = 1
EndIf
ElseIf event = #PB_Event_CloseWindow
Quit = 1
EndIf
Until Quit = 1
CallFunctionFast(AVI_Quit)
End

Ist zum verrückt werden!