Aktuelle Zeit: 18.11.2017 16:07

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 21 Beiträge ]  Gehe zu Seite 1, 2, 3  Nächste
Autor Nachricht
 Betreff des Beitrags: Tool friert ein, nach verlassen von Schleife in Thread
BeitragVerfasst: 27.06.2017 14:50 
Offline
Benutzeravatar

Registriert: 11.06.2017 20:25
Hi

Also bevor weiter das Thema im Allgemein Forum völlig Offtopic gebracht wird mit dem Problem
das ich mit dem Code unter Linux hab, poste ich den Code halt hier :)

Hier die Windows Version vom Code. CPU Last praktisch nicht existent, Ram Verbrauch unter 32Bit OS 2-3MB, ich benutze das Tool so schon seit 8 Jahren, ohne jegliche Probleme.

Bitte Threadsafe aktivieren !

Code:
  Enumeration
    #MainWin
    #CloseB
    #MinimizeB
    #PNG
    #BMP
    #JPG
    #TrackBar
    #TrayOption
    #MessageB
    #OpenFolderAfterSave
    #AskForName
    #UseDate
    #SetDefFolder
    #DefFolderText
    #TrayIcon
    #IMG
    #Sound
    #AUTO
    #AUTOAsk
  EndEnumeration
 
  own$=GetCurrentDirectory()
 
  If CountString(own$,"\") < 2
    MessageRequester("    Put me","in a Folder and start me again",#MB_OK)
    End
  EndIf
 
  If FileSize(own$+"TrayIcon.ico") < 1500
    MessageRequester("    Tray","icon (TrayIcon.ico) not found",#MB_OK)
    End
  EndIf
 
  Global config_valid
  Global sndwork
  Global stop_supervise
  Global supervise_run
 
  Procedure CreateScreenshot()
   
    pic = GetClipboardImage(#PB_Any)
   
    If IsImage(pic)
     
      If GetGadgetState(#AUTOAsk)
        If supervise_run
          If MessageRequester("    INFO","Detected Image in Clipboard"+Chr(13)+Chr(13)+"Auto Create Image ? (if you click NO, the Data in the Clipboard will be erased to)",#PB_MessageRequester_YesNo) = #PB_MessageRequester_No
            ClearClipboard()
            ProcedureReturn
          EndIf
        EndIf
      EndIf
     
      If GetGadgetState(#PNG)
        fpattern$="png | *.png" : ext$=".png" : format=1
      EndIf
      If GetGadgetState(#BMP)
        fpattern$="bmp | *.bmp" : ext$=".bmp" : format=2
      EndIf
      If GetGadgetState(#JPG)
        fpattern$="jpg | *.jpg" : ext$=".jpg" : format=3
      EndIf
     
      If GetGadgetState(#AskForName)
       
        fname$ = SaveFileRequester("Save",GetGadgetText(#DefFolderText),fpattern$,0)
       
        If fname$
         
          fp$=GetPathPart(fname$) : ff$=GetFilePart(fname$)
         
          If FileSize(fname$) > 0
            If MessageRequester(" Overwrite",fname$,#MB_YESNO) = #PB_MessageRequester_No
              ClearClipboard()
              ProcedureReturn
            EndIf
          EndIf
          fname$=RemoveString(fname$,ext$,#PB_String_NoCase)
          fname$=fname$+ext$
         
        Else
          ClearClipboard()
          ProcedureReturn
        EndIf
       
      Else
       
        ff$=FormatDate("%yyyy-%mm-%dd -- %hh-%ii-%ss", Date())
        default_output$=GetGadgetText(#DefFolderText)
       
        If FileSize(default_output$) = -1
          default_output$=GetHomeDirectory()
          SetGadgetText(#DefFolderText,default_output$)
          MessageRequester("    Error","Default Folder don´t exist, saved Image @ "+default_output$,#MB_OK)
          ProcedureReturn
        EndIf
       
        fname$=default_output$+ff$+ext$ : fp$=default_output$
       
      EndIf
     
      If format=1
        SaveImage(pic,fname$,#PB_ImagePlugin_PNG)
      ElseIf format=2
        SaveImage(pic,fname$,#PB_ImagePlugin_BMP,#Null,DesktopDepth(0))
      ElseIf format=3
        SaveImage(pic,fname$,#PB_ImagePlugin_JPEG,GetGadgetState(#TrackBar)+1)
      EndIf
     
      ClearClipboard()
     
      ff$=GetFilePart(fname$)
     
      If GetGadgetState(#MessageB)
        MessageRequester("    OK","Saved as "+ff$+Chr(13)+Chr(13)+"@ "+fp$,#MB_OK)
      Else
        If sndwork
          PlaySound(#Sound)
        EndIf
      EndIf
     
      If GetGadgetState(#OpenFolderAfterSave)
        RunProgram("explorer.exe",Chr(34)+fp$+Chr(34),"")
      EndIf
     
    EndIf
   
  EndProcedure
 
  Procedure SaveActiveSettings(Close)
   
    If CreatePreferences(own$+"TurboImageGrabber.ini")
     
      WritePreferenceString("key","a/3j@kn30N*b3<$k#ja!l3k9L")
     
      xxx=GetGadgetState(#TrayOption)
      WritePreferenceLong("tray start",xxx)
     
      xxx$=GetGadgetText(#DefFolderText)
      WritePreferenceString("default output",xxx$)
     
      If GetGadgetState(#PNG)
        WritePreferenceString("default format","0")
      EndIf
      If GetGadgetState(#BMP)
        WritePreferenceString("default format","1")
      EndIf
      If GetGadgetState(#JPG)
        WritePreferenceString("default format","2")
      EndIf
     
      If GetGadgetState(#AUTO)
        WritePreferenceString("supervise","1")
      EndIf
     
      If GetGadgetState(#AUTOAsk)
        WritePreferenceString("supervise_ask","1")
      EndIf
     
      xxx=GetGadgetState(#TrackBar)
      WritePreferenceLong("jpg compression",xxx)
     
      xxx=GetGadgetState(#OpenFolderAfterSave)
      WritePreferenceLong("open target",xxx)
     
      xxx=GetGadgetState(#MessageB)
      WritePreferenceLong("save message",xxx)
     
      xxx=GetGadgetState(#AskForName)
      WritePreferenceLong("save as user input",xxx)
     
      ClosePreferences()
     
      If Close
        End
      EndIf
     
    Else
      If Close
        If MessageRequester("    Error","Can´t Create/Save Preference File (maybe no System Right's)"+Chr(13)+Chr(13)+"Still close Turbo Image Grabber ?",#PB_MessageRequester_YesNo) = #PB_MessageRequester_Yes
         End
        EndIf
      Else
        MessageRequester("    Error","Can´t Create/Save Preference File (maybe no System Right's)",#MB_OK)
      EndIf
    EndIf
   
  EndProcedure
 
  Procedure WatchForClipBoardImage(bla)
   
    supervise_run=1
   
    Repeat
      If stop_supervise
        Break
      EndIf
      Delay(5)
      CreateScreenshot() 
    ForEver
   
    supervise_run=0
   
  EndProcedure
 
  Procedure InitSettings()
   
    If config_valid = 0
      SetGadgetState(#PNG,1)
      SetGadgetState(#MessageB,1)
      SetGadgetState(#AskForName,1)
      default_output$="C:\"
      SetGadgetText(#DefFolderText,default_output$)
    Else
      default_output$ = ReadPreferenceString("default output","C:\")
      If FileSize(default_output$) = -2
        SetGadgetText(#DefFolderText,default_output$)
      Else
        default_output$="C:\"
        SetGadgetText(#DefFolderText,default_output$)
      EndIf
     
      default_format = ReadPreferenceLong("default format",0)
      If default_format < 0 Or default_format > 2
        SetGadgetState(#PNG,1)
      Else
        If default_format = 0
          SetGadgetState(#PNG,1)
        ElseIf default_format = 1
          SetGadgetState(#BMP,1)
        ElseIf default_format = 2
          SetGadgetState(#JPG,1)       
        EndIf
      EndIf
     
      jpg_compression = ReadPreferenceLong("jpg compression",7)
      If jpg_compression < 0 Or jpg_compression > 10
        jpg_compression=7
      EndIf
      SetGadgetState(#TrackBar,jpg_compression)
     
      save_message = ReadPreferenceLong("save message",0)
      If save_message < 0 Or save_message > 1
        SetGadgetState(#MessageB,0)
      Else
        SetGadgetState(#MessageB,save_message)
      EndIf
     
      open_target = ReadPreferenceLong("open target",0)
      If open_target < 0 Or open_target > 1
        SetGadgetState(#OpenFolderAfterSave,0)
      Else
        SetGadgetState(#OpenFolderAfterSave,open_target)
      EndIf
     
      save_as_user_input = ReadPreferenceLong("save as user input",1)
      If save_as_user_input < 0 Or save_as_user_input > 1
        SetGadgetState(#AskForName,1)
      Else
        If save_as_user_input
          SetGadgetState(#AskForName,1)
        Else
          SetGadgetState(#AskForName,0) 
          SetGadgetState(#UseDate,1)
        EndIf
      EndIf
     
      If ReadPreferenceLong("supervise_ask",0)
        SetGadgetState(#AUTOAsk,1)
      EndIf
     
      If ReadPreferenceLong("supervise",0)
        SetGadgetState(#AUTO,1)
        CreateThread(@WatchForClipBoardImage(),0)
      EndIf
     
    EndIf
   
    ClosePreferences()
   
  EndProcedure
 
  If FileSize(own$+"TurboImageGrabber.ini") = -1
    CreateDef=1 : default_output$="C:\"
  Else
    If OpenPreferences(own$+"TurboImageGrabber.ini")
      ini_key$ = ReadPreferenceString("key","")
      ini_key_chk = FindString(ini_key$,"a/3j@kn30N*b3<$k#ja!l3k9L",1)
      If ini_key_chk
        config_valid=1
      Else
        MessageRequester("    No","valid Turbo Image Grabber ini File found",#MB_OK)
        config_valid=0
      EndIf
    EndIf
  EndIf
 
  #window_kon1=#PB_Window_ScreenCentered|#PB_Window_SystemMenu
  #window_kon2=#PB_Window_Invisible|#PB_Window_ScreenCentered|#PB_Window_SystemMenu
 
  Title$=" Turbo Image Grabber"
  bla=309
 
  If config_valid = 0
    OpenWindow(#MainWin, 100, 150, 255,bla,Title$,#window_kon1)
  Else
    open_in_tray = ReadPreferenceLong("tray start",0)
    If open_in_tray < 0 Or open_in_tray > 1
      OpenWindow(#MainWin, 100, 150, 255,bla,Title$,#window_kon1)
    Else
      If open_in_tray = 0
        OpenWindow(#MainWin, 100, 150, 255,bla,Title$,#window_kon1)
      ElseIf open_in_tray = 1
        OpenWindow(#MainWin, 100, 150, 255,bla,Title$,#window_kon2)
      EndIf
    EndIf
  EndIf
 
  AddSysTrayIcon(#TrayIcon,WindowID(#MainWin), LoadImage(#IMG, own$+"TrayIcon.ico"))
 
  UseJPEGImageEncoder() : UsePNGImageEncoder()
 
  If InitSound()
    UseOGGSoundDecoder()
    If LoadSound(#Sound,own$+"krapkrap.ogg")
      sndwork=1
    EndIf
  EndIf
 
  ButtonGadget(#CloseB,195,10,50,60,"Close Turbo Image Grabber",#PB_Button_MultiLine)
  ButtonGadget(#MinimizeB,130,10,50,60,"Minimize Turbo Image Grabber",#PB_Button_MultiLine)
 
  OptionGadget(#PNG,10,10,80,20,"Save as png")
  OptionGadget(#BMP,10,30,85,20,"Save as bmp")
  OptionGadget(#JPG,10,50,80,20,"Save as jpg")
 
  TrackBarGadget(#TrackBar,5,81,245,10,0,10,#PB_TrackBar_Ticks)
  SetGadgetState(#TrackBar,7)
 
  CheckBoxGadget(#TrayOption,10,100,80,20,"Open in Tray")
 
  If open_in_tray = 1
    SetGadgetState(#TrayOption,1)
  EndIf
 
  CheckBoxGadget(#MessageB,10,120,115,20,"Message after Save")
  SetGadgetState(#MessageB,1)
 
  CheckBoxGadget(#OpenFolderAfterSave,10,140,170,20,"Open Target folder after Saving")
 
  CheckBoxGadget(#AskForName,10,160,110,20,"Ask for Save Name")
  SetGadgetState(#AskForName,1)
 
  CheckBoxGadget(#UseDate,10,180,165,20,"Use Date+Time as File Names")
  ButtonGadget(#SetDefFolder,10,206,235,20,"Set Standard Output Folder")
  StringGadget(#DefFolderText,10,235,235,20,default_output$,#PB_String_ReadOnly) 
 
  CheckBoxGadget(#AUTO,10,260,215,20,"Auto Create Image  |  Supervise Clipboard")
  CheckBoxGadget(#AUTOAsk,10,280,225,20,"Ask before Auto Create @ Supervise Mode")
 
  If CreateDef
    SaveActiveSettings(0) : InitSettings() 
  Else
    InitSettings() 
  EndIf
 
  ExamineDesktops()
 
  Repeat
   
    WindowEvent = WaitWindowEvent() : EventGadget = EventGadget()
   
    If WindowEvent = #PB_Event_SysTray
     
      If EventType() = #PB_EventType_LeftClick
        CreateScreenshot() : SaveActiveSettings(0)
      EndIf
     
      If EventType() = #PB_EventType_LeftDoubleClick
        HideWindow(#MainWin,0) : SetActiveWindow(#MainWin) : SaveActiveSettings(0)
      EndIf
     
      If EventType() = #PB_EventType_RightDoubleClick
        If MessageRequester("    Close Turbo Image Grabber","Are you sure ?",#MB_YESNO) = #PB_MessageRequester_Yes
          SaveActiveSettings(1)
        EndIf
      EndIf
    EndIf
   
    If WindowEvent = #PB_Event_Gadget
     
      If EventGadget = #CloseB
        If MessageRequester("    Close Turbo Image Grabber","Are you sure ?",#MB_YESNO) = #PB_MessageRequester_Yes
         SaveActiveSettings(1)
        EndIf
      EndIf
     
      If EventGadget = #MinimizeB
        CreateScreenshot() : HideWindow(#MainWin,1) : SaveActiveSettings(0)
      EndIf
     
      If EventGadget = #AskForName
        If GetGadgetState(#AskForName)
          SetGadgetState(#AskForName,1) : SetGadgetState(#UseDate,0)
        Else
          SetGadgetState(#AskForName,0) : SetGadgetState(#UseDate,1)
        EndIf
      EndIf
     
      If EventGadget = #UseDate
        If GetGadgetState(#UseDate)
          SetGadgetState(#UseDate,1) : SetGadgetState(#AskForName,0)
        Else
          SetGadgetState(#UseDate,0) : SetGadgetState(#AskForName,1)
        EndIf
      EndIf
     
      If EventGadget = #AUTO
        If GetGadgetState(#AUTO)
          stop_supervise=0
          CreateThread(@WatchForClipBoardImage(),0) : SetGadgetState(#AUTO,1)
        Else
          SetGadgetState(#AUTO,0) : stop_supervise=1
        EndIf
      EndIf
     
      If EventGadget = #SetDefFolder
        If FileSize(default_output$) <> -2
          default_output$="C:\"
        EndIf
        default_output$=PathRequester("Choose Default Output Path",default_output$)
        If default_output$
          SetGadgetText(#DefFolderText,default_output$)
          SaveActiveSettings(0)
        EndIf
      EndIf
     
    EndIf
   
    If WindowEvent = #PB_Event_CloseWindow
      CreateScreenShot() : HideWindow(#MainWin,1) : SaveActiveSettings(0)
    EndIf
   
  ForEver








Jetzt der angepasste Code unter Linux (benutze Debian 8 Jessie, xfce, gtk)

Auch hier Bitte Threadsafe aktivieren.

Code:
  Enumeration
    #MainWin
    #CloseB
    #MinimizeB
    #PNG
    #BMP
    #JPG
    #TrackBar
    #TrayOption
    #MessageB
    #OpenFolderAfterSave
    #AskForName
    #UseDate
    #SetDefFolder
    #DefFolderText
    #TrayIcon
    #IMG
    #Sound
    #AUTO
    #AUTOAsk
  EndEnumeration
 
  own$=GetCurrentDirectory()
 
  If CountString(own$,"/") < 2
    MessageRequester("    Put me","in a extra Folder and start me again",#PB_MessageRequester_Ok)
    End
  EndIf
 
  If FileSize(own$+"trayicon.png") < 650
    MessageRequester("    Tray","icon (trayicon.png) not found",#PB_MessageRequester_Ok)
    End
  EndIf
 
  Global config_valid
  Global sndwork
  Global stop_supervise
  Global supervise_run
 
  Procedure CreateScreenShot()
   
    pic = GetClipboardImage(#PB_Any)
   
    If IsImage(pic)
     
      If GetGadgetState(#AUTOAsk)
        If supervise_run
          If MessageRequester("    INFO","Detected Image in Clipboard"+Chr(13)+Chr(13)+"Auto Create Image ? (if you click NO, the Data in the Clipboard will be erased to)",#PB_MessageRequester_YesNo) = #PB_MessageRequester_No
            ClearClipboard()
            ProcedureReturn
          EndIf
        EndIf
      EndIf
     
      If GetGadgetState(#PNG)
        fpattern$="png | *.png" : ext$=".png" : format=1
      EndIf
      If GetGadgetState(#BMP)
        fpattern$="bmp | *.bmp" : ext$=".bmp" : format=2
      EndIf
      If GetGadgetState(#JPG)
        fpattern$="jpg | *.jpg" : ext$=".jpg" : format=3
      EndIf
     
      If GetGadgetState(#AskForName)
       
        fname$ = SaveFileRequester("Save",GetGadgetText(#DefFolderText),fpattern$,0)
       
        If fname$
         
          fp$=GetPathPart(fname$) : ff$=GetFilePart(fname$)
         
          If FileSize(fname$) > 0
            If MessageRequester(" Overwrite",fname$,#PB_MessageRequester_YesNo) = #PB_MessageRequester_No
              ClearClipboard()
              ProcedureReturn
            EndIf
          EndIf
          fname$=RemoveString(fname$,ext$,#PB_String_NoCase)
          fname$=fname$+ext$
         
        Else
          ClearClipboard()
          ProcedureReturn
        EndIf
       
      Else
       
        ff$=FormatDate("%yyyy-%mm-%dd -- %hh-%ii-%ss", Date())
        default_output$=GetGadgetText(#DefFolderText)
       
        If FileSize(default_output$) = -1
          default_output$=GetHomeDirectory()
          SetGadgetText(#DefFolderText,default_output$)
          MessageRequester("    Error","Default Folder don´t exist, saved Image @ "+default_output$,#PB_MessageRequester_Ok)
          ProcedureReturn
        EndIf
       
        fname$=default_output$+ff$+ext$ : fp$=default_output$
       
      EndIf
     
      If format=1
        SaveImage(pic,fname$,#PB_ImagePlugin_PNG)
      ElseIf format=2
        SaveImage(pic,fname$,#PB_ImagePlugin_BMP,#Null,DesktopDepth(0))
      ElseIf format=3
        SaveImage(pic,fname$,#PB_ImagePlugin_JPEG,GetGadgetState(#TrackBar)+1)
      EndIf
     
      ClearClipboard()
     
      ff$=GetFilePart(fname$)
     
      If GetGadgetState(#MessageB)
        MessageRequester("    OK","Saved as "+ff$+Chr(13)+Chr(13)+"@ "+fp$,#PB_MessageRequester_Ok)
      Else
        If sndwork
          PlaySound(#Sound)
        EndIf
      EndIf
     
      If GetGadgetState(#OpenFolderAfterSave)
        RunProgram("explorer.exe",Chr(34)+fp$+Chr(34),"")
      EndIf
     
    EndIf
   
  EndProcedure
 
  Procedure SaveActiveSettings(Close)
   
    If CreatePreferences(own$+"TurboImageGrabber.ini")
     
      WritePreferenceString("key","a/3j@kn30N*b3<$k#ja!l3k9L")
     
      xxx=GetGadgetState(#TrayOption)
      WritePreferenceLong("tray start",xxx)
     
      xxx$=GetGadgetText(#DefFolderText)
      WritePreferenceString("default output",xxx$)
     
      If GetGadgetState(#PNG)
        WritePreferenceString("default format","0")
      EndIf
      If GetGadgetState(#BMP)
        WritePreferenceString("default format","1")
      EndIf
      If GetGadgetState(#JPG)
        WritePreferenceString("default format","2")
      EndIf
     
      If GetGadgetState(#AUTO)
        WritePreferenceString("supervise","1")
      EndIf
     
      If GetGadgetState(#AUTOAsk)
        WritePreferenceString("supervise_ask","1")
      EndIf
     
      xxx=GetGadgetState(#TrackBar)
      WritePreferenceLong("jpg compression",xxx)
     
      xxx=GetGadgetState(#OpenFolderAfterSave)
      WritePreferenceLong("open target",xxx)
     
      xxx=GetGadgetState(#MessageB)
      WritePreferenceLong("save message",xxx)
     
      xxx=GetGadgetState(#AskForName)
      WritePreferenceLong("save as user input",xxx)
     
      ClosePreferences()
     
      If Close
        End
      EndIf
     
    Else
      If Close
        If MessageRequester("    Error","Can´t Create/Save Preference File (maybe no System Right's)"+Chr(13)+Chr(13)+"Still close Turbo Image Grabber ?",#PB_MessageRequester_YesNo) = #PB_MessageRequester_Yes
         End
        EndIf
      Else
        MessageRequester("    Error","Can´t Create/Save Preference File (maybe no System Right's)",#PB_MessageRequester_Ok)
      EndIf
    EndIf
   
  EndProcedure
 
  Procedure WatchForClipBoardImage(bla)
   
    supervise_run=1
   
    Repeat
      If stop_supervise
        Break
      EndIf
      Delay(500)
      CreateScreenShot() 
    ForEver
   
    supervise_run=0
   
  EndProcedure
 
  Procedure InitSettings()
   
    If config_valid = 0
      SetGadgetState(#PNG,1)
      SetGadgetState(#MessageB,1)
      SetGadgetState(#AskForName,1)
      default_output$="~/"
      SetGadgetText(#DefFolderText,default_output$)
    Else
      default_output$ = ReadPreferenceString("default output","~/")
      If FileSize(default_output$) = -2
        SetGadgetText(#DefFolderText,default_output$)
      Else
        default_output$="~/"
        SetGadgetText(#DefFolderText,default_output$)
      EndIf
     
      default_format = ReadPreferenceLong("default format",0)
      If default_format < 0 Or default_format > 2
        SetGadgetState(#PNG,1)
      Else
        If default_format = 0
          SetGadgetState(#PNG,1)
        ElseIf default_format = 1
          SetGadgetState(#BMP,1)
        ElseIf default_format = 2
          SetGadgetState(#JPG,1)       
        EndIf
      EndIf
     
      jpg_compression = ReadPreferenceLong("jpg compression",7)
      If jpg_compression < 0 Or jpg_compression > 10
        jpg_compression=7
      EndIf
      SetGadgetState(#TrackBar,jpg_compression)
     
      save_message = ReadPreferenceLong("save message",0)
      If save_message < 0 Or save_message > 1
        SetGadgetState(#MessageB,0)
      Else
        SetGadgetState(#MessageB,save_message)
      EndIf
     
      open_target = ReadPreferenceLong("open target",0)
      If open_target < 0 Or open_target > 1
        SetGadgetState(#OpenFolderAfterSave,0)
      Else
        SetGadgetState(#OpenFolderAfterSave,open_target)
      EndIf
     
      save_as_user_input = ReadPreferenceLong("save as user input",1)
      If save_as_user_input < 0 Or save_as_user_input > 1
        SetGadgetState(#AskForName,1)
      Else
        If save_as_user_input
          SetGadgetState(#AskForName,1)
        Else
          SetGadgetState(#AskForName,0) 
          SetGadgetState(#UseDate,1)
        EndIf
      EndIf
     
      If ReadPreferenceLong("supervise_ask",0)
        SetGadgetState(#AUTOAsk,1)
      EndIf
     
      If ReadPreferenceLong("supervise",0)
        SetGadgetState(#AUTO,1)
        CreateThread(@WatchForClipBoardImage(),0)
      EndIf
     
    EndIf
   
    ClosePreferences()
   
  EndProcedure
 
  If FileSize(own$+"TurboImageGrabber.ini") = -1
    CreateDef=1 : default_output$="~/"
  Else
    If OpenPreferences(own$+"TurboImageGrabber.ini")
      ini_key$ = ReadPreferenceString("key","")
      ini_key_chk = FindString(ini_key$,"a/3j@kn30N*b3<$k#ja!l3k9L",1)
      If ini_key_chk
        config_valid=1
      Else
        MessageRequester("    No","valid Turbo Image Grabber ini File found",#PB_MessageRequester_Ok)
        config_valid=0
      EndIf
    EndIf
  EndIf
 
 
 
  #window_kon1=#PB_Window_ScreenCentered|#PB_Window_SystemMenu
  #window_kon2=#PB_Window_Invisible|#PB_Window_ScreenCentered|#PB_Window_SystemMenu
   
  title$=" Turbo Image Grabber"
  ;bla1=255 anscheinend sind unter Linux Pixel anders, das fenster ist bei Selber Monitor Auflösung
  ;deutlich größer als unter Windows mit selber Auflösung
  bla1=350
  ;bla2=309
  bla2=350
 
  If config_valid = 0
    OpenWindow(#MainWin, 100, 150,bla1,bla2,title$,#window_kon1)
  Else
    open_in_tray = ReadPreferenceLong("tray start",0)
    If open_in_tray < 0 Or open_in_tray > 1
      OpenWindow(#MainWin, 100, 150,bla1,bla2,title$,#window_kon1)
    Else
      If open_in_tray = 0
        OpenWindow(#MainWin, 100, 150,bla1,bla2,title$,#window_kon1)
      ElseIf open_in_tray = 1
        OpenWindow(#MainWin, 100, 150,bla1,bla2,title$,#window_kon2)
      EndIf
    EndIf
  EndIf
 
  UseJPEGImageEncoder() : UsePNGImageEncoder() : UsePNGImageDecoder()

  AddSysTrayIcon(#TrayIcon,WindowID(#MainWin),LoadImage(#IMG,own$+"trayicon.png"))
 
  If InitSound()
    UseOGGSoundDecoder()
    If LoadSound(#Sound,own$+"krapkrap.ogg")
      sndwork=1
    EndIf
  EndIf
 
  ButtonGadget(#CloseB,195,10,50,60,"Close Turbo Image Grabber",#PB_Button_MultiLine)
  ButtonGadget(#MinimizeB,130,10,50,60,"Minimize Turbo Image Grabber",#PB_Button_MultiLine)
 
  OptionGadget(#PNG,10,10,80,20,"Save as png")
  OptionGadget(#BMP,10,30,85,20,"Save as bmp")
  OptionGadget(#JPG,10,50,80,20,"Save as jpg")
 
  TrackBarGadget(#TrackBar,5,81,245,10,0,10,#PB_TrackBar_Ticks)
  SetGadgetState(#TrackBar,7)
 
  CheckBoxGadget(#TrayOption,10,100,80,20,"Open in Tray")
 
  If open_in_tray = 1
    SetGadgetState(#TrayOption,1)
  EndIf
 
  CheckBoxGadget(#MessageB,10,120,115,20,"Message after Save")
  SetGadgetState(#MessageB,1)
 
  CheckBoxGadget(#OpenFolderAfterSave,10,140,170,20,"Open Target folder after Saving")
 
  CheckBoxGadget(#AskForName,10,160,110,20,"Ask for Save Name")
  SetGadgetState(#AskForName,1)
 
  CheckBoxGadget(#UseDate,10,180,165,20,"Use Date+Time as File Names")
  ButtonGadget(#SetDefFolder,10,206,235,20,"Set Standard Output Folder")
  StringGadget(#DefFolderText,10,235,235,20,default_output$,#PB_String_ReadOnly) 
 
  CheckBoxGadget(#AUTO,10,260,215,20,"Auto Create Image  |  Supervise Clipboard")
  CheckBoxGadget(#AUTOAsk,10,280,225,20,"Ask before Auto Create @ Supervise Mode")
 
  If CreateDef
    SaveActiveSettings(0) : InitSettings() 
  Else
    InitSettings() 
  EndIf
 
  ExamineDesktops()
 
  Repeat
   
    WindowEvent = WaitWindowEvent()
   
    If WindowEvent = #PB_Event_SysTray
     
      If EventType() = #PB_EventType_LeftClick
        CreateScreenShot() : SaveActiveSettings(0)
      EndIf
     
      If EventType() = #PB_EventType_LeftDoubleClick
        HideWindow(#MainWin,0) : SetActiveWindow(#MainWin) : SaveActiveSettings(0)
      EndIf
     
      If EventType() = #PB_EventType_RightDoubleClick
        If MessageRequester("    Close Turbo Image Grabber","Are you sure ?",#PB_MessageRequester_YesNo) = #PB_MessageRequester_Yes
          SaveActiveSettings(1)
        EndIf
      EndIf
    EndIf
   
    If WindowEvent = #PB_Event_Gadget
     
      EventGadget = EventGadget()
     
      If EventGadget = #CloseB
        If MessageRequester("    Close Turbo Image Grabber","Are you sure ?",#PB_MessageRequester_YesNo) = #PB_MessageRequester_Yes
         SaveActiveSettings(1)
        EndIf
      EndIf
     
      If EventGadget = #MinimizeB
        CreateScreenShot() : HideWindow(#MainWin,1) : SaveActiveSettings(0)
      EndIf
     
      If EventGadget = #AskForName
        If GetGadgetState(#AskForName)
          SetGadgetState(#AskForName,1) : SetGadgetState(#UseDate,0)
        Else
          SetGadgetState(#AskForName,0) : SetGadgetState(#UseDate,1)
        EndIf
      EndIf
     
      If EventGadget = #UseDate
        If GetGadgetState(#UseDate)
          SetGadgetState(#UseDate,1) : SetGadgetState(#AskForName,0)
        Else
          SetGadgetState(#UseDate,0) : SetGadgetState(#AskForName,1)
        EndIf
      EndIf
     
      If EventGadget = #AUTO
        If GetGadgetState(#AUTO)
          stop_supervise=0
          CreateThread(@WatchForClipBoardImage(),0) : SetGadgetState(#AUTO,1)
        Else
          SetGadgetState(#AUTO,0) : stop_supervise=1
        EndIf
      EndIf
     
      If EventGadget = #SetDefFolder
        If FileSize(default_output$) <> -2
          default_output$="~/"
        EndIf
        default_output$=PathRequester("Choose Default Output Path",default_output$)
        If default_output$
          SetGadgetText(#DefFolderText,default_output$)
          SaveActiveSettings(0)
        EndIf
      EndIf
     
    EndIf
   
    If WindowEvent = #PB_Event_CloseWindow
      CreateScreenShot() : HideWindow(#MainWin,1) : SaveActiveSettings(0)
    EndIf
   
  ForEver


Sobald unter Linux die Prozedure WatchForClipBoardImage verlassen wird (Checkbox mit Text Auto Create Image | Supervice Clipboard) durch auslösen von einem Break, weil stop_supervise gleich 1 ist, wird das komplette Tool eingefroren, es gibt auch keine Meldung im Debugger was los ist.

Ich bin völlig überfragt !

1) Wieso so ein abartiger Ram Verbrauch im Vergleich zu Windoof ?
2) Wieso reicht bei Windoof Delay(5) und bei Werten unter 50 krieg ich massive GTK Fehlermeldungen ?
3) Wieso ist die CPU Auslastung praktisch nicht existent, wie unter Windoof ?
4) Warum friert es ein, weil so etwas banales passiert, wie das verlassen einer Schleife die in einem Thread ist ?
5) Was soll diese komische Meldung wenn mann das Tool beendet ?

Code:
[14:11:04] [WARNING] Gtk (MESSAGE): GtkDialog mapped without a transient parent. This is discouraged.
[14:11:12] Die Programmausführung ist abgeschlossen.


6) Wieso ist das Fenster vom Tool riesig unter Linux (Xfce unter 1024x768), wenn ich eine Fentergröße
von 255W hab und 309H, und unter Windows ist es unter 1024x768, schön kompakt wie es sein soll.

Ja das die Default Font Schriftgrößen unter Xfce anders sind, daß ergibt ja noch Sinn, aber das ein Fenster extrem groß im Vergleich ist, daß versteh ich wirklich nicht.

Ein Pixel bleibt doch noch immer ein Pixel oder nicht ?

Da ich keine Anhang Funktion gefunden hab, hab ich die TrayIcons (einmal als png für Linux, und einmal als ico für Windoof) und das ogg Sound File gezippz und hier hochgeladen.

http://www27.zippyshare.com/v/VLtQqRMD/file.html

_________________
https://www.geek.com/tech/a-commodore-6 ... s-1672510/
٩(̾●̮̮̃̾•̃̾)۶ __̴ı̴̴̡̡̡ ̡͌l̡̡̡ ̡͌l̡*̡̡ ̴̡ı̴̴̡ ̡̡͡|̲̲̲͡͡͡ ̲▫̲͡ ̲̲̲͡͡π̲̲͡͡ ̲̲͡▫̲̲͡͡ ̲|̡̡̡ ̡ ̴̡ı̴̡̡ ̡͌l̡̡̡̡.___٩(- ̮̮̃-̃)۶


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Tool friert ein, nach verlassen von Schleife in Thread
BeitragVerfasst: 27.06.2017 19:57 
Offline

Registriert: 30.03.2011 20:53
Ich habe dein Programm jetzt auch mal unter Linux ausprobiert. Wie es aussieht, hängt sich das Programm auf, wenn GetClipboardImage() im Thread läuft bzw. lief. Mit AddWindowTimer() kannst du dieses Problem leicht umgehen.

Das Fenster selber ist bei mir genauso groß wie unter Windows, allerdings habe ich KDE.

Unter gtk3 gibt es aber noch ein Problem mit dem TrayIcon, Es wird nur der Linksklick ausgewertet und ich kann das Programm nicht mehr beenden. Wenn ich auf gtk2 umstelle, gibt es das Problem nicht.

Der Speicherverbrauch ohne Debugger ist bei mir auch OK. Nach Programmstart knapp 3 MB und steigt auf 8 MB, sobald Bilder da sind. Bei deiner Umsetztung steigt der Speicherverbrauch bei jedem Bild, da du in der CreateScreenShot-Prozedur FreeImage() vergessen hast.



Code:
Enumeration
    #MainWin
    #CloseB
    #MinimizeB
    #PNG
    #BMP
    #JPG
    #TrackBar
    #TrayOption
    #MessageB
    #OpenFolderAfterSave
    #AskForName
    #UseDate
    #SetDefFolder
    #DefFolderText
    #TrayIcon
    #IMG
    #Sound
    #AUTO
    #AUTOAsk
  EndEnumeration
 
  own$=GetCurrentDirectory()
 
  If CountString(own$,"/") < 2
    MessageRequester("    Put me","in a extra Folder and start me again",#PB_MessageRequester_Ok)
    End
  EndIf
 
  If FileSize(own$+"trayicon.png") < 650
    MessageRequester("    Tray","icon (trayicon.png) not found",#PB_MessageRequester_Ok)
    End
  EndIf
 
  Global config_valid
  Global sndwork
  Global stop_supervise
  Global supervise_run
 
  Procedure CreateScreenShot()
   
    pic = GetClipboardImage(#PB_Any)
   
    If IsImage(pic)
     
      If GetGadgetState(#AUTOAsk)
        If supervise_run
          If MessageRequester("    INFO","Detected Image in Clipboard"+Chr(13)+Chr(13)+"Auto Create Image ? (if you click NO, the Data in the Clipboard will be erased to)",#PB_MessageRequester_YesNo) = #PB_MessageRequester_No
            ClearClipboard()
            ProcedureReturn
          EndIf
        EndIf
      EndIf
     
      If GetGadgetState(#PNG)
        fpattern$="png | *.png" : ext$=".png" : format=1
      EndIf
      If GetGadgetState(#BMP)
        fpattern$="bmp | *.bmp" : ext$=".bmp" : format=2
      EndIf
      If GetGadgetState(#JPG)
        fpattern$="jpg | *.jpg" : ext$=".jpg" : format=3
      EndIf
     
      If GetGadgetState(#AskForName)
       
        fname$ = SaveFileRequester("Save",GetGadgetText(#DefFolderText),fpattern$,0)
       
        If fname$
         
          fp$=GetPathPart(fname$) : ff$=GetFilePart(fname$)
         
          If FileSize(fname$) > 0
            If MessageRequester(" Overwrite",fname$,#PB_MessageRequester_YesNo) = #PB_MessageRequester_No
              ClearClipboard()
              ProcedureReturn
            EndIf
          EndIf
          fname$=RemoveString(fname$,ext$,#PB_String_NoCase)
          fname$=fname$+ext$
         
        Else
          ClearClipboard()
          ProcedureReturn
        EndIf
       
      Else
       
        ff$=FormatDate("%yyyy-%mm-%dd -- %hh-%ii-%ss", Date())
        default_output$=GetGadgetText(#DefFolderText)
       
        If FileSize(default_output$) = -1
          default_output$=GetHomeDirectory()
          SetGadgetText(#DefFolderText,default_output$)
          MessageRequester("    Error","Default Folder don´t exist, saved Image @ "+default_output$,#PB_MessageRequester_Ok)
          ProcedureReturn
        EndIf
       
        fname$=default_output$+ff$+ext$ : fp$=default_output$
       
      EndIf
     
      If format=1
        SaveImage(pic,fname$,#PB_ImagePlugin_PNG)
      ElseIf format=2
        SaveImage(pic,fname$,#PB_ImagePlugin_BMP,#Null,DesktopDepth(0))
      ElseIf format=3
        SaveImage(pic,fname$,#PB_ImagePlugin_JPEG,GetGadgetState(#TrackBar)+1)
      EndIf
     
      ClearClipboard()
     
      ff$=GetFilePart(fname$)
     
      If GetGadgetState(#MessageB)
        MessageRequester("    OK","Saved as "+ff$+Chr(13)+Chr(13)+"@ "+fp$,#PB_MessageRequester_Ok)
      Else
        If sndwork
          PlaySound(#Sound)
        EndIf
      EndIf
     
      If GetGadgetState(#OpenFolderAfterSave)
        RunProgram("explorer.exe",Chr(34)+fp$+Chr(34),"")
      EndIf
      FreeImage(pic)
    EndIf
   
  EndProcedure
 
  Procedure SaveActiveSettings(Close)
   
    If CreatePreferences(own$+"TurboImageGrabber.ini")
     
      WritePreferenceString("key","a/3j@kn30N*b3<$k#ja!l3k9L")
     
      xxx=GetGadgetState(#TrayOption)
      WritePreferenceLong("tray start",xxx)
     
      xxx$=GetGadgetText(#DefFolderText)
      WritePreferenceString("default output",xxx$)
     
      If GetGadgetState(#PNG)
        WritePreferenceString("default format","0")
      EndIf
      If GetGadgetState(#BMP)
        WritePreferenceString("default format","1")
      EndIf
      If GetGadgetState(#JPG)
        WritePreferenceString("default format","2")
      EndIf
     
      If GetGadgetState(#AUTO)
        WritePreferenceString("supervise","1")
      EndIf
     
      If GetGadgetState(#AUTOAsk)
        WritePreferenceString("supervise_ask","1")
      EndIf
     
      xxx=GetGadgetState(#TrackBar)
      WritePreferenceLong("jpg compression",xxx)
     
      xxx=GetGadgetState(#OpenFolderAfterSave)
      WritePreferenceLong("open target",xxx)
     
      xxx=GetGadgetState(#MessageB)
      WritePreferenceLong("save message",xxx)
     
      xxx=GetGadgetState(#AskForName)
      WritePreferenceLong("save as user input",xxx)
     
      ClosePreferences()
     
      If Close
        End
      EndIf
     
    Else
      If Close
        If MessageRequester("    Error","Can´t Create/Save Preference File (maybe no System Right's)"+Chr(13)+Chr(13)+"Still close Turbo Image Grabber ?",#PB_MessageRequester_YesNo) = #PB_MessageRequester_Yes
         End
        EndIf
      Else
        MessageRequester("    Error","Can´t Create/Save Preference File (maybe no System Right's)",#PB_MessageRequester_Ok)
      EndIf
    EndIf
   
  EndProcedure
 
  Procedure WatchForClipBoardImage(bla)
    Debug "THREAD GESTARTET"
    supervise_run=1
   
    Repeat
      If stop_supervise
        Break
      EndIf
      Delay(500)
      CreateScreenShot()
      ; GetClipboardImage(0)
      If IsImage(0)
         FreeImage(0)
      EndIf
     
    ForEver
   
    supervise_run=0
    Debug "THREAD BEENDET"
  EndProcedure
 
  Procedure InitSettings()
   
    If config_valid = 0
      SetGadgetState(#PNG,1)
      SetGadgetState(#MessageB,1)
      SetGadgetState(#AskForName,1)
      default_output$="~/"
      SetGadgetText(#DefFolderText,default_output$)
    Else
      default_output$ = ReadPreferenceString("default output","~/")
      If FileSize(default_output$) = -2
        SetGadgetText(#DefFolderText,default_output$)
      Else
        default_output$="~/"
        SetGadgetText(#DefFolderText,default_output$)
      EndIf
     
      default_format = ReadPreferenceLong("default format",0)
      If default_format < 0 Or default_format > 2
        SetGadgetState(#PNG,1)
      Else
        If default_format = 0
          SetGadgetState(#PNG,1)
        ElseIf default_format = 1
          SetGadgetState(#BMP,1)
        ElseIf default_format = 2
          SetGadgetState(#JPG,1)       
        EndIf
      EndIf
     
      jpg_compression = ReadPreferenceLong("jpg compression",7)
      If jpg_compression < 0 Or jpg_compression > 10
        jpg_compression=7
      EndIf
      SetGadgetState(#TrackBar,jpg_compression)
     
      save_message = ReadPreferenceLong("save message",0)
      If save_message < 0 Or save_message > 1
        SetGadgetState(#MessageB,0)
      Else
        SetGadgetState(#MessageB,save_message)
      EndIf
     
      open_target = ReadPreferenceLong("open target",0)
      If open_target < 0 Or open_target > 1
        SetGadgetState(#OpenFolderAfterSave,0)
      Else
        SetGadgetState(#OpenFolderAfterSave,open_target)
      EndIf
     
      save_as_user_input = ReadPreferenceLong("save as user input",1)
      If save_as_user_input < 0 Or save_as_user_input > 1
        SetGadgetState(#AskForName,1)
      Else
        If save_as_user_input
          SetGadgetState(#AskForName,1)
        Else
          SetGadgetState(#AskForName,0) 
          SetGadgetState(#UseDate,1)
        EndIf
      EndIf
     
      If ReadPreferenceLong("supervise_ask",0)
        SetGadgetState(#AUTOAsk,1)
      EndIf
     
      If ReadPreferenceLong("supervise",0)
        SetGadgetState(#AUTO,1)
        ; CreateThread(@WatchForClipBoardImage(),0)
        AddWindowTimer(#MainWin, 1, 100)
      EndIf
     
    EndIf
   
    ClosePreferences()
   
  EndProcedure
 
  If FileSize(own$+"TurboImageGrabber.ini") = -1
    CreateDef=1 : default_output$="~/"
  Else
    If OpenPreferences(own$+"TurboImageGrabber.ini")
      ini_key$ = ReadPreferenceString("key","")
      ini_key_chk = FindString(ini_key$,"a/3j@kn30N*b3<$k#ja!l3k9L",1)
      If ini_key_chk
        config_valid=1
      Else
        MessageRequester("    No","valid Turbo Image Grabber ini File found",#PB_MessageRequester_Ok)
        config_valid=0
      EndIf
    EndIf
  EndIf
 
 
 
  #window_kon1=#PB_Window_ScreenCentered|#PB_Window_SystemMenu
  #window_kon2=#PB_Window_Invisible|#PB_Window_ScreenCentered|#PB_Window_SystemMenu
   
  title$=" Turbo Image Grabber"
  ;bla1=255 anscheinend sind unter Linux Pixel anders, das fenster ist bei Selber Monitor Auflösung
  ;deutlich größer als unter Windows mit selber Auflösung
  bla1=350
  ;bla2=309
  bla2=350
 
  If config_valid = 0
    OpenWindow(#MainWin, 100, 150,bla1,bla2,title$,#window_kon1)
  Else
    open_in_tray = ReadPreferenceLong("tray start",0)
    If open_in_tray < 0 Or open_in_tray > 1
      OpenWindow(#MainWin, 100, 150,bla1,bla2,title$,#window_kon1)
    Else
      If open_in_tray = 0
        OpenWindow(#MainWin, 100, 150,bla1,bla2,title$,#window_kon1)
      ElseIf open_in_tray = 1
        OpenWindow(#MainWin, 100, 150,bla1,bla2,title$,#window_kon2)
      EndIf
    EndIf
  EndIf
 
  UseJPEGImageEncoder() : UsePNGImageEncoder() : UsePNGImageDecoder()

  AddSysTrayIcon(#TrayIcon,WindowID(#MainWin),LoadImage(#IMG,own$+"trayicon.png"))
 
  If InitSound()
    UseOGGSoundDecoder()
    If LoadSound(#Sound,own$+"krapkrap.ogg")
      sndwork=1
    EndIf
  EndIf
 
  ButtonGadget(#CloseB,195,10,50,60,"Close Turbo Image Grabber",#PB_Button_MultiLine)
  ButtonGadget(#MinimizeB,130,10,50,60,"Minimize Turbo Image Grabber",#PB_Button_MultiLine)
 
  OptionGadget(#PNG,10,10,80,20,"Save as png")
  OptionGadget(#BMP,10,30,85,20,"Save as bmp")
  OptionGadget(#JPG,10,50,80,20,"Save as jpg")
 
  TrackBarGadget(#TrackBar,5,81,245,10,0,10,#PB_TrackBar_Ticks)
  SetGadgetState(#TrackBar,7)
 
  CheckBoxGadget(#TrayOption,10,100,80,20,"Open in Tray")
 
  If open_in_tray = 1
    SetGadgetState(#TrayOption,1)
  EndIf
 
  CheckBoxGadget(#MessageB,10,120,115,20,"Message after Save")
  SetGadgetState(#MessageB,1)
 
  CheckBoxGadget(#OpenFolderAfterSave,10,140,170,20,"Open Target folder after Saving")
 
  CheckBoxGadget(#AskForName,10,160,110,20,"Ask for Save Name")
  SetGadgetState(#AskForName,1)
 
  CheckBoxGadget(#UseDate,10,180,165,20,"Use Date+Time as File Names")
  ButtonGadget(#SetDefFolder,10,206,235,20,"Set Standard Output Folder")
  StringGadget(#DefFolderText,10,235,235,20,default_output$,#PB_String_ReadOnly) 
 
  CheckBoxGadget(#AUTO,10,260,215,20,"Auto Create Image  |  Supervise Clipboard")
  CheckBoxGadget(#AUTOAsk,10,280,225,20,"Ask before Auto Create @ Supervise Mode")
 
  If CreateDef
    SaveActiveSettings(0) : InitSettings() 
  Else
    InitSettings() 
  EndIf
 
  ExamineDesktops()
 
  Repeat
   
    WindowEvent = WaitWindowEvent()
   
    If WindowEvent = #PB_Event_SysTray
     
      If EventType() = #PB_EventType_LeftClick
        CreateScreenShot() : SaveActiveSettings(0)
      EndIf
     
      If EventType() = #PB_EventType_LeftDoubleClick
        HideWindow(#MainWin,0) : SetActiveWindow(#MainWin) : SaveActiveSettings(0)
      EndIf
     
      If EventType() = #PB_EventType_RightDoubleClick
        If MessageRequester("    Close Turbo Image Grabber","Are you sure ?",#PB_MessageRequester_YesNo) = #PB_MessageRequester_Yes
          SaveActiveSettings(1)
        EndIf
      EndIf
    EndIf
   
    If WindowEvent = #PB_Event_Gadget
     
      EventGadget = EventGadget()
     
      If EventGadget = #CloseB
        If MessageRequester("    Close Turbo Image Grabber","Are you sure ?",#PB_MessageRequester_YesNo) = #PB_MessageRequester_Yes
         SaveActiveSettings(1)
        EndIf
      EndIf
     
      If EventGadget = #MinimizeB
        CreateScreenShot() : HideWindow(#MainWin,1) : SaveActiveSettings(0)
      EndIf
     
      If EventGadget = #AskForName
        If GetGadgetState(#AskForName)
          SetGadgetState(#AskForName,1) : SetGadgetState(#UseDate,0)
        Else
          SetGadgetState(#AskForName,0) : SetGadgetState(#UseDate,1)
        EndIf
      EndIf
     
      If EventGadget = #UseDate
        If GetGadgetState(#UseDate)
          SetGadgetState(#UseDate,1) : SetGadgetState(#AskForName,0)
        Else
          SetGadgetState(#UseDate,0) : SetGadgetState(#AskForName,1)
        EndIf
      EndIf
     
      If EventGadget = #AUTO
        If GetGadgetState(#AUTO)
          stop_supervise=0
          ; CreateThread(@WatchForClipBoardImage(),0) : SetGadgetState(#AUTO,1)
          AddWindowTimer(#MainWin, 1, 100)
        Else
           RemoveWindowTimer(#MainWin, 1)
           SetGadgetState(#AUTO,0) : stop_supervise=1
        EndIf
      EndIf
     
      If EventGadget = #SetDefFolder
        If FileSize(default_output$) <> -2
          default_output$="~/"
        EndIf
        default_output$=PathRequester("Choose Default Output Path",default_output$)
        If default_output$
          SetGadgetText(#DefFolderText,default_output$)
          SaveActiveSettings(0)
        EndIf
      EndIf
     
    EndIf
   
    If WindowEvent = #PB_Event_Timer
       If EventTimer() = 1
          CreateScreenShot()
       EndIf
    EndIf
   
   
    If WindowEvent = #PB_Event_CloseWindow
       
      CreateScreenShot() :  HideWindow(#MainWin,1) : SaveActiveSettings(0)
    EndIf
   
   
   
  ForEver


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Tool friert ein, nach verlassen von Schleife in Thread
BeitragVerfasst: 27.06.2017 20:12 
Offline

Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge
Huhu!!!

Du solltest meine Tipps schon befolgen.
GetClipBoard() nutzt eine Api-Funktion unter Linux die nicht für externe Threads geeignet ist.

So funktionierts:

Code:
Enumeration
    #MainWin
    #CloseB
    #MinimizeB
    #PNG
    #BMP
    #JPG
    #TrackBar
    #TrayOption
    #MessageB
    #OpenFolderAfterSave
    #AskForName
    #UseDate
    #SetDefFolder
    #DefFolderText
    #TrayIcon
    #IMG
    #Sound
    #AUTO
    #AUTOAsk
  EndEnumeration
 
  own$=GetCurrentDirectory()
 
  If CountString(own$,"/") < 2
    MessageRequester("    Put me","in a extra Folder and start me again",#PB_MessageRequester_Ok)
    End
  EndIf
 
  If FileSize(own$+"trayicon.png") = -1
    MessageRequester("    Tray","icon (trayicon.png) not found",#PB_MessageRequester_Ok)
    End
  EndIf
 
  Global config_valid
  Global sndwork
  Global stop_supervise
  Global supervise_run
  Global screenshot.b = 0
 
  Procedure CreateScreenShot()
   
    pic = GetClipboardImage(#PB_Any)
   
    If IsImage(pic)
     
      If GetGadgetState(#AUTOAsk)
        If supervise_run
          If MessageRequester("    INFO","Detected Image in Clipboard"+Chr(13)+Chr(13)+"Auto Create Image ? (if you click NO, the Data in the Clipboard will be erased to)",#PB_MessageRequester_YesNo) = #PB_MessageRequester_No
            ClearClipboard()
            ProcedureReturn
          EndIf
        EndIf
      EndIf
     
      If GetGadgetState(#PNG)
        fpattern$="png | *.png" : ext$=".png" : format=1
      EndIf
      If GetGadgetState(#BMP)
        fpattern$="bmp | *.bmp" : ext$=".bmp" : format=2
      EndIf
      If GetGadgetState(#JPG)
        fpattern$="jpg | *.jpg" : ext$=".jpg" : format=3
      EndIf
     
      If GetGadgetState(#AskForName)
       
        fname$ = SaveFileRequester("Save",GetGadgetText(#DefFolderText),fpattern$,0)
       
        If fname$
         
          fp$=GetPathPart(fname$) : ff$=GetFilePart(fname$)
         
          If FileSize(fname$) > 0
            If MessageRequester(" Overwrite",fname$,#PB_MessageRequester_YesNo) = #PB_MessageRequester_No
              ClearClipboard()
              ProcedureReturn
            EndIf
          EndIf
          fname$=RemoveString(fname$,ext$,#PB_String_NoCase)
          fname$=fname$+ext$
         
        Else
          ClearClipboard()
          ProcedureReturn
        EndIf
       
      Else
       
        ff$=FormatDate("%yyyy-%mm-%dd -- %hh-%ii-%ss", Date())
        default_output$=GetGadgetText(#DefFolderText)
       
        If FileSize(default_output$) = -1
          default_output$=GetHomeDirectory()
          SetGadgetText(#DefFolderText,default_output$)
          MessageRequester("    Error","Default Folder don´t exist, saved Image @ "+default_output$,#PB_MessageRequester_Ok)
          ProcedureReturn
        EndIf
       
        fname$=default_output$+ff$+ext$ : fp$=default_output$
       
      EndIf
     
      If format=1
        SaveImage(pic,fname$,#PB_ImagePlugin_PNG)
      ElseIf format=2
        SaveImage(pic,fname$,#PB_ImagePlugin_BMP,#Null,DesktopDepth(0))
      ElseIf format=3
        SaveImage(pic,fname$,#PB_ImagePlugin_JPEG,GetGadgetState(#TrackBar)+1)
      EndIf
     
      ClearClipboard()
     
      ff$=GetFilePart(fname$)
     
      If GetGadgetState(#MessageB)
        MessageRequester("    OK","Saved as "+ff$+Chr(13)+Chr(13)+"@ "+fp$,#PB_MessageRequester_Ok)
      Else
        If sndwork
          PlaySound(#Sound)
        EndIf
      EndIf
     
      If GetGadgetState(#OpenFolderAfterSave)
        RunProgram("explorer.exe",Chr(34)+fp$+Chr(34),"")
      EndIf
      FreeImage(pic)
    EndIf
   
  EndProcedure
 
  Procedure SaveActiveSettings(Close)
   
    If CreatePreferences(own$+"TurboImageGrabber.ini")
     
      WritePreferenceString("key","a/3j@kn30N*b3<$k#ja!l3k9L")
     
      xxx=GetGadgetState(#TrayOption)
      WritePreferenceLong("tray start",xxx)
     
      xxx$=GetGadgetText(#DefFolderText)
      WritePreferenceString("default output",xxx$)
     
      If GetGadgetState(#PNG)
        WritePreferenceString("default format","0")
      EndIf
      If GetGadgetState(#BMP)
        WritePreferenceString("default format","1")
      EndIf
      If GetGadgetState(#JPG)
        WritePreferenceString("default format","2")
      EndIf
     
      If GetGadgetState(#AUTO)
        WritePreferenceString("supervise","1")
      EndIf
     
      If GetGadgetState(#AUTOAsk)
        WritePreferenceString("supervise_ask","1")
      EndIf
     
      xxx=GetGadgetState(#TrackBar)
      WritePreferenceLong("jpg compression",xxx)
     
      xxx=GetGadgetState(#OpenFolderAfterSave)
      WritePreferenceLong("open target",xxx)
     
      xxx=GetGadgetState(#MessageB)
      WritePreferenceLong("save message",xxx)
     
      xxx=GetGadgetState(#AskForName)
      WritePreferenceLong("save as user input",xxx)
     
      ClosePreferences()
     
      If Close
        End
      EndIf
     
    Else
      If Close
        If MessageRequester("    Error","Can´t Create/Save Preference File (maybe no System Right's)"+Chr(13)+Chr(13)+"Still close Turbo Image Grabber ?",#PB_MessageRequester_YesNo) = #PB_MessageRequester_Yes
         End
        EndIf
      Else
        MessageRequester("    Error","Can´t Create/Save Preference File (maybe no System Right's)",#PB_MessageRequester_Ok)
      EndIf
    EndIf
   
  EndProcedure
 
  Procedure WatchForClipBoardImage(bla)
   
    supervise_run=1
   
    Repeat
      If stop_supervise
        Break
      EndIf
      Delay(500)
      screenshot = 1
    ForEver
    Delay(20)
    supervise_run=0
   
  EndProcedure
 
  Procedure InitSettings()
   
    If config_valid = 0
      SetGadgetState(#PNG,1)
      SetGadgetState(#MessageB,1)
      SetGadgetState(#AskForName,1)
      default_output$="~/"
      SetGadgetText(#DefFolderText,default_output$)
    Else
      default_output$ = ReadPreferenceString("default output","~/")
      If FileSize(default_output$) = -2
        SetGadgetText(#DefFolderText,default_output$)
      Else
        default_output$="~/"
        SetGadgetText(#DefFolderText,default_output$)
      EndIf
     
      default_format = ReadPreferenceLong("default format",0)
      If default_format < 0 Or default_format > 2
        SetGadgetState(#PNG,1)
      Else
        If default_format = 0
          SetGadgetState(#PNG,1)
        ElseIf default_format = 1
          SetGadgetState(#BMP,1)
        ElseIf default_format = 2
          SetGadgetState(#JPG,1)       
        EndIf
      EndIf
     
      jpg_compression = ReadPreferenceLong("jpg compression",7)
      If jpg_compression < 0 Or jpg_compression > 10
        jpg_compression=7
      EndIf
      SetGadgetState(#TrackBar,jpg_compression)
     
      save_message = ReadPreferenceLong("save message",0)
      If save_message < 0 Or save_message > 1
        SetGadgetState(#MessageB,0)
      Else
        SetGadgetState(#MessageB,save_message)
      EndIf
     
      open_target = ReadPreferenceLong("open target",0)
      If open_target < 0 Or open_target > 1
        SetGadgetState(#OpenFolderAfterSave,0)
      Else
        SetGadgetState(#OpenFolderAfterSave,open_target)
      EndIf
     
      save_as_user_input = ReadPreferenceLong("save as user input",1)
      If save_as_user_input < 0 Or save_as_user_input > 1
        SetGadgetState(#AskForName,1)
      Else
        If save_as_user_input
          SetGadgetState(#AskForName,1)
        Else
          SetGadgetState(#AskForName,0)
          SetGadgetState(#UseDate,1)
        EndIf
      EndIf
     
      If ReadPreferenceLong("supervise_ask",0)
        SetGadgetState(#AUTOAsk,1)
      EndIf
     
      If ReadPreferenceLong("supervise",0)
        SetGadgetState(#AUTO,1)
        CreateThread(@WatchForClipBoardImage(),0)
      EndIf
     
    EndIf
   
    ClosePreferences()
   
  EndProcedure
 
  If FileSize(own$+"TurboImageGrabber.ini") = -1
    CreateDef=1 : default_output$="~/"
  Else
    If OpenPreferences(own$+"TurboImageGrabber.ini")
      ini_key$ = ReadPreferenceString("key","")
      ini_key_chk = FindString(ini_key$,"a/3j@kn30N*b3<$k#ja!l3k9L",1)
      If ini_key_chk
        config_valid=1
      Else
        MessageRequester("    No","valid Turbo Image Grabber ini File found",#PB_MessageRequester_Ok)
        config_valid=0
      EndIf
    EndIf
  EndIf
 
 
 
  #window_kon1=#PB_Window_ScreenCentered|#PB_Window_SystemMenu
  #window_kon2=#PB_Window_Invisible|#PB_Window_ScreenCentered|#PB_Window_SystemMenu
   
  title$=" Turbo Image Grabber"
  ;bla1=255 anscheinend sind unter Linux Pixel anders, das fenster ist bei Selber Monitor Auflösung
  ;deutlich größer als unter Windows mit selber Auflösung
  bla1=350
  ;bla2=309
  bla2=350
 
  If config_valid = 0
    OpenWindow(#MainWin, 100, 150,bla1,bla2,title$,#window_kon1)
  Else
    open_in_tray = ReadPreferenceLong("tray start",0)
    If open_in_tray < 0 Or open_in_tray > 1
      OpenWindow(#MainWin, 100, 150,bla1,bla2,title$,#window_kon1)
    Else
      If open_in_tray = 0
        OpenWindow(#MainWin, 100, 150,bla1,bla2,title$,#window_kon1)
      ElseIf open_in_tray = 1
        OpenWindow(#MainWin, 100, 150,bla1,bla2,title$,#window_kon2)
      EndIf
    EndIf
  EndIf
 
  UseJPEGImageEncoder() : UsePNGImageEncoder() : UsePNGImageDecoder()

  AddSysTrayIcon(#TrayIcon,WindowID(#MainWin),LoadImage(#IMG,own$+"trayicon.png"))
 
  ;If InitSound()
   ; UseOGGSoundDecoder()
    ;If LoadSound(#Sound,own$+"krapkrap.ogg")
     ; sndwork=1
    ;EndIf
  ;EndIf
 
  ButtonGadget(#CloseB,240,10,100,30,"Close Turbo Image Grabber",#PB_Button_MultiLine)
  ButtonGadget(#MinimizeB,130,10,100,30,"Minimize Turbo Image Grabber",#PB_Button_MultiLine)
 
  OptionGadget(#PNG,10,10,80,20,"Save as png")
  OptionGadget(#BMP,10,30,85,20,"Save as bmp")
  OptionGadget(#JPG,10,50,80,20,"Save as jpg")
 
  TrackBarGadget(#TrackBar,5,81,245,10,0,10,#PB_TrackBar_Ticks)
  SetGadgetState(#TrackBar,7)
 
  CheckBoxGadget(#TrayOption,10,100,80,20,"Open in Tray")
 
  If open_in_tray = 1
    SetGadgetState(#TrayOption,1)
  EndIf
 
  CheckBoxGadget(#MessageB,10,120,115,20,"Message after Save")
  SetGadgetState(#MessageB,1)
 
  CheckBoxGadget(#OpenFolderAfterSave,10,140,170,20,"Open Target folder after Saving")
 
  CheckBoxGadget(#AskForName,10,160,110,20,"Ask for Save Name")
  SetGadgetState(#AskForName,1)
 
  CheckBoxGadget(#UseDate,10,180,165,20,"Use Date+Time as File Names")
  ButtonGadget(#SetDefFolder,10,206,235,20,"Set Standard Output Folder")
  StringGadget(#DefFolderText,10,235,235,20,default_output$,#PB_String_ReadOnly)
 
  CheckBoxGadget(#AUTO,10,260,215,20,"Auto Create Image  |  Supervise Clipboard")
  CheckBoxGadget(#AUTOAsk,10,280,225,20,"Ask before Auto Create @ Supervise Mode")
 
  If CreateDef
    SaveActiveSettings(0) : InitSettings()
  Else
    InitSettings()
  EndIf
 
  ExamineDesktops()
 
  Repeat
   
    WindowEvent = WaitWindowEvent()
   
    If WindowEvent = #PB_Event_SysTray
     
      If EventType() = #PB_EventType_LeftClick
        CreateScreenShot() : SaveActiveSettings(0)
      EndIf
     
      If EventType() = #PB_EventType_LeftDoubleClick
        HideWindow(#MainWin,0) : SetActiveWindow(#MainWin) : SaveActiveSettings(0)
      EndIf
     
      If EventType() = #PB_EventType_RightDoubleClick
        If MessageRequester("    Close Turbo Image Grabber","Are you sure ?",#PB_MessageRequester_YesNo) = #PB_MessageRequester_Yes
          SaveActiveSettings(1)
        EndIf
      EndIf
    EndIf
   
    If WindowEvent = #PB_Event_Gadget
     
      EventGadget = EventGadget()
     
      If EventGadget = #CloseB
        If MessageRequester("    Close Turbo Image Grabber","Are you sure ?",#PB_MessageRequester_YesNo) = #PB_MessageRequester_Yes
         SaveActiveSettings(1)
        EndIf
      EndIf
     
      If EventGadget = #MinimizeB
        CreateScreenShot() : HideWindow(#MainWin,1) : SaveActiveSettings(0)
      EndIf
     
      If EventGadget = #AskForName
        If GetGadgetState(#AskForName)
          SetGadgetState(#AskForName,1) : SetGadgetState(#UseDate,0)
        Else
          SetGadgetState(#AskForName,0) : SetGadgetState(#UseDate,1)
        EndIf
      EndIf
     
      If EventGadget = #UseDate
        If GetGadgetState(#UseDate)
          SetGadgetState(#UseDate,1) : SetGadgetState(#AskForName,0)
        Else
          SetGadgetState(#UseDate,0) : SetGadgetState(#AskForName,1)
        EndIf
      EndIf
     
      If EventGadget = #AUTO
        If GetGadgetState(#AUTO)
          stop_supervise=0
          CreateThread(@WatchForClipBoardImage(),0) : SetGadgetState(#AUTO,1)
        Else
          SetGadgetState(#AUTO,0) : stop_supervise=1
        EndIf
      EndIf
     
      If EventGadget = #SetDefFolder
        If FileSize(default_output$) <> -2
          default_output$="~/"
        EndIf
        default_output$=PathRequester("Choose Default Output Path",default_output$)
        If default_output$
          SetGadgetText(#DefFolderText,default_output$)
          SaveActiveSettings(0)
        EndIf
      EndIf
     
    EndIf
   
    If WindowEvent = #PB_Event_CloseWindow
      CreateScreenShot()
      HideWindow(#MainWin,1) : SaveActiveSettings(0)
    EndIf
   
    If screenshot = 1
      CreateScreenShot()
      screenshot = 0
    EndIf
   
  ForEver


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Tool friert ein, nach verlassen von Schleife in Thread
BeitragVerfasst: 27.06.2017 20:34 
Offline

Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge
ccode_new hat geschrieben:
;bla1=255 anscheinend sind unter Linux Pixel anders, das fenster ist bei Selber Monitor Auflösung
;deutlich größer als unter Windows mit selber Auflösung
bla1=350
;bla2=309
bla2=350


Das liegt an der eingestellten DPI.

DPI: dots per inch, eine Maßeinheit für die Auflösung im Druck und anderen Wiedergabesystemen


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Tool friert ein, nach verlassen von Schleife in Thread
BeitragVerfasst: 27.06.2017 21:02 
Offline

Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge
ccode_new hat geschrieben:
5) Was soll diese komische Meldung wenn mann das Tool beendet ?

Code:
[14:11:04] [WARNING] Gtk (MESSAGE): GtkDialog mapped without a transient parent. This is discouraged.
[14:11:12] Die Programmausführung ist abgeschlossen.


Bei Verwendung des "gtk-Toolkit" hast du bei einigen Funktionen (die einen auftauchenden Dialog öffnen) die Möglichkeit ein übergeordnetes Fenster anzugeben.
Dieser Flag(Bit) hift den Fenstermanger den Dialog und die Hauptfenster synchron zu halten und hält das Dialogfeld oben.
Es ist nur eine Warnung und kann ignoriert werden.

Hier wurde wohl "PB-Funktions-Intern" unter C/Asm kein Elterfenster angegeben.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Tool friert ein, nach verlassen von Schleife in Thread
BeitragVerfasst: 27.06.2017 21:31 
Offline
Benutzeravatar

Registriert: 11.06.2017 20:25
@matbal

Danke der Code geht soweit, musste nur noch schnell eine Kleinigkeit anpassen, sonst wurde die Variable supervise_run das von "Ask before Auto Create @ Supervise Mode" gesetzt wird nicht beim Programm Start (beim Auswerten der ini datei) gesetzt.

Ja stimmt ich hab FreeImage vergessen, ist halt die Macht der Gewohnheit unter Windoof :lol: da das alte Image sowieso überschrieben wird, dachte ich mir dabei nichts.

Und irgendwie ergibt das auch Sinn, wenn es irgendwie nicht überschrieben wird unter Linux und der Verbrauch steigt.

Was ich aber nicht verstehe, ich hab schon direkt nach dem Start vom Tool 23,7MB unter der RSS (keine Ahnung was das ist) Spalte und 57MB unter der Speicher Spalte.

Hab den LXTask Taskmanager.

@ccode_new

Ja das werde ich schon tun keine Frage :) Ich wollte nur verstehen wo das Problem mit dem Thread ist.
Ich hab so viel Tools die mit Threads arbeiten, daß es für mich kein Coden unter Linux geben kann, wenn ein Delay in einem Thread so viel Ärger verursacht, aber wie mir Dank eurer Hilfe klar wurde, ist es einfach nur die GetClipboardImage() Funktion von Linux Ärger macht in Threads.

Das mit den DPI ergibt Sinn, jedoch wollte ich sie auf Default Xfxe Settings belassen, da ich nicht Wissen kann welche DPI andere verwenden, und nicht auch noch einen Auto Resize Code für das Layout & die Schriften rein klatschen will (hab sowas auch noch nie gemacht :lol: fixed resolution oder minimiert reichte bisher immer)

Übrigens gibt es eine Möglichkeit einfach einen Default Font für alle Gadgets im Tool zu setzen ?

EDIT:

Screeny mit Ram Verbrauch

Bild

Direkt nach dem Programm Start, erst hab ich es unter VirtualBox getestet, dann auf einem der Lappis (Screenshot ist vom Lappi) kein Unterschied beim Ram Verbrauch.

FreeImage wurde benuzt, und die GetClipboardImage() Funktion läuft nicht in einem Thread.

_________________
https://www.geek.com/tech/a-commodore-6 ... s-1672510/
٩(̾●̮̮̃̾•̃̾)۶ __̴ı̴̴̡̡̡ ̡͌l̡̡̡ ̡͌l̡*̡̡ ̴̡ı̴̴̡ ̡̡͡|̲̲̲͡͡͡ ̲▫̲͡ ̲̲̲͡͡π̲̲͡͡ ̲̲͡▫̲̲͡͡ ̲|̡̡̡ ̡ ̴̡ı̴̡̡ ̡͌l̡̡̡̡.___٩(- ̮̮̃-̃)۶


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Tool friert ein, nach verlassen von Schleife in Thread
BeitragVerfasst: 27.06.2017 22:05 
Offline

Registriert: 30.03.2011 20:53
GlassJoe hat geschrieben:
@matbalJa stimmt ich hab FreeImage vergessen, ist halt die Macht der Gewohnheit unter Windoof :lol: da das alte Image sowieso überschrieben wird, dachte ich mir dabei nichts.

Nur mit Konstanten werden die Objekte wiederbenutzt. Mit #Pb_Any wird jedes Mal ein neues Objekt mit neuer Nummer erstellt.

GlassJoe hat geschrieben:
Was ich aber nicht verstehe, ich hab schon direkt nach dem Start vom Tool 23,7MB unter der RSS (keine Ahnung was das ist) Spalte und 57MB unter der Speicher Spalte.

Mit oder ohne Debugger?
Im KDE-Systemmonitor wird zwischen "Speicher" und "Gemeinsamer Speicher" unterschieden.

EDIT: Ich habe gerade dein Edit gesehen. Von der IDE mit Debugger war der Speicher bei mir ähnlich hoch. Das fertige Kompilat enthält die Debuginformationen nicht mehr, damit sinkt dann auch der Speicherverbrauch.

GlassJoe hat geschrieben:
Übrigens gibt es eine Möglichkeit einfach einen Default Font für alle Gadgets im Tool zu setzen ?

Ja,
Code:
SetGadgetFont(#Pb_Default, FontID)
aufrufen, bevor die Gadgets erstellt werden.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Tool friert ein, nach verlassen von Schleife in Thread
BeitragVerfasst: 27.06.2017 22:27 
Offline
Benutzeravatar

Registriert: 11.06.2017 20:25
matbal hat geschrieben:
GlassJoe hat geschrieben:
@matbalJa stimmt ich hab FreeImage vergessen, ist halt die Macht der Gewohnheit unter Windoof :lol: da das alte Image sowieso überschrieben wird, dachte ich mir dabei nichts.

Nur mit Konstanten werden die Objekte wiederbenutzt. Mit #Pb_Any wird jedes Mal ein neues Objekt mit neuer Nummer erstellt.

GlassJoe hat geschrieben:
Was ich aber nicht verstehe, ich hab schon direkt nach dem Start vom Tool 23,7MB unter der RSS (keine Ahnung was das ist) Spalte und 57MB unter der Speicher Spalte.

Mit oder ohne Debugger?
Im KDE-Systemmonitor wird zwischen "Speicher" und "Gemeinsamer Speicher" unterschieden.

EDIT: Ich habe gerade dein Edit gesehen. Von der IDE mit Debugger war der Speicher bei mir ähnlich hoch. Das fertige Kompilat enthält die Debuginformationen nicht mehr, damit sinkt dann auch der Speicherverbrauch.

GlassJoe hat geschrieben:
Übrigens gibt es eine Möglichkeit einfach einen Default Font für alle Gadgets im Tool zu setzen ?

Ja,
Code:
SetGadgetFont(#Pb_Default, FontID)
aufrufen, bevor die Gadgets erstellt werden.


Zu 1)
Ach soooooooo :oops: ich hab das nicht gewusst :o Ich dachte weil ich #PB_Any benutze aber immer den die Variable "Pic" benutze wird die automatisch überschrieben, und das alte freigegeben.

Liege ich mit der Vermutung richtig das die Variable "Pic" schon überschrieben wird, aber es danach noch altes ungenutzes Image Handle gibt ? :shock:

Zu 2)
Macht keine Unterschied bei mir. Auf dem Screeny hatte ich die executable laufen.
Egal auf welchem Lappy (hab es jetzt erst mal auf 2 gestestet) es ist leider immer das selbe Spiel.
23 & 57MB

Speicher und gemeinsamer Speicher ? :freak: so eine Art Swap Speicher wie bei Windoof ?

Zu 3)
Danke :praise: ich hab gewusst das ich das mal irgendwo gesehen hatte, habs aber einfach nicht mehr finden können.

_________________
https://www.geek.com/tech/a-commodore-6 ... s-1672510/
٩(̾●̮̮̃̾•̃̾)۶ __̴ı̴̴̡̡̡ ̡͌l̡̡̡ ̡͌l̡*̡̡ ̴̡ı̴̴̡ ̡̡͡|̲̲̲͡͡͡ ̲▫̲͡ ̲̲̲͡͡π̲̲͡͡ ̲̲͡▫̲̲͡͡ ̲|̡̡̡ ̡ ̴̡ı̴̡̡ ̡͌l̡̡̡̡.___٩(- ̮̮̃-̃)۶


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Tool friert ein, nach verlassen von Schleife in Thread
BeitragVerfasst: 27.06.2017 22:31 
Offline
Benutzeravatar

Registriert: 24.11.2004 13:12
Wohnort: Germany
Habe mein Modul ThreadToGUI mit Clipboard Funktionen erweitert.

Link: viewtopic.php?f=8&t=29728

Auch mal das Beispiel mit SendEvent anschauen um aus einen Thread eine MessageRequester anzufordern.

Teste gerade mal ein Dein Programm. Gute Idee :wink:

_________________
Alles ist möglich, fragt sich nur wie...
Projekte EventDesigner v1.x / OOP-BaseClass-Modul / OPC-Helper DLL
PB v3.30 / v5.4x - OS Mac Mini OSX 10.xx / Window 10 Pro. (X64) /Window 7 Pro. (X64) / Window XP Pro. (X86) / Ubuntu 14.04
Downloads auf Webspace


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Tool friert ein, nach verlassen von Schleife in Thread
BeitragVerfasst: 27.06.2017 22:41 
Offline
Benutzeravatar

Registriert: 11.06.2017 20:25
mk-soft hat geschrieben:
Habe mein Modul ThreadToGUI mit Clipboard Funktionen erweitert.

Link: http://www.purebasic.fr/german/viewtopi ... =8&t=29728

Auch mal das Beispiel mit SendEvent anschauen um aus einen Thread eine MessageRequester anzufordern.



Modul ? :freak: Ich weiss gerade noch was eine dll ist :mrgreen:

Ich schmeiss mal den Code in den Editor und schau es mir an, aber ich glaube da bin ich weit überfordert mit dem verstehen :bounce: zwischen euch und meinem Verständniss liegen zum Teil Welten

Zitat:
Teste gerade mal ein Dein Programm. Gute Idee :wink:


Thx :)

Leider muss ich es unter Linux etwas anders arbeiten lassen, weil unter Windoof reicht ja wenn mann einfach nur die Druck Taste drückt damit ein Screeny im Clipboard ist.

Unter Linux müsste ich warscheinlich dem auslösen der Druck Taste ein kleinst CLI Tool zuweisen das erst ein Image in das Clipboard wirft, damit es die Gui mitkriegt, oder die GUI Aufrufen mit einem Parameter der ein Image erstellt.

_________________
https://www.geek.com/tech/a-commodore-6 ... s-1672510/
٩(̾●̮̮̃̾•̃̾)۶ __̴ı̴̴̡̡̡ ̡͌l̡̡̡ ̡͌l̡*̡̡ ̴̡ı̴̴̡ ̡̡͡|̲̲̲͡͡͡ ̲▫̲͡ ̲̲̲͡͡π̲̲͡͡ ̲̲͡▫̲̲͡͡ ̲|̡̡̡ ̡ ̴̡ı̴̡̡ ̡͌l̡̡̡̡.___٩(- ̮̮̃-̃)۶


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 21 Beiträge ]  Gehe zu Seite 1, 2, 3  Nächste

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  
cron

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye