Seite 2 von 3

Re: [Win7] Taskbar-Schaltfläche animieren

Verfasst: 07.11.2009 18:33
von DarkDragon
Kai hat geschrieben:Stürzt bei mir leider sofort mit der Meldung 'Das mit dem Debugger getestete Executable endete unerwartet.' ab.

Windows 7 Ultimate x86
Steht da irgendwo eine Zeile drin? Oder kannst du das durchsteppen (Vllt durch einfügen eines breakpoints bzw CallDebugger oben am source)?

[EDIT]
Ich habs. Hab den Code angepasst.

Re: [Win7] Taskbar-Schaltfläche animieren

Verfasst: 07.11.2009 18:45
von RSBasic
Hallo DarkDragon,


wow, cool, vielen Dank für dein Code :allright:
Funktioniert hier einwandfrei.
Danke nochmal :D

Re: [Win7] Taskbar-Schaltfläche animieren

Verfasst: 07.11.2009 19:04
von Kai
Nun läuft es 1A :allright:

Re: [Win7] Taskbar-Schaltfläche animieren

Verfasst: 08.11.2009 21:18
von Deluxe0321
Läuft hier ohne mukken, danke dafür xD
Mal sehn ob ich jetzt dank dir die anderen Funktionen hinbekomme.

Edit: Ich peil nicht ganz wie ich Buttons hinzufügen kann (wie in Itunes/WMP). Die Buttons werden zwar erstellt, aber es wird kein Icon hinzugefügt, bzw. angezeigt. Und der Tooltip ist ein Haufen chinesicher Text.

Grüße Marv

Re: [Win7] Taskbar-Schaltfläche animieren

Verfasst: 14.11.2009 23:32
von marco2007
@DD: ..hab`s zwar noch nicht probiert, aber wenn`s funktioniert: Respekt :allright:
-> Codearchiv!

Re: [Win7] Taskbar-Schaltfläche animieren

Verfasst: 17.11.2009 21:42
von KatSeiko
Fehlt nur noch, dass ein paar einfache Befehle aufgenommen werden... SetSuperbarProgress(WindowID(), Progress, ProgressType) und sowas...

Re: [Win7] Taskbar-Schaltfläche animieren

Verfasst: 06.03.2012 15:28
von ts-soft
KatSeiko hat geschrieben:Fehlt nur noch, dass ein paar einfache Befehle aufgenommen werden... SetSuperbarProgress(WindowID(), Progress, ProgressType) und sowas...
Jahre später ... :lol:

Hier mal meine Implementation, hab die Progress-Werte auf 0 - 100 festgesetzt.

Code: Alles auswählen

EnableExplicit

#TBPF_NOPROGRESS    = $0
#TBPF_INDETERMINATE = $1
#TBPF_NORMAL        = $2
#TBPF_ERROR         = $4
#TBPF_PAUSED        = $8

Interface ITaskbarList3 Extends ITaskbarList2
  SetProgressValue.i(hWnd.i, ullCompleted.q, ullTotal.q)
  SetProgressState.i(hWnd.i, tbpFlags.l)
  RegisterTab.i(hWndTab.i, hWndMDI.i)
  UnregisterTab.i(hWndTab.i)
  SetTabOrder.i(hWndTab.i, hWndInsertBefore.i)
  SetTabActive.i(hWndTab.i, hWndMDI.i, tbatFlags.l)
  ThumbBarAddButtons.i(hWnd.i, cButtons.l, *pButton)
  ThumbBarUpdateButtons.i(hWnd.i, cButtons.l, *pButton)
  ThumbBarSetImageList.i(hWnd.i, himl.i)
  SetOverlayIcon.i(hWnd.i, hIcon.i, pszDescription.s)
  SetThumbnailTooltip.i(hWnd.i, pszTip.s)
  SetThumbnailClip.i(hWnd.i, *prcClip)
EndInterface

DataSection
  CLSID_TaskBarList:
  Data.l $56FDF344
  Data.w $FD6D, $11D0
  Data.b $95, $8A, $00, $60, $97, $C9, $A0, $90
  IID_ITaskBarList3:
  Data.l $ea1afb91
  Data.w $9e28,$4b86
  Data.b $90,$E9,$9e,$9f,$8a,$5e,$ef,$af
