Also... ich geb dir einfach mal den ganzen Code.
Deine Methode ist zwar gut, geht aber nicht so richtig...
Code: Alles auswählen
Procedure OpenOptionWindow(ScreenWidth, ScreenHeight)
OpenWindow(1, ScreenWidth-350, ScreenHeight-300, 310, 100, #PB_Window_SystemMenu, "Optionen")
If OpenPreferences("prefs.ini")
screenshotdir$=ReadPreferenceString("screenshotdir", "C:\")
screenshotres=ReadPreferenceLong("screenshotres", 1)
screenshotquality=ReadPreferenceLong("screenshotquality", 7)
ClosePreferences()
EndIf
CreateGadgetList(WindowID(1))
TextGadget(0, 5, 5, 300, 15, "Verzeichnis in dem die Screenshots gespeichert werden sollen:")
StringGadget(1, 5, 22, 200, 20, screenshotdir$)
ButtonGadget(2, 210, 22, 90, 20, "Durchsuchen...")
TextGadget(3, 5, 47, 90, 15, "Bildqualität(1-10):")
StringGadget(4, 95, 45, 30, 20, Str(screenshotquality))
TextGadget(5, 135, 47, 90, 15, "Bildgrösse:")
ComboBoxGadget(6, 200, 45, 100, 100)
AddGadgetItem(6,-1,"320x240")
AddGadgetItem(6,-1,"640x480")
AddGadgetItem(6,-1,"800x600")
AddGadgetItem(6,-1,"1024x768")
ButtonGadget(7, 5, 72, 90, 20, "Übernehmen")
ButtonGadget(8, 100, 72, 90, 20, "Schliessen")
SetGadgetState(6, screenshotres)
Repeat
OptionsWEvent=WaitWindowEvent()
If OptionsWEvent=#PB_Event_Gadget
If EventGadgetID()=7
DisableGadget(7, 1)
EndIf
If EventGadgetID()=2
file$=PathRequester("Pfad angeben", "C:\")
If file$
SetGadgetText(1, file$)
EndIf
EndIf
If EventGadgetID()=8
CloseWindow(1)
EndIf
EndIf
If OptionsWEvent=#PB_Event_CloseWindow
UseWindow(0):ActivateWindow()
CloseWindow(1)
EndIf
ForEver
EndProcedure
Procedure MakeDesktopSCREENSHOT(ImageNr,x,y,Width,Height)
hImage = CreateImage(ImageNr,Width,Height)
hdc = StartDrawing(ImageOutput())
DeskDC = GetDC_(GetDesktopWindow_())
BitBlt_(hdc,0,0,Width,Height,DeskDC,x,y,#SRCCOPY)
StopDrawing()
ReleaseDC_(GetDesktopWindow_(),DeskDC)
ProcedureReturn hImage
EndProcedure
If OpenPreferences("prefs.ini")=0
If CreatePreferences("prefs.ini")
WritePreferenceString("screenshotdir", "C:\")
WritePreferenceLong("screenshotres", 1)
WritePreferenceLong("screenshotquality", 7)
MessageRequester("Bitte lesen! Erster Programmstart!", "Du startest dieses Programm das erste Mal."+Chr(10)+Chr(13)+"Bitte Stelle zuerst alles in den Optionen auf deine Wünsche ein. (nicht viel Arbeit)"+Chr(10)+Chr(13)+"Das Programm erstellt ein Tray-Icon (rechts unten in der Taskleiste)."+Chr(10)+Chr(13)+"Wenn du das Fenster geschlossen hast läuft das Programm immer noch im Hintergrund weiter."+Chr(10)+Chr(13)+"Klicke auf das Tray-Icon um das Fenster wieder aufzudecken."+Chr(10)+Chr(13)+"Falls du das Programm beenden willst, öffne das Fenster und Klicke im Menü auf Optionen und dann auf beenden."+Chr(10)+Chr(13)+"Viel Spass!")
ClosePreferences()
Else
MessageRequester("Fehler", "Konnte keine Config-Datei erstellen!")
End
EndIf
Else
ClosePreferences()
EndIf
ExamineDesktops()
ScreenWidth=DesktopWidth(0)
ScreenHeight=DesktopHeight(0)
i=1
OpenWindow(0, ScreenWidth-320, ScreenHeight-250, 300, 150, #PB_Window_SystemMenu, "ScreenshotGrabber by Salami")
LoadImage(0, "icon4.ico")
UseImage(0)
AddSysTrayIcon(0, WindowID(), ImageID())
CreateMenu(0, WindowID(0))
MenuTitle("Optionen")
MenuItem(0, "Optionen")
MenuBar()
MenuItem(1, "Beenden")
MenuTitle("Hilfe")
MenuItem(2, "Hilfe/About")
CreateGadgetList(WindowID(0))
TextGadget(0, 5, 5, 290, 15, "Gemachte Screenshots:")
ListViewGadget(1, 5, 23, 290, 100)
;-Hauptschleife
Repeat
WEvent=WaitWindowEvent()
If WEvent=#PB_Event_CloseWindow
HideWindow(0, 1)
EndIf
If WEvent=#PB_Event_SysTray
HideWindow(0, 0)
EndIf
If WEvent=#PB_Event_Menu
If EventMenuID()=0
OpenOptionWindow(ScreenWidth, ScreenHeight)
EndIf
If EventMenuID()=1
End
EndIf
If EventMenuID()=2
MessageRequester("About ScreenshotGrabber", "Gemacht von Salami, www.codingtuts.dl.am"+Chr(10)+Chr(13)+Chr(10)+Chr(13)+"Einfach das Programm im Hintergrund laufen lassen und so viele Screenshots machen wie gewünscht."+Chr(10)+Chr(13)+"Die Dateien befinden sich dann in dem bei den Optionen angegebenen Ordner."+Chr(10)+Chr(13)+Chr(10)+Chr(13)+"Anleitung(wird auch beim ersten Programmstart gezeigt):"+Chr(10)+Chr(13)+"Bitte Stelle zuerst alles in den Optionen auf deine Wünsche ein. (nicht viel Arbeit)"+Chr(10)+Chr(13)+"Das Programm erstellt ein Tray-Icon (rechts unten in der Taskleiste)."+Chr(10)+Chr(13)+"Wenn du das Fenster geschlossen hast läuft das Programm immer noch im Hintergrund weiter."+Chr(10)+Chr(13)+"Klicke auf das Tray-Icon um das Fenster wieder aufzudecken."+Chr(10)+Chr(13)+"Falls du das Programm beenden willst, öffne das Fenster und Klicke im Menü auf Optionen und dann auf beenden.")
EndIf
EndIf
If GetAsyncKeyState_(#VK_SNAPSHOT)
UseJPEGImageEncoder()
MakeDesktopSCREENSHOT(1, 0, 0, ScreenWidth, ScreenHeight)
ResizeImage(1, 640, 480)
SaveImage(1, "C:\screenshot_"+Str(i)+".jpg", #PB_ImagePlugin_JPEG, 5)
AddGadgetItem(1, -1, "Screenshot "+Str(i))
i+1
EndIf
ForEver