EndDataSection

Procedure TaskBarProgress(hWnd, flag = #TBPF_NORMAL)
  Protected ptl.ITaskbarList3
  
  If OSVersion() >= #PB_OS_Windows_7
    CoCreateInstance_(?CLSID_TaskBarList, 0, 1, ?IID_ITaskBarList3, @ptl)
    
    If ptl
      ptl\HrInit()
      ptl\SetProgressValue(hWnd, 0, 100)
      ptl\SetProgressState(hWnd, flag)
    EndIf
  EndIf
  ProcedureReturn ptl
EndProcedure

Procedure TBP_SetState(hWnd, ptl.ITaskbarList3, state)
  If ptl
    Select state
      Case #TBPF_NOPROGRESS, #TBPF_INDETERMINATE, #TBPF_NORMAL, #TBPF_ERROR, #TBPF_PAUSED
        ptl\SetProgressState(hWnd, state)
    EndSelect
  EndIf
EndProcedure

Procedure TBP_SetValue(hWnd, ptl.ITaskbarList3, value)
  If ptl
    If value <   0 : value =   0 : EndIf
    If value > 100 : value = 100 : EndIf
    ptl\SetProgressValue(hWnd, value, 100)
  EndIf
EndProcedure

Procedure TBP_Release(ptl.ITaskbarList3)
  If ptl
    ptl\Release()
    ptl = 0
  EndIf
EndProcedure

; example
Define TBP, progress, pause = 1
Define hIcon = ExtractIcon_(GetModuleHandle_(0), #PB_Compiler_Home + "PureBasic.exe", 0)

OpenWindow(0, #PB_Ignore, #PB_Ignore, 265, 30, "Example", #PB_Window_SystemMenu)
SendMessage_(WindowID(0), #WM_SETICON, 0, hIcon)
ButtonGadget(0, 5, 5, 80, 20, "start")
ButtonGadget(1, 90, 5, 80, 20, "stop")
ButtonGadget(2, 175, 5, 80, 20, "pause")

TBP = TaskBarProgress(WindowID(0), #TBPF_NOPROGRESS)

Repeat
  Select WaitWindowEvent()
    Case #PB_Event_CloseWindow
      TBP_Release(TBP)
      DestroyIcon_(hIcon)
      Break
    Case #PB_Event_Gadget
      Select EventGadget()
        Case 0 ; start
          AddWindowTimer(0, 1, 100)
        Case 1 ; stop
          RemoveWindowTimer(0, 1)
          TBP_SetState(WindowID(0), TBP, #TBPF_NOPROGRESS)
          progress = 0
        Case 2 ; pause
          pause ! 1
          If pause
            AddWindowTimer(0, 1, 100)
            TBP_SetState(WindowID(0), TBP, #TBPF_NORMAL)
            SetGadgetText(2, "pause")
          Else
            RemoveWindowTimer(0, 1)
            TBP_SetState(WindowID(0), TBP, #TBPF_PAUSED)
            SetGadgetText(2, "weiter")
          EndIf
      EndSelect
    Case #PB_Event_Timer
      progress + 1
      If progress > 100 : progress = 0 : EndIf
      TBP_SetState(WindowID(0), TBP, #TBPF_NORMAL)
      TBP_SetValue(WindowID(0), TBP, progress)
  EndSelect
ForEver

Re: [Win7] Taskbar-Schaltfläche animieren

Verfasst: 06.03.2012 16:57
von Derren
Witzig.
Wurde vor 2 Tagen im englischen Forum gepostet:
http://purebasic.fr/english/viewtopic.p ... it=taskbar

Re: [Win7] Taskbar-Schaltfläche animieren

Verfasst: 06.03.2012 17:09
von ts-soft
Ähnlichkeit beschränkt sich aber nur auf die verwendete API.
Hier ging es um einfache wiederverwendbare Proceduren, nicht um das Beispiel.

Re: [Win7] Taskbar-Schaltfläche animieren

Verfasst: 18.06.2012 16:04
von KatSeiko
Genial, danke! :allright: