Seite 2 von 2

Re: MakroRekorder via Maus- & KeybHook: MausRad ? [gelöst]

Verfasst: 18.07.2024 17:08
von HeX0R
Die Includes kannst Du nicht finden, die hat sibru exklusiv, keine Ahnung wo die herkommen.
Ist aber lustig, weil das sagt uns auch, dass noch nie jemand den Code benutzt hat, außer sibru natürlich :mrgreen:

[Edit]
Aber wir sind ja auch nicht in Code Tipps&Tricks, stelle ich eben fest, dann ist es ja auch o.k.

Re: MakroRekorder via Maus- & KeybHook: MausRad ? [gelöst]

Verfasst: 18.07.2024 17:52
von Axolotl
Der Code läuft auch aufgrund von weiteren Fehlern nicht.
Nun ja, hier mal die Funktion, um die Images zu bekommen. Den Rest möge der Frager bitte selbst herausfinden....

Code: Alles auswählen

; Brief Example without warranty.  
Procedure Base64Str2Image(Icon$) 
  Protected ret, *buf, bufSize, bytes   

  bufSize = Len(Icon$) 
  *buf = AllocateMemory(bufSize) 
  bytes = Base64Decoder(Icon$, *buf, bufSize) 
  
  ret = CatchImage(#PB_Any, *buf, bytes)  ; return Image 
  FreeMemory(*buf) 

  ProcedureReturn ret 
EndProcedure 



Icon$="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"
IconStd = Base64Str2Image(Icon$) ;SysTray-Icon Standart  (Base64Str2Image() ist toller Ersatz für CatchImage(#PB_Any, ?Label))
Icon$="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"
IconRec = Base64Str2Image(Icon$) ;SysTray-Icon Aufnahme
Icon$="AAABAAEAICAAAAEAGACoDAAAFgAAACgAAAAgAAAAQAAAAAEAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACCfXxva2pwbm5vbW1ta2tta2tta2tvbW1ubGxubGxta2twbm5vbW1vbW1vbW1vbW1vbW1vbW1vbW1vbW1vbW1vbW1vbWxsamlta2pxb25ta2tta2t7eXmxsLDf2djg29p1c3Jta2tta2t5d3d4dnZzcXF3dXV3dXVycHBzcXFta2tsampsampsampta2tubGxraWlta2tsampsampsampsamtraWh1c3NzcXB0cnJ1c3N0cnJubGyHhYXg29nh3Nt0cXFxcG+BfH2PiYrCwMC/vb25t7e6uLi8u7q+vLy+vLy9u7u6uLi7ubm8urq9u7y/vr7Bv7/CwMDCwMDCwMDDwcHAvr7Bv7/Bv8C/vb7Bv7/Bv7/BwMC6ubnSzcvd2NdvbW10cXGEe3yOh4e5tLXQzM3b1tff29vl4OHx7O3f29rKxsbHxMPGwsLFwcHEwcDDwL/Cvr7Cv77AvbzJxcTPy8rY1NPU0M/EwMDHw8PFwsHEwcDBvr3Hw8Pw6+ro4+Jta2tycHCBeHmnoKH69PX07u/79PZ6dnckIyMpKCg+PDz69fPf2tne2NfY09LW0c/Uz83Qy8nIw8LQy8p3c3MbGhogHx8kIyO7tbayq6ywqKiwp6etpKStpaXo4+Lv6ul0cXFwbm1/dni4sbL48/Tw6uv07u/Ev8AAAAAAAAAAAADFwL/j3t3d1tfgz9rgy9rcx9bXwtHUw87h2tsAAAAAAAAAAAAAAADJwsOzrq+0rKyyqqqvp6eon6Dg29rr5uV7eHZtbGt8dXa9uLn58/Tw6evu6On///8MDAwAAAAAAABVU1P+5/bq0eSI4oRm52No5WVi41+H4YOjmJkAAAAAAAAAAABaV1fDvL2zra+0rKuyqqqvp6eooKDl4N/s5+Z8eHdta2p8dXa7tbb48/Tu6uvu6On38fKGgoIAAAAAAAAAAABy/3sA/wAA/wAA/wAA/wAA/wAA/wAAtDIAAAAAAAAAAAC7tba5s7S0ra+0rKuyqqqvp6eooKDk4eDt6Od8eHdtammBeHm7tbb48/Ts6+vu6Ons5uf48vIAAAAAAAAAAAAAdBwA2QAAzwAAzwAAzwAAzwAA3wAANCcAAAAAAAA2KDHNxsm2sbK2ra+0rKuyqqqwp6enoKDj4uHu6ul8eHdtbGqAeHm6tLX48/Ts6+vu6Onq5OX+9/hSQ0kAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfzXOu8S4sLO2ra+0rKuyqqqwp6enn6Dm5OPw6+p9eXhubWuCenu7tbb48vTs6+vu6Onq5OX/6/ovnnYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgA/xgY+RTNp8i2ra+0rKuyqqqwp6enn5/o5uXx7ex9eHhubGyDe329t7j48vPu6uvu6Ony4+zC6L8A/wAAADIAAAAAAAAADgwANwAALwAALwAAPwAAAA8AAAAAAAAAQjMA/wAA/wCavZS8qrSzrKuyqqqwp6enn5/o5uXz7+59d3lubWyCfH2+uLn48vPw6evu6On+4vk7+DkA/wAAajgAAAAAAAAAACQA/w0A/wAA/wAA6zIAAAEAAAAAAAAAvTwA/wAA/wAv6yzIpb6zrKuyqqqwp6enn5/o5+X28fB8d3hubGyEfX6+uLn48vPw6uvu6On/4P8A/wAA/wAA/xcAAAkAAAAAAAAAqTkA/wAA/wAAVjgAAAAAAAAAADEA/wAA/wAA/wAA/wDVoMqzrKuyqqqwp6emn5/q5+b38vF8dndubGyFfn++uLn48vPw6uv15/C467QA/wAA/wAA/wAALCsAAAAAAAAALDUA/wAA/w0AACAAAAAAAAAAfy0A/wAA/wAA/wAA/wCQv4i5qbGyqqqwp6emn5/p5+b28vF7d3dubGuGgIG+uLn48vPw6uv15/DB6bwA/wAA/wAA/wAAqTgAAAAAAAAAABIA/xgArTUAAAAAAAAAABUA/h0A/wAA/wAA/wAA/wCWvY65qbGyqqqwp6emn5/q6Oj38vJ5d3ZubGuHgYK9t7j48vPw6uv35/Kp7KUA/wAA/wAA/wAA/w0AACQAAAAAAAAAlyoAPCkAAAAAAAAARCUA/wAA/wAA/wAA/wAA/wCWvY65qbGyqqqwp6emn5/r6Or48vN5d3ZtbGuIgYO+uLn48vPw6uv15/C76rcA/wAA/wAA/wAA/wAAVEAAAAAAAAAAICEAABAAAAAAAAAApUgA/wAA/wAA/wAA/wAA/wCRv4q5qbGyqqqwp6emn5/r6On48vN5d3ZtbGuIgoO/ubr48vPw6uvv5+r54/QA/wAA/wAA/wAA/wAA6icAAAIAAAAAAAAAAAAAAAAAADoA/wAA/wAA/wAA/wAA/wAA/wDFqbu1q62yqqqwp6emn5/r6On48vN7d3ZwbGuJg4S+uLn48vPv6+zt8/T/8P8R/xwA/wAA/wAA/wAA/wAAFDsAAAAAAAAAAAAAAAAAaj0A/wAA/wAA/wAA/wAA/wAJ/xzEudeturqwrKywp6emn5/q6er39PR9d3ZxbGuJg4W9t7j4+vvv+Pn0i4z/W2ikiTQA/wAA/wAA/wAA/wAAqycAAAAAAAAAAAAAABAA/xgA/wAA/wAA/wAA/wAA/wC0OgD/AADyHBywrKytra2mn5/p6+r39vZ8d3ZxbGqKhIW+wMH54+T/AAD8FRX1amv/THQA/wUA/wAA/wAA/wAA/w4AABoAAAAAAAAAIDwA/wAA/wAA/wAA/wAA/wAA/wDOtNqozM3dTk7/AACvqqqloaHp6ur29fV8d3ZxbGqKhoe/xsf/AAD0mZrq///o8vPr7/bb4dYA/wAA/wAA/wAA/wAA/wAA/wAA/wAA/wAA/wAA/wAA/wAA/wAA/wCwuKu7sLW2ra2qwcHcTEzyGxugra3q6+v19PR8d3ZwbGqKjo/FcXL/MDDu///t5+jp4+To4uP23fCa6JYA/wAA/wAA/wAA/wAA/wAA/wAA/wAA/wAA/wAA/wAA/wB+zXzGr8G4sbG3ra6zrKujyMj/AACdsrLp6ur29fV8d3ZwbGqKlJXQNzj+cnLv+Prs5ufp4+Tn4eLm3+Hw6vvpPCwO6gAA/wAA/wAA/wAA/wAA/wAA/wAA/wAV2QC7qZjGs8a5tLW6r7K4rK+zrKumwcH/AACdtLTp6ur39fV9eHdwa2qKk5XQODn9eHfv+Pnu6Onr5ebp4+Tn4eLi9/f/Fxv/mr6f56NF8UMl9iQT+hIk9SNB7D+N4p3/BiraeHy3v8G5tLW6r7K4rK+yrq6wrKz/AACdsrLp6ur39fV+eXhwa2qLjpDHdnf/AADt///u6erq5OXp4+Tm5+nj6Of/AADc5uXj1t/oz+LnyuHmxt/gwtnbwdTMxs/Tion/AACyzc22vr+4tbe2srSmysrzGhriPT2hqqrp6ur39fVzcHBvbGuLhYa/2tz/Fxb7Ojvs///o/P3m+/zm5+n/AADufX3Y/PvX6ujU5uXQ4uHL5eTF4N7E392/2tm07OvlS0v/AADPf4DDkZHDkZL6Cwr/AACptLSooqLq6ur29fWLiIdoZmWLhYbFwcL0///8Jyf/AAD8Hh78Ghr/AAD/AAD5KSn7FBT7FBP7ExP5Ghr/AAD/AAD/AAD/AAD/AAD/AAD/AAD/AAD/AADyHh/XWlqkw8OvqampoqHn6Ojw7+/g29qZlpWBe3yspqf69vfq/v/u4uPyg4TttLXrtLXos7Tnqqvkp6jhpKbfo6LcnJzQw8PG5OPC3Nu+2de71tS20NCxy8yux8ixxMavubuus7OvpqeupaWqo6P39/fz8vLo4+Lv6um9t7l2cHG+uLnz7e7w8fLu9/jq7/Dq7+/m6+zf5OXc4eLZ3t7a3dzW2djT0tHSzczNyMfMx8bHwsHDvr3Au7vGwMC7tLTDu7u8t7a5tLSwq6rc2Nj6+/vx8fHl4N/m4eDr5+Xr5eXTzs7Y0tLk4ODk4eDj39/r5+fj39/i3d3i397i3t7k397i3dzm4eDk397k397j3t3m4eDk397k397n4+Hl4d/k4N/k4N/j397l4N/s5+br5+fl4eEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="
IconPlay = Base64Str2Image(Icon$);SysTray-Icon Abspielen



If OpenWindow(0, 0, 0, 480, 148, "ImageGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  If IconStd  ; CatchImage(0, ?Geebee) 
    ImageGadget(0, 10, 10, 0, 0, ImageID(IconStd)) 
  EndIf
  If IconRec  
    ImageGadget(1, 110, 10, 0, 0, ImageID(IconRec)) 
  EndIf
  If IconPlay  
    ImageGadget(2, 210, 10, 0, 0, ImageID(IconPlay)) 
  EndIf
  Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf


Re: MakroRekorder via Maus- & KeybHook: MausRad ? [gelöst]

Verfasst: 18.07.2024 19:46
von ChrigiGee
HeX0R hat geschrieben: 18.07.2024 17:08 Die Includes kannst Du nicht finden, die hat sibru exklusiv, keine Ahnung wo die herkommen.
Ist aber lustig, weil das sagt uns auch, dass noch nie jemand den Code benutzt hat, außer sibru natürlich :mrgreen:

[Edit]
Aber wir sind ja auch nicht in Code Tipps&Tricks, stelle ich eben fest, dann ist es ja auch o.k.
Das ist wonach ich gesucht hatte, mein Verständnis sagte, das ist doch unmöglich,
dass ich dieses unbeachtet lassen habe und ich einfach nur zu dumm, bin es zu erkennen.

OK, dann fehlte die Datei wirklich.

Vielen Dank für Deine Aufklärungs-Arbeit.

Liebe Grüsse
Chris

Re: MakroRekorder via Maus- & KeybHook: MausRad ? [gelöst]

Verfasst: 18.07.2024 19:54
von ChrigiGee
Axolotl hat geschrieben: 18.07.2024 17:52 Der Code läuft auch aufgrund von weiteren Fehlern nicht.
Nun ja, hier mal die Funktion, um die Images zu bekommen. Den Rest möge der Frager bitte selbst herausfinden....

Code: Alles auswählen

; Brief Example without warranty.  
Procedure Base64Str2Image(Icon$) 
  Protected ret, *buf, bufSize, bytes   

  bufSize = Len(Icon$) 
  *buf = AllocateMemory(bufSize) 
  bytes = Base64Decoder(Icon$, *buf, bufSize) 
  
  ret = CatchImage(#PB_Any, *buf, bytes)  ; return Image 
  FreeMemory(*buf) 

  ProcedureReturn ret 
EndProcedure 



Icon$="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"
IconStd = Base64Str2Image(Icon$) ;SysTray-Icon Standart  (Base64Str2Image() ist toller Ersatz für CatchImage(#PB_Any, ?Label))
Icon$="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"
IconRec = Base64Str2Image(Icon$) ;SysTray-Icon Aufnahme
Icon$="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"
IconPlay = Base64Str2Image(Icon$);SysTray-Icon Abspielen



If OpenWindow(0, 0, 0, 480, 148, "ImageGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  If IconStd  ; CatchImage(0, ?Geebee) 
    ImageGadget(0, 10, 10, 0, 0, ImageID(IconStd)) 
  EndIf
  If IconRec  
    ImageGadget(1, 110, 10, 0, 0, ImageID(IconRec)) 
  EndIf
  If IconPlay  
    ImageGadget(2, 210, 10, 0, 0, ImageID(IconPlay)) 
  EndIf
  Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf

Lieber Axolotl,

Du hast mir mit deinem Code Teil gerade extrem viel abgenommen und ich kann mich etwas dem ganzen widmen.
Speziell bemerkte ich , dass der gesammte Code recht fricky zu sein scheint.

Als Abschliessend gelösst hätte ich es nocht nicht angeschaut.

Bei mir zeigt sich der Effekt, nach jedem durchlauf gibt es ein paar Try-Icon mehr und nur über beenden der gesammten Anwendung
wrden diese gelöscht.

Ein effektifes Speichern des Makros muss ich mal suchen wo das abgelegt wird, schlau werde ich jedoch noch nicht ganz.

Hätte man mehrere Makros, könnte man diese nicht öffnen wie eine Datei bei einer Stanbdard Anwendung.
Makro stoppen und so benötigt jedoch auch geziehlt eine Maus bewegung, per Taste zu Stoppen scheint nicht geplant zu sein.

Aber ich bekomme einen gewissen einblick in das ganze.

Herzlichen Dank nochmals und liebe GRüsse

Chris

Re: MakroRekorder via Maus- & KeybHook: MausRad ? [gelöst]

Verfasst: 28.07.2024 15:03
von ChrigiGee
Lieber Axolotl,
Hallo @all,

Ich weiss nicht genau, warum es bei einem ersten Versuch klappte, mit dem gesamten Source.
Jedoch jetzt bekomme ich wieder eine Error Meldung, welche mir nicht so ganz Sinn ergibt.

Code: Alles auswählen

[14:18:26] [COMPILER] Zeile 85: Zahlen zwischen '' sind begrenzt auf 8 Ziffern.
Besagte Zeile 85:

Code: Alles auswählen

      If Typ = ' - ' :Typ = #KEYEVENTF_KEYUP ;simuliere #WM_KEYUP
Ich vermute, dass es sich jedoch auf den Bereich ab Zeile 53 bezieht.

Code: Alles auswählen

Procedure StrWert(*String)          ;- liefert nummerischen Wert am Anfang vom String und verkürzt Lezteren entsprechend
  Protected String$, Wert$
  If *String>1
    String$ = LTrim(PeekS(*String))
    While FindString("0123456789", Left(String$, 1), 1)
      Wert$ + Left(String$, 1)
      String$ = Mid(String$, 2)
    Wend
    PokeS(*String, LTrim(Right(String$, Len(String$) - 1)))
  EndIf
  ProcedureReturn Val(Wert$)
EndProcedure
Oder mache ich hier einen Gedankenfehler?

@HeXOR, Ich habe mir auch gerade Gedanken gemacht, ob ich das alte Thema nicht doch NEU eröffne im "Tipps&Tricks"
da jedoch das ganze noch so schwammig ist, und ich denke, dass es doch noch nicht so weit wäre, dass man es dort platzieren dürfte
sondern höchstens als nervig erachtet wird, belasse ich es vorläufig noch.

@all Wenn jedoch jemand denkt dass es besser wäre ein neues Thema unter neuem Namen zu Starten, ist es auch OK.

Und ja, wenn ich etwas besser mit dem alten Source zurechtkomme, und ich eine erste vertretbare Version erstellt habe, um ein
Eigenständiges Thema zu eröffnen, werde ich das gerne auch machen.

Liebe Sommerliche Sonntags Grüsse
Christian

Code: Alles auswählen

 
 #Prg_Name = "MakroRekorder"   
#PB_Vers  = "4.20"            
#Prg_Vers = "18608a"          ;<-- set by PB_VersUpd Vers 11415a

;Dieses Prg dient dem Aufzeichnen von Tastatur- und Maus-Aktionen sowie dem
;"abspielen" derselben.
;Nach Aufzeichnungs-Start via SysTray-Menue werden alle Tastendrücke und dessen loslassen
;(=Aktionen) in einer Queue gesammelt, bei MausTasten incl. Position.
;Aufnahme-Ende ist erneutes Anklicken des SysTray-Menü´s
;Beim Abspielen werden die gespeicherten Aktionen (TastenDrücke) emuliert.

#Registry_NoUse = 1 ;Registry nicht benutzten, anstelle PreferenzFile (.INI) benutzen

EnableExplicit
Structure Keyboard_HookStrk
  vkCode.l
  scanCode.l
  flags.l
  time.l
  dwExtraInfo.l
EndStructure

Structure MSLLHOOKSTRUCT
  StructureUnion
  pt.POINT
  ptVal.q
  EndStructureUnion
  mouseData.l
  flags.l
  time.l
  *dwExtraInfo
EndStructure

Global Makro$, MakroCnt  ;aufgezeichnete Aktionen: Aktions-Queue und Anzahl
Global last_mSec         ;wg. ZeitMessung zwischen den Aktionen
Global OrgProg_Maus      ;Adresse der Orginal-MausProcedure
Global OrgProg_Keyb      ;Adresse der Orginal-TastaturProcedure
Global SysTrayNr         ;Fenster-#Nr des (gehideten) SysTray-Fensters
Global RefStd$, IconStd  ;ToolTip-Text und IconNr für´s SysTray (Standart: weder Aufzeichnung noch abspielen)
Global MakroExit         ;Flag: #true, wenn MausZeiger während Aufnahme auf´s SysTray-Icon bewegt wird
Global NewList Makros$() ;Liste aller definierten Makro´s
Global Makros$           ;Namen aller Makros in Makros$() (für´s Auswahl-Menü: "welches Macro abspielen ?")
Global Aktion$  
Global Wert$
Global String
Global Icon$
Global IconRec
Global IconPlay
Global *String
Global String$

XIncludeFile "Base64Str2Image.PBI"
XIncludeFile "SysTrayEntry.PBI"

Procedure StrWert(*String)          ;- liefert nummerischen Wert am Anfang vom String und verkürzt Lezteren entsprechend
  Protected String$, Wert$
  If *String>1
    String$ = LTrim(PeekS(*String))
    While FindString("0123456789", Left(String$, 1), 1)
      Wert$ + Left(String$, 1)
      String$ = Mid(String$, 2)
    Wend
    PokeS(*String, LTrim(Right(String$, Len(String$) - 1)))
  EndIf
  ProcedureReturn Val(Wert$)
EndProcedure

Global Makro_Buff$ ;AufzeichnungsBuffer, enthälte letzte Aktion (kann Klick auf SysTray-Icon (=Aufzeichnunsg-Ende) sein: nicht abspeichern !!!
Procedure MakroRec(Aktion$)         ;- Maus- / Tasten-Aktion in Aufzeichnungs-Queue eintragen
  Debug "MakroRec(" + Aktion$ + ")"
  If Aktion$>""
    If last_mSec>0 : Aktion$ = "W" + Str(ElapsedMilliseconds() - last_mSec) + " " + Aktion$ : EndIf
    If Makro_Buff$>"" : Makro$ + Makro_Buff$ : MakroCnt + 1 : EndIf
    Makro_Buff$ = Aktion$ ;letzte Aktion buffern (wg. Klick auf SysTray-Icon zum Rec-Ende: Diesen _nicht_ speichern !
    last_mSec = ElapsedMilliseconds()
  EndIf
EndProcedure

#MOUSEEVENTF_WHEEL = $800
Procedure MakroPlay(Makro$)         ;- aufgezeichnete Maus-/Keyb-Aktionen "abspielen" (Tastendrücke emulieren)
      Protected res, scanCode, Typ, x, y
  Debug "MakroPlay(" + Makro$ + ")"
  While Trim(Makro$)>""
    Typ = Asc(Makro$): Makro$ = Mid(Makro$, 2)
    If Typ = 'W' : Delay(StrWert(@Makro$));Wait mSec´s
    ElseIf Typ = 'K'                       ;{Keyb-Aktion
      Typ = Asc(Makro$): Makro$ = Mid(Makro$, 2)
      scanCode = StrWert(@Makro$)
      If Typ = ' - ' :Typ = #KEYEVENTF_KEYUP ;simuliere #WM_KEYUP
      Else : Typ = 0                       ;simuliere #WM_KEYDOWN
      EndIf
      keybd_event_(scanCode, 0, Typ, 0);simuliere Taste
      ;}
    ElseIf Typ = 'M'                       ;{Maus-Aktion
      Typ = Asc(Makro$): Makro$ = Mid(Makro$, 2)
      x = StrWert(@Makro$)
      y = StrWert(@Makro$)
      res = SetCursorPos_(x, y);MausCursor positionieren
      If Typ = 'L' :Typ = #MOUSEEVENTF_LEFTDOWN       ;linke MausTaste drücken
      ElseIf Typ = 'l' :Typ = #MOUSEEVENTF_LEFTUP     ;linke MausTatse loslassen
      ElseIf Typ = 'R' :Typ = #MOUSEEVENTF_RIGHTDOWN  ;rechte MausTaste drücken
      ElseIf Typ = 'r' :Typ = #MOUSEEVENTF_RIGHTUP    ;rechte MausTatse loslassen
      ElseIf Typ = 'M' :Typ = #MOUSEEVENTF_MIDDLEDOWN ;mittlere MausTaste drücken
      ElseIf Typ = 'm' :Typ = #MOUSEEVENTF_MIDDLEUP   ;mittlere MausTatse loslassen
      ElseIf Typ = 'W' :Typ = #MOUSEEVENTF_WHEEL      ;RausRad rollen
        Protected rad=StrWert(@Makro$)
      Else : Typ = 0
      EndIf
      mouse_event_(Typ, 0, 0, rad, 0);Maus-Taste emulieren
      ;}
    EndIf
  Wend
EndProcedure

Macro KeybMakro(Mode)               ;- Aktion im Keyb-Hook zusammenbauen (Format "K"a s: a=Aktion (+=gedückt -=losgelassen) s=ScanCode der Taste
  "K" + Mode + Str(*p\vkCode) + " "
EndMacro

Procedure.l KeyboardHook(nCode, wParam, *p.Keyboard_HookStrk);- der Tastatur-Hook
  If wParam = #WM_KEYDOWN Or wParam = #WM_SYSKEYDOWN
    Debug "Taste [" + Str(*p\vkCode) + "] gedrückt(ScanCode=" + Str(*p\scanCode) + ")"
    MakroRec(KeybMakro("+"))
  ElseIf wParam = #WM_KEYUP Or wParam = #WM_SYSKEYUP
    Debug "Taste [" + Str(*p\vkCode) + "] losgelassen(ScanCode=" + Str(*p\scanCode) + ")"
    MakroRec(KeybMakro("-"))
  EndIf
  ProcedureReturn CallNextHookEx_(0, nCode, wParam, *p)
EndProcedure

Macro MausMakro(Mode)               ;- Aktion in Maus-Hook zusammenbauen (Format "M"a x y: a=Aktion (#WM_?BUTTON???) x/y=MausPos
  "M" + Mode + Str(*p\pt\x) + " " + Str(*p\pt\y) + " "
EndMacro

Procedure MouseKeyHook(nCode, wParam, *p.MSLLHOOKSTRUCT);- der Maus-Hook
;  Debug "nCode="+Str(nCode)+"  wParam="+Str(wParam)+"  pos="+Str(*p\pt\x)+" / "+Str(*p\pt\y)
  Select wParam
    Case #WM_LBUTTONDOWN
      Debug "MausTaste+ links " + MausMakro("L")
      MakroRec(MausMakro("L"))
    Case #WM_LBUTTONUP ;Maus-Taste links loslassen
      Debug "MausTaste- links " + MausMakro("l")
      MakroRec(MausMakro("l"))
    Case #WM_RBUTTONDOWN ;Maus-Taste rechts
      Debug "MausTaste+ rechts " + MausMakro("R")
      MakroRec(MausMakro("R"))
    Case #WM_RBUTTONUP ;Maus-Taste rechts loslassen
      Debug "MausTaste- rechts " + MausMakro("r")
      MakroRec(MausMakro("r"))
    Case #WM_MBUTTONDOWN ;Maus-Taste mitte
      Debug "MausTaste+ mitte " + MausMakro("M")
      MakroRec(MausMakro("M"))
    Case #WM_MBUTTONUP
      Debug "MausTaste- mitte " + MausMakro("m")
      MakroRec(MausMakro("m"))
    Case #WM_MOUSEWHEEL ;MausRad
      Protected rad.w = ((*p\mouseData>>16)&$FFFF)
      Debug "MausRad "+Str(-(rad / 120))
      MakroRec(MausMakro("W")+Str(rad)+" ")
  EndSelect
  ProcedureReturn CallNextHookEx_(0, nCode, wParam, *p)
EndProcedure

Procedure MakroRec_Exit()           ;- laufende Makro-Aufnahme beenden
  Protected Msg$, Name$
  UnhookWindowsHookEx_(OrgProg_Maus)
  UnhookWindowsHookEx_(OrgProg_Keyb)
  OrgProg_Keyb = 0 : OrgProg_Maus = 0
  If MakroCnt>0
    Msg$ = Str(MakroCnt) + " Aktionen speichern"
    Name$ = Trim(InputRequester(Msg$, "unter welchem Namen ?", ""))
    If Name$>""
      ; RegistryWrite("Makro", Name$, Makro$) ;<-- aus Platzgründen geREMt
      ; vorlesen("Makro " + Name$ + " gespeichert") ;<-- aus Platzgründen geREMt
      Makros$ + Chr(255) + Name$ + Chr(255)
      AddElement(Makros$())
      Makros$() = Makro$
    EndIf
  EndIf
  SysTrayNr = SysTrayEntry(RefStd$, Str(IconStd))
  Makro$ = "" : MakroCnt = 0 :last_mSec = 0 ;Reset Makro-Daten
  DisableMenuItem(1, 1, 0);"Makro aufnehmen" möglich
EndProcedure

;****************************************************************
;**                         MainSource                         **
;****************************************************************
DisableExplicit

; IniFile$ = #Prg_Name + ".INI" ;{erstmal alle bereitc definierten Makro´s aus INI-Datei einlesen --> Makros$() und Makros$
; If OpenPreferences(IniFile$)
  ; If PreferenceGroup("Makro")
    ; If ExaminePreferenceKeys()
      ; While NextPreferenceKey()
        ; AddElement(Makros$())
        ; Makros$() = PreferenceKeyValue()
        ; Makros$ + Chr(255) + PreferenceKeyName() + Chr(255) ;Queue der Makro-Namen, mit ^255 geklammert
      ; Wend
    ; EndIf
  ; EndIf
  ; ClosePreferences()
; EndIf;}

Icon$="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"
IconStd = Base64Str2Image(Icon$) ;SysTray-Icon Standart  (Base64Str2Image() ist toller Ersatz für CatchImage(#PB_Any, ?Label))
Icon$="AAABAAEAICAAAAEAGACoDAAAFgAAACgAAAAgAAAAQAAAAAEAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACCfXxva2pwbm5vbW1ta2tta2tta2tvbW1ubGxubGxta2twbm5vbW1vbW1vbW1vbW1vbW1vbW1vbW1vbW1vbW1vbW1vbWxsamlta2pxb25ta2tta2t7eXmxsLDf2djg29p1c3Jta2tta2t5d3d4dnZzcXF3dXV3dXVycHBzcXFta2tsampsampsampta2tubGxraWlta2tsampsampsampsamtraWh1c3NzcXB0cnJ1c3N0cnJubGyHhYXg29nh3Nt0cXFxcG+BfH2PiYrCwMC/vb25t7e6uLi8u7q+vLy+vLy9u7u6uLi7ubm8urq9u7y/vr7Bv7/CwMDCwMDCwMDDwcHAvr7Bv7/Bv8C/vb7Bv7/Bv7/BwMC6ubnSzcvd2NdvbW10cXGEe3yOh4e5tLXQzM3b1tff29vl4OHx7O3f29rKxsbHxMPGwsLFwcHEwcDDwL/Cvr7Cv77AvbzJxcTPy8rY1NPU0M/EwMDHw8PFwsHEwcDBvr3Hw8Pw6+ro4+Jta2tycHCBeHmnoKH69PX07u/79PZ6dnckIyMpKCg+PDz69fPf2tne2NfY09LW0c/Uz83Qy8nIw8LQy8p3c3MbGhogHx8kIyO7tbayq6ywqKiwp6etpKStpaXo4+Lv6ul0cXFwbm1/dni4sbL48/Tw6uv07u/Ev8AAAAAAAAAAAADFwL/j3t3d2NXg287g28rc18bX0sHUz8Lh3NkAAAAAAAAAAAAAAADJwsOzrq+0rKyyqqqvp6eon6Dg29rr5uV7eHZtbGt8dXa9uLn58/Tw6evu6On///8MDAwAAAAAAABVU1P++eTq5dCIheJmY+ZoZeRiYOOHg+CjoJAAAAAAAAAAAABaV1fDvL2zra+0rKuyqqqvp6eooKDl4N/s5+Z8eHdta2p8dXa7tbb48/Tu6uvu6On38fKGgoIAAAAAAAAAAAByb/8AAP8AAP8AAP8AAP8AAP8AAP8AAPcAAAAAAAAAAAC7tba5s7S0ra+0rKuyqqqvp6eooKDk4eDt6Od8eHdtammBeHm7tbb48/Ts6+vu6Ons5uf48vIAAAAAAAAAAAAAAJwAANUAAM8AAM8AAM8AAM8AANsAAFwAAAAAAAA2NiPNyMe2sbK2ra+0rKuyqqqwp6enoKDj4uHu6ul8eHdtbGqAeHm6tLX48/Ts6+vu6Onq5OX+9/hSTz0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL7Oyba4srG2ra+0rKuyqqqwp6enn6Dm5OPw6+p9eXhubWuCenu7tbb48vTs6+vu6Onq5OX//+YvL+YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8YGPXNx6i2ra+0rKuyqqqwp6enn5/o5uXx7ex9eHhubGyDe329t7j48vPu6uvu6Ony6+XCvugAAP8AAB0AAAAAAAAAABoAADQAAC8AAC8AADkAAAcAAAAAAAAAAHUAAP8AAP+alL68sqyzrKuyqqqwp6enn5/o5uXz7+59d3lubWyCfH2+uLn48vPw6evu6On++OM7OPkAAP8AAKIAAAAAAAAAABwAAP8AAP8AAP8AAP8AAAAAAAAAAAAAAPoAAP8AAP8vLOzIu6izrKuyqqqwp6enn5/o5+X28fB8d3hubGyEfX6+uLn48vPw6uvu6On//+EAAP8AAP8AAP8AAAAAAAAAAAAAAOIAAP8AAP8AAI4AAAAAAAAAADEAAP8AAP8AAP8AAP/VyKKzrKuyqqqwp6emn5/q5+b38vF8dndubGyFfn++uLn48vPw6uv17+i4suwAAP8AAP8AAP8AAFcAAAAAAAAAAGEAAP8AAP8AAA4AAAAAAAAAAK0AAP8AAP8AAP8AAP+Qh8C5samyqqqwp6emn5/p5+b28vF7d3dubGuGgIG+uLn48vPw6uv17+jBu+sAAP8AAP8AAP8AAOEAAAAAAAAAAAAAAP8AAOIAAAAAAAAAAAAAAP8AAP8AAP8AAP8AAP+Wjb65samyqqqwp6emn5/q6Oj38vJ5d3ZubGuHgYK9t7j48vPw6uv38eippO0AAP8AAP8AAP8AAP8AABIAAAAAAAAAAMEAAGUAAAAAAAAAAGkAAP8AAP8AAP8AAP8AAP+Wjb65samyqqqwp6emn5/r6Or48vN5d3ZtbGuIgYO+uLn48vPw6uv17+i7tusAAP8AAP8AAP8AAP8AAJQAAAAAAAAAAEEAAAQAAAAAAAAAAO0AAP8AAP8AAP8AAP8AAP+RiMC5samyqqqwp6emn5/r6On48vN5d3ZtbGuIgoO/ubr48vPw6uvv6ej58+QAAP8AAP8AAP8AAP8AAP8AAAAAAAAAAAAAAAAAAAAAACQAAP8AAP8AAP8AAP8AAP8AAP/Fuau1rauyqqqwp6emn5/r6On48vN7d3ZwbGuJg4S+uLn48vPv6+zt8/T///ERHP8AAP8AAP8AAP8AAP8AAE8AAAAAAAAAAAAAAAAAAKcAAP8AAP8AAP8AAP8AAP8JG//E1buturqwrKywp6emn5/q6er39PR9d3ZxbGuJg4W9t7j4+vvv+Pn0i4z/Z1ykM4kAAP8AAP8AAP8AAP8AANMAAAAAAAAAAAAAAAAAAP8AAP8AAP8AAP8AAP8AAP+0ADr/AADyHBywrKytra2mn5/p6+r39vZ8d3ZxbGqKhIW+wMH54+T/AAD8FRX1amv/dE0ABf8AAP8AAP8AAP8AAP8AAAAAAAAAAAAAAFwAAP8AAP8AAP8AAP8AAP8AAP/O3LKozM3dTk7/AACvqqqloaHp6ur29fV8d3ZxbGqKhoe/xsf/AAD0mZrq///o8vPr9fDb1eIAAP8AAP8AAP8AAP8AAP8AAP8AAP8AAP8AAP8AAP8AAP8AAP8AAP+wrLe7tq+2ra2qwcHcTEzyGxugra3q6+v19PR8d3ZwbGqKjo/FcXL/MDDu///t5+jp4+To4uP2796al+gAAP8AAP8AAP8AAP8AAP8AAP8AAP8AAP8AAP8AAP8AAP9+fM3Gwa+4sbG3ra6zrKujyMj/AACdsrLp6ur29fV8d3ZwbGqKlJXQNzj+cnLv+Prs5ufp4+Tn4eLm3+Hw/OnpLDwOAOkAAP8AAP8AAP8AAP8AAP8AAP8AAP8VANm7majGxbS5tLW6r7K4rK+zrKumwcH/AACdtLTp6ur39fV9eHdwa2qKk5XQODn9eHfv+Pnu6Onr5ebp4+Tn4eLi9/f/HRX/vpqfo+ZFQ/AlJfYTE/okI/RBP+yNnuH/Kgbafna3v8G5tLW6r7K4rK+yrq6wrKz/AACdsrLp6ur39fV+eXhwa2qLjpDHdnf/AADt///u6erq5OXp4+Tm5+nj6Of/AADc5uXj4NXo487n4snm4MXg2sHb1cDM0MXTion/AACyzc22vr+4tbe2srSmysrzGhriPT2hqqrp6ur39fVzcHBvbGuLhYa/2tz/Fxb7Ojvs///o/P3m+/zm5+n/AADufX3Y/PvX6ujU5uXQ4uHL5eTF4N7E392/2tm07OvlS0v/AADPf4DDkZHDkZL6Cwr/AACptLSooqLq6ur29fWLiIdoZmWLhYbFwcL0///8Jyf/AAD8Hh78Ghr/AAD/AAD5KSn7FBT7FBP7ExP5Ghr/AAD/AAD/AAD/AAD/AAD/AAD/AAD/AAD/AADyHh/XWlqkw8OvqampoqHn6Ojw7+/g29qZlpWBe3yspqf69vfq/v/u4uPyg4TttLXrtLXos7Tnqqvkp6jhpKbfo6LcnJzQw8PG5OPC3Nu+2de71tS20NCxy8yux8ixxMavubuus7OvpqeupaWqo6P39/fz8vLo4+Lv6um9t7l2cHG+uLnz7e7w8fLu9/jq7/Dq7+/m6+zf5OXc4eLZ3t7a3dzW2djT0tHSzczNyMfMx8bHwsHDvr3Au7vGwMC7tLTDu7u8t7a5tLSwq6rc2Nj6+/vx8fHl4N/m4eDr5+Xr5eXTzs7Y0tLk4ODk4eDj39/r5+fj39/i3d3i397i3t7k397i3dzm4eDk397k397j3t3m4eDk397k397n4+Hl4d/k4N/k4N/j397l4N/s5+br5+fl4eEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="
IconRec = Base64Str2Image(Icon$) ;SysTray-Icon Aufnahme
Icon$="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"
IconPlay = Base64Str2Image(Icon$);SysTray-Icon Abspielen

RefStd$ = "Makro-Rekorder" + #LF$ + "kann(Maus-)Tastendrücke" + #LF$ + "aufnehmen und abspielen"
RefRec$ = "nun aufzunehmende(Maus-)Tasten betätigen" + #LF$ + "Aufnahme-Ende: hier Maus-Klick"
RefPlay$ = "Makro wird abgespielt"
SysTrayNr = SysTrayEntry(RefStd$, Str(IconStd))
MenueID = CreatePopupMenu(1)
MenuItem(1, "Makro aufnehmen")
MenuItem(2, "Makro abspielen")
MenuItem(99, "Programm beenden")

;{- Fenster-Aufbau
Repeat
  Event = WaitWindowEvent()
  Select Event
    Case #PB_Event_SysTray ;{- SysTray-Aktion
      If EventType() = #PB_EventType_LeftClick Or EventType() = #PB_EventType_RightClick
        If OrgProg_Maus
          MakroRec_Exit()
        Else
          DisplayPopupMenu(1, SysTray_WinID)
        EndIf
      EndIf;
    Case #PB_Event_Menu       ;{- die FunktionsSteuerung
      Select EventMenu()
        Case 1 ;{Makro aufnehmen
          If OrgProg_Maus = 0 ;keine laufende Aufzeichnung
            SysTrayNr = SysTrayEntry(RefRec$, Str(IconRec));Aufnahme-Icon in´s SysTray
            ;- Tastatur-Hook eintragen
            Makro$ = "" : Makro_Buff$=""
            OrgProg_Maus = SetWindowsHookEx_(#WH_MOUSE_LL, @MouseKeyHook(), GetModuleHandle_(0), 0)
            OrgProg_Keyb = SetWindowsHookEx_(#WH_KEYBOARD_LL, @KeyboardHook(), GetModuleHandle_(0), 0)
            DisableMenuItem(1, 1, 1);"Makro aufnehmen" ausgrauen
          EndIf ;}
        Case 2 ;{Makro abspielen
          If OrgProg_Maus = 0 ;keine laufende Aufzeichnung
            SysTrayNr = SysTrayEntry(RefPlay$, Str(IconPlay));Play-Icon in´s SysTray
            DisableMenuItem(1, 1, 1);"Makro aufnehmen" ausgrauen
            ;MakroNr = Auswahl_Fenster(0, 0, Makros$, "welches Makro abspielen ?") ;<-- aus Platzgründen geREMt
            MakroNr=1 
            If MakroNr
              SelectElement(Makros$(), MakroNr - 1)
              MakroPlay(Makros$())
            EndIf
            SysTrayNr = SysTrayEntry(RefStd$, Str(IconStd));Play-Icon in´s SysTray
            DisableMenuItem(1, 1, 0);"Makro aufnehmen" ausgrauen
            DisableMenuItem(1, 2, 0);"Makro abspielen" ausgrauen
          EndIf ;}
        Case 99 ;{PrgExit
          If OrgProg_Maus ;nicht keine laufende Aufzeichnung
            UnhookWindowsHookEx_(OrgProg_Maus)
            UnhookWindowsHookEx_(OrgProg_Keyb)
          EndIf
          End ;}
      EndSelect
  EndSelect
Until Event = #PB_Event_CloseWindow
If OrgProg_Maus ;nicht keine laufende Aufzeichnung
  UnhookWindowsHookEx_(OrgProg_Maus)
  UnhookWindowsHookEx_(OrgProg_Keyb)
EndIf
End 

Code: Alles auswählen

 ;==========  Begin Modul "Base64Str2Image.PBI"  ==========
;Modul      Base64Str2Image Version 1.0 by Axolotl  vom 18.07.2024 / 16:52 Uhr


; Brief Example without warranty.  
Procedure Base64Str2Image(Icon$) 
  Protected ret, *buf, bufSize, bytes   

  bufSize = Len(Icon$) 
  *buf = AllocateMemory(bufSize) 
  bytes = Base64Decoder(Icon$, *buf, bufSize) 
  
  ret = CatchImage(#PB_Any, *buf, bytes)  ; return Image 
  FreeMemory(*buf) 

  ProcedureReturn ret 
EndProcedure 



Icon$="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"
IconStd = Base64Str2Image(Icon$) ;SysTray-Icon Standart  (Base64Str2Image() ist toller Ersatz für CatchImage(#PB_Any, ?Label))
Icon$="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"
IconRec = Base64Str2Image(Icon$) ;SysTray-Icon Aufnahme
Icon$="AAABAAEAICAAAAEAGACoDAAAFgAAACgAAAAgAAAAQAAAAAEAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACCfXxva2pwbm5vbW1ta2tta2tta2tvbW1ubGxubGxta2twbm5vbW1vbW1vbW1vbW1vbW1vbW1vbW1vbW1vbW1vbW1vbWxsamlta2pxb25ta2tta2t7eXmxsLDf2djg29p1c3Jta2tta2t5d3d4dnZzcXF3dXV3dXVycHBzcXFta2tsampsampsampta2tubGxraWlta2tsampsampsampsamtraWh1c3NzcXB0cnJ1c3N0cnJubGyHhYXg29nh3Nt0cXFxcG+BfH2PiYrCwMC/vb25t7e6uLi8u7q+vLy+vLy9u7u6uLi7ubm8urq9u7y/vr7Bv7/CwMDCwMDCwMDDwcHAvr7Bv7/Bv8C/vb7Bv7/Bv7/BwMC6ubnSzcvd2NdvbW10cXGEe3yOh4e5tLXQzM3b1tff29vl4OHx7O3f29rKxsbHxMPGwsLFwcHEwcDDwL/Cvr7Cv77AvbzJxcTPy8rY1NPU0M/EwMDHw8PFwsHEwcDBvr3Hw8Pw6+ro4+Jta2tycHCBeHmnoKH69PX07u/79PZ6dnckIyMpKCg+PDz69fPf2tne2NfY09LW0c/Uz83Qy8nIw8LQy8p3c3MbGhogHx8kIyO7tbayq6ywqKiwp6etpKStpaXo4+Lv6ul0cXFwbm1/dni4sbL48/Tw6uv07u/Ev8AAAAAAAAAAAADFwL/j3t3d1tfgz9rgy9rcx9bXwtHUw87h2tsAAAAAAAAAAAAAAADJwsOzrq+0rKyyqqqvp6eon6Dg29rr5uV7eHZtbGt8dXa9uLn58/Tw6evu6On///8MDAwAAAAAAABVU1P+5/bq0eSI4oRm52No5WVi41+H4YOjmJkAAAAAAAAAAABaV1fDvL2zra+0rKuyqqqvp6eooKDl4N/s5+Z8eHdta2p8dXa7tbb48/Tu6uvu6On38fKGgoIAAAAAAAAAAABy/3sA/wAA/wAA/wAA/wAA/wAA/wAAtDIAAAAAAAAAAAC7tba5s7S0ra+0rKuyqqqvp6eooKDk4eDt6Od8eHdtammBeHm7tbb48/Ts6+vu6Ons5uf48vIAAAAAAAAAAAAAdBwA2QAAzwAAzwAAzwAAzwAA3wAANCcAAAAAAAA2KDHNxsm2sbK2ra+0rKuyqqqwp6enoKDj4uHu6ul8eHdtbGqAeHm6tLX48/Ts6+vu6Onq5OX+9/hSQ0kAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfzXOu8S4sLO2ra+0rKuyqqqwp6enn6Dm5OPw6+p9eXhubWuCenu7tbb48vTs6+vu6Onq5OX/6/ovnnYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgA/xgY+RTNp8i2ra+0rKuyqqqwp6enn5/o5uXx7ex9eHhubGyDe329t7j48vPu6uvu6Ony4+zC6L8A/wAAADIAAAAAAAAADgwANwAALwAALwAAPwAAAA8AAAAAAAAAQjMA/wAA/wCavZS8qrSzrKuyqqqwp6enn5/o5uXz7+59d3lubWyCfH2+uLn48vPw6evu6On+4vk7+DkA/wAAajgAAAAAAAAAACQA/w0A/wAA/wAA6zIAAAEAAAAAAAAAvTwA/wAA/wAv6yzIpb6zrKuyqqqwp6enn5/o5+X28fB8d3hubGyEfX6+uLn48vPw6uvu6On/4P8A/wAA/wAA/xcAAAkAAAAAAAAAqTkA/wAA/wAAVjgAAAAAAAAAADEA/wAA/wAA/wAA/wDVoMqzrKuyqqqwp6emn5/q5+b38vF8dndubGyFfn++uLn48vPw6uv15/C467QA/wAA/wAA/wAALCsAAAAAAAAALDUA/wAA/w0AACAAAAAAAAAAfy0A/wAA/wAA/wAA/wCQv4i5qbGyqqqwp6emn5/p5+b28vF7d3dubGuGgIG+uLn48vPw6uv15/DB6bwA/wAA/wAA/wAAqTgAAAAAAAAAABIA/xgArTUAAAAAAAAAABUA/h0A/wAA/wAA/wAA/wCWvY65qbGyqqqwp6emn5/q6Oj38vJ5d3ZubGuHgYK9t7j48vPw6uv35/Kp7KUA/wAA/wAA/wAA/w0AACQAAAAAAAAAlyoAPCkAAAAAAAAARCUA/wAA/wAA/wAA/wAA/wCWvY65qbGyqqqwp6emn5/r6Or48vN5d3ZtbGuIgYO+uLn48vPw6uv15/C76rcA/wAA/wAA/wAA/wAAVEAAAAAAAAAAICEAABAAAAAAAAAApUgA/wAA/wAA/wAA/wAA/wCRv4q5qbGyqqqwp6emn5/r6On48vN5d3ZtbGuIgoO/ubr48vPw6uvv5+r54/QA/wAA/wAA/wAA/wAA6icAAAIAAAAAAAAAAAAAAAAAADoA/wAA/wAA/wAA/wAA/wAA/wDFqbu1q62yqqqwp6emn5/r6On48vN7d3ZwbGuJg4S+uLn48vPv6+zt8/T/8P8R/xwA/wAA/wAA/wAA/wAAFDsAAAAAAAAAAAAAAAAAaj0A/wAA/wAA/wAA/wAA/wAJ/xzEudeturqwrKywp6emn5/q6er39PR9d3ZxbGuJg4W9t7j4+vvv+Pn0i4z/W2ikiTQA/wAA/wAA/wAA/wAAqycAAAAAAAAAAAAAABAA/xgA/wAA/wAA/wAA/wAA/wC0OgD/AADyHBywrKytra2mn5/p6+r39vZ8d3ZxbGqKhIW+wMH54+T/AAD8FRX1amv/THQA/wUA/wAA/wAA/wAA/w4AABoAAAAAAAAAIDwA/wAA/wAA/wAA/wAA/wAA/wDOtNqozM3dTk7/AACvqqqloaHp6ur29fV8d3ZxbGqKhoe/xsf/AAD0mZrq///o8vPr7/bb4dYA/wAA/wAA/wAA/wAA/wAA/wAA/wAA/wAA/wAA/wAA/wAA/wAA/wCwuKu7sLW2ra2qwcHcTEzyGxugra3q6+v19PR8d3ZwbGqKjo/FcXL/MDDu///t5+jp4+To4uP23fCa6JYA/wAA/wAA/wAA/wAA/wAA/wAA/wAA/wAA/wAA/wAA/wB+zXzGr8G4sbG3ra6zrKujyMj/AACdsrLp6ur29fV8d3ZwbGqKlJXQNzj+cnLv+Prs5ufp4+Tn4eLm3+Hw6vvpPCwO6gAA/wAA/wAA/wAA/wAA/wAA/wAA/wAV2QC7qZjGs8a5tLW6r7K4rK+zrKumwcH/AACdtLTp6ur39fV9eHdwa2qKk5XQODn9eHfv+Pnu6Onr5ebp4+Tn4eLi9/f/Fxv/mr6f56NF8UMl9iQT+hIk9SNB7D+N4p3/BiraeHy3v8G5tLW6r7K4rK+yrq6wrKz/AACdsrLp6ur39fV+eXhwa2qLjpDHdnf/AADt///u6erq5OXp4+Tm5+nj6Of/AADc5uXj1t/oz+LnyuHmxt/gwtnbwdTMxs/Tion/AACyzc22vr+4tbe2srSmysrzGhriPT2hqqrp6ur39fVzcHBvbGuLhYa/2tz/Fxb7Ojvs///o/P3m+/zm5+n/AADufX3Y/PvX6ujU5uXQ4uHL5eTF4N7E392/2tm07OvlS0v/AADPf4DDkZHDkZL6Cwr/AACptLSooqLq6ur29fWLiIdoZmWLhYbFwcL0///8Jyf/AAD8Hh78Ghr/AAD/AAD5KSn7FBT7FBP7ExP5Ghr/AAD/AAD/AAD/AAD/AAD/AAD/AAD/AAD/AADyHh/XWlqkw8OvqampoqHn6Ojw7+/g29qZlpWBe3yspqf69vfq/v/u4uPyg4TttLXrtLXos7Tnqqvkp6jhpKbfo6LcnJzQw8PG5OPC3Nu+2de71tS20NCxy8yux8ixxMavubuus7OvpqeupaWqo6P39/fz8vLo4+Lv6um9t7l2cHG+uLnz7e7w8fLu9/jq7/Dq7+/m6+zf5OXc4eLZ3t7a3dzW2djT0tHSzczNyMfMx8bHwsHDvr3Au7vGwMC7tLTDu7u8t7a5tLSwq6rc2Nj6+/vx8fHl4N/m4eDr5+Xr5eXTzs7Y0tLk4ODk4eDj39/r5+fj39/i3d3i397i3t7k397i3dzm4eDk397k397j3t3m4eDk397k397n4+Hl4d/k4N/k4N/j397l4N/s5+br5+fl4eEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="
IconPlay = Base64Str2Image(Icon$);SysTray-Icon Abspielen



If OpenWindow(0, 0, 0, 480, 148, "ImageGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  If IconStd  ; CatchImage(0, ?Geebee) 
    ImageGadget(0, 10, 10, 0, 0, ImageID(IconStd)) 
  EndIf
  If IconRec  
    ImageGadget(1, 110, 10, 0, 0, ImageID(IconRec)) 
  EndIf
  If IconPlay  
    ImageGadget(2, 210, 10, 0, 0, ImageID(IconPlay)) 
  EndIf
  Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf

Re: MakroRekorder via Maus- & KeybHook: MausRad ? [gelöst]

Verfasst: 28.07.2024 19:05
von H.Brill
Gerade so beim Überfliegen des Codes entdeckt :
If Typ = ' - ' :Typ = #KEYEVENTF_KEYUP ;simuliere #WM_KEYUP
Ist Typ jetzt als Stringvariable oder als numerische Variable deklariert ?
Du fragst Typ nach einem Bindestrich ab und wenn ja, dann willst du einen numerischen Wert
(Hexidezimaler Wert von #KEYEVENT_KEYUP) reinschreiben. Da mußt du halt 2 verschiedene
Variablen verwenden.

Genauso bei :
If *String>1
Egal jetzt, ob String jetzt als Stringvariable oder als numerische Variable deklariert worden ist,
wird *String (* = Adresse auf Var) immer größer 1 sein.

So ein paar Spielregeln von PB solltest du schon beachten, damit da keine ungewollten Sachen
entstehen. Ist aber bei allen Sprachen ähnlich.

Re: MakroRekorder via Maus- & KeybHook: MausRad ? [gelöst]

Verfasst: 28.07.2024 20:03
von ChrigiGee
Hallo und guten Abend H.Bill,

Ich bin also erst daran, am Verstehen des Ur-Alt Thema und der Idee dahinter.
Ich habe zuerst den gesamt Source knall Fall übernommen und versuche mich
reinzuaarbeiten ....

Bis jetzt habe ich, was der damalige Ersteller alles an Arbeit vor geleistet hatte
auch noch nicht im Klaren.

Versuche natürlich anhand dessen was gegeben ist zu verstehen.
Vielen Dank für Deinen Input, somit ein Zahnrädchen weiter am gesamten.

Wahrscheinlich hatte auch ICH einiges verschlimmbessert.....

Ich danke viel mal für die wertvollen Inputs.

Liebe Grüsse
Christian
H.Brill hat geschrieben: 28.07.2024 19:05 Gerade so beim Überfliegen des Codes entdeckt :
If Typ = ' - ' :Typ = #KEYEVENTF_KEYUP ;simuliere #WM_KEYUP
Ist Typ jetzt als Stringvariable oder als numerische Variable deklariert ?
Du fragst Typ nach einem Bindestrich ab und wenn ja, dann willst du einen numerischen Wert
(Hexidezimaler Wert von #KEYEVENT_KEYUP) reinschreiben. Da mußt du halt 2 verschiedene
Variablen verwenden.

Genauso bei :
If *String>1
Egal jetzt, ob String jetzt als Stringvariable oder als numerische Variable deklariert worden ist,
wird *String (* = Adresse auf Var) immer größer 1 sein.

So ein paar Spielregeln von PB solltest du schon beachten, damit da keine ungewollten Sachen
entstehen. Ist aber bei allen Sprachen ähnlich.

Re: MakroRekorder via Maus- & KeybHook: MausRad ? [gelöst]

Verfasst: 29.07.2024 12:56
von ChrigiGee
Lieber H.Bill,
Hallo @all

An dieser Stelle nochmals ein riesiges Dankeschön.
Es war eine recht knifflige Arbeit und ich habe es hinbekommen, mit HEX und normaler Variable.
Aber ich bin mit basteln weiter gekommen und Deine Einwände habe ich umsezen können.

Für alle jene, welche sich dieses Projekt das nicht von mir gestartet wurde als Grundlage nehmen möchten
habe ich den Source hier natürlich auch.


Ich gebe zu, auch meine Arbeit besticht nicht von grossem können, und ich habe auch noch keine schönheits Arbeit daran geleistet.
es sollte nur ein Ausführbares Projekt werden wo ich mich etwas dem ganzen widmen kann.

Liebe Grüsse
Christian

Main App:

Code: Alles auswählen

#Prg_Name = "MakroRekorder"   
#PB_Vers  = "4.20"            
#Prg_Vers = "18608a"          ;<-- set by PB_VersUpd Vers 11415a

;Dieses Prg dient dem Aufzeichnen von Tastatur- und Maus-Aktionen sowie dem
;"abspielen" derselben.
;Nach Aufzeichnungs-Start via SysTray-Menue werden alle Tastendrücke und dessen loslassen
;(=Aktionen) in einer Queue gesammelt, bei MausTasten incl. Position.
;Aufnahme-Ende ist erneutes Anklicken des SysTray-Menü´s
;Beim Abspielen werden die gespeicherten Aktionen (TastenDrücke) emuliert.

#Registry_NoUse = 1 ;Registry nicht benutzten, anstelle PreferenzFile (.INI) benutzen

EnableExplicit
Structure Keyboard_HookStrk
  vkCode.l
  scanCode.l
  flags.l
  time.l
  dwExtraInfo.l
EndStructure

Structure MSLLHOOKSTRUCT
  StructureUnion
  pt.POINT
  ptVal.q
  EndStructureUnion
  mouseData.l
  flags.l
  time.l
  *dwExtraInfo
EndStructure

Global Makro$, MakroCnt  ;aufgezeichnete Aktionen: Aktions-Queue und Anzahl
Global last_mSec         ;wg. ZeitMessung zwischen den Aktionen
Global OrgProg_Maus      ;Adresse der Orginal-MausProcedure
Global OrgProg_Keyb      ;Adresse der Orginal-TastaturProcedure
Global SysTrayNr         ;Fenster-#Nr des (gehideten) SysTray-Fensters
Global RefStd$, IconStd  ;ToolTip-Text und IconNr für´s SysTray (Standart: weder Aufzeichnung noch abspielen)
Global MakroExit         ;Flag: #true, wenn MausZeiger während Aufnahme auf´s SysTray-Icon bewegt wird
Global NewList Makros$() ;Liste aller definierten Makro´s
Global Makros$           ;Namen aller Makros in Makros$() (für´s Auswahl-Menü: "welches Macro abspielen ?")

Global Icon$
Global IconRec
Global IconPlay

XIncludeFile "./PBI/Base64Str2Image.PBI"
XIncludeFile "./PBI/SysTrayEntry.PBI"

Procedure StrWert(*String)          ;- liefert nummerischen Wert am Anfang vom String und verkürzt Lezteren entsprechend
  Protected String$, Wert$
  If *String>1
    String$ = LTrim(PeekS(*String))
    While FindString("0123456789", Left(String$, 1), 1)
      Wert$ + Left(String$, 1)
      String$ = Mid(String$, 2)
    Wend
    PokeS(*String, LTrim(Right(String$, Len(String$) - 1)))
  EndIf
  ProcedureReturn Val(Wert$)
EndProcedure

Global Makro_Buff$ ;AufzeichnungsBuffer, enthälte letzte Aktion (kann Klick auf SysTray-Icon (=Aufzeichnunsg-Ende) sein: nicht abspeichern !!!
Procedure MakroRec(Aktion$)         ;- Maus- / Tasten-Aktion in Aufzeichnungs-Queue eintragen
  Debug "MakroRec(" + Aktion$ + ")"
  If Aktion$>""
    If last_mSec>0 : Aktion$ = "W" + Str(ElapsedMilliseconds() - last_mSec) + " " + Aktion$ : EndIf
    If Makro_Buff$>"" : Makro$ + Makro_Buff$ : MakroCnt + 1 : EndIf
    Makro_Buff$ = Aktion$ ;letzte Aktion buffern (wg. Klick auf SysTray-Icon zum Rec-Ende: Diesen _nicht_ speichern !
    last_mSec = ElapsedMilliseconds()
  EndIf
EndProcedure

#MOUSEEVENTF_WHEEL = $800

Global TypStr.d
Global TypHEX.d

Procedure MakroPlay(Makro$)         ;- aufgezeichnete Maus-/Keyb-Aktionen "abspielen" (Tastendrücke emulieren)
  Protected res, scanCode, TypHEX.d, x, y
  Debug "MakroPlay(" + Makro$ + ")"
  While Trim(Makro$)>""
 
    TypStr.d = Asc(Makro$): Makro$ = Mid(Makro$, 2)
    If TypStr.d = 'W' : Delay(StrWert(@Makro$));Wait mSec´s
    ElseIf TypStr.d = 'K'                       ;{Keyb-Aktion
      TypStr.d = Asc(Makro$): Makro$ = Mid(Makro$, 2)
      scanCode = StrWert(@Makro$)
      If TypStr.d = '-' :TypHEX.d = #KEYEVENTF_KEYUP ;simuliere #WM_KEYUP
      Else : TypStr.d = 0                       ;simuliere #WM_KEYDOWN
      EndIf
      keybd_event_(scanCode, 0, TypHEX.d, 0);simuliere Taste
      ;}
    ElseIf TypStr.d = 'M'                       ;{Maus-Aktion
      TypStr.d = Asc(Makro$): Makro$ = Mid(Makro$, 2)
      x = StrWert(@Makro$)
      y = StrWert(@Makro$)
      res = SetCursorPos_(x, y);MausCursor positionieren
      If TypStr.d = 'L' :TypHEX.d = #MOUSEEVENTF_LEFTDOWN       ;linke MausTaste drücken
      ElseIf TypStr.d = 'l' :TypHEX.d = #MOUSEEVENTF_LEFTUP     ;linke MausTatse loslassen
      ElseIf TypStr.d = 'R' :TypHEX.d = #MOUSEEVENTF_RIGHTDOWN  ;rechte MausTaste drücken
      ElseIf TypStr.d = 'r' :TypHEX.d = #MOUSEEVENTF_RIGHTUP    ;rechte MausTatse loslassen
      ElseIf TypStr.d = 'M' :TypHEX.d = #MOUSEEVENTF_MIDDLEDOWN ;mittlere MausTaste drücken
      ElseIf TypStr.d = 'm' :TypHEX.d = #MOUSEEVENTF_MIDDLEUP   ;mittlere MausTatse loslassen
      ElseIf TypStr.d = 'W' :TypHEX.d = #MOUSEEVENTF_WHEEL      ;RausRad rollen
        Protected rad=StrWert(@Makro$)
      Else : TypStr.d = 0
      EndIf
      mouse_event_(TypStr.d, 0, 0, rad, 0);Maus-Taste emulieren
      ;}
    EndIf
  Wend
EndProcedure

Macro KeybMakro(Mode)               ;- Aktion im Keyb-Hook zusammenbauen (Format "K"a s: a=Aktion (+=gedückt -=losgelassen) s=ScanCode der Taste
  "K" + Mode + Str(*p\vkCode) + " "
EndMacro

Procedure.l KeyboardHook(nCode, wParam, *p.Keyboard_HookStrk);- der Tastatur-Hook
  If wParam = #WM_KEYDOWN Or wParam = #WM_SYSKEYDOWN
    Debug "Taste [" + Str(*p\vkCode) + "] gedrückt(ScanCode=" + Str(*p\scanCode) + ")"
    MakroRec(KeybMakro("+"))
  ElseIf wParam = #WM_KEYUP Or wParam = #WM_SYSKEYUP
    Debug "Taste [" + Str(*p\vkCode) + "] losgelassen(ScanCode=" + Str(*p\scanCode) + ")"
    MakroRec(KeybMakro("-"))
  EndIf
  ProcedureReturn CallNextHookEx_(0, nCode, wParam, *p)
EndProcedure

Macro MausMakro(Mode)               ;- Aktion in Maus-Hook zusammenbauen (Format "M"a x y: a=Aktion (#WM_?BUTTON???) x/y=MausPos
  "M" + Mode + Str(*p\pt\x) + " " + Str(*p\pt\y) + " "
EndMacro

Procedure MouseKeyHook(nCode, wParam, *p.MSLLHOOKSTRUCT);- der Maus-Hook
;  Debug "nCode="+Str(nCode)+"  wParam="+Str(wParam)+"  pos="+Str(*p\pt\x)+" / "+Str(*p\pt\y)
  Select wParam
    Case #WM_LBUTTONDOWN
      Debug "MausTaste+ links " + MausMakro("L")
      MakroRec(MausMakro("L"))
    Case #WM_LBUTTONUP ;Maus-Taste links loslassen
      Debug "MausTaste- links " + MausMakro("l")
      MakroRec(MausMakro("l"))
    Case #WM_RBUTTONDOWN ;Maus-Taste rechts
      Debug "MausTaste+ rechts " + MausMakro("R")
      MakroRec(MausMakro("R"))
    Case #WM_RBUTTONUP ;Maus-Taste rechts loslassen
      Debug "MausTaste- rechts " + MausMakro("r")
      MakroRec(MausMakro("r"))
    Case #WM_MBUTTONDOWN ;Maus-Taste mitte
      Debug "MausTaste+ mitte " + MausMakro("M")
      MakroRec(MausMakro("M"))
    Case #WM_MBUTTONUP
      Debug "MausTaste- mitte " + MausMakro("m")
      MakroRec(MausMakro("m"))
    Case #WM_MOUSEWHEEL ;MausRad
      Protected rad.w = ((*p\mouseData>>16)&$FFFF)
      Debug "MausRad "+Str(-(rad / 120))
      MakroRec(MausMakro("W")+Str(rad)+" ")
  EndSelect
  ProcedureReturn CallNextHookEx_(0, nCode, wParam, *p)
EndProcedure

Procedure MakroRec_Exit()           ;- laufende Makro-Aufnahme beenden
  Protected Msg$, Name$
  UnhookWindowsHookEx_(OrgProg_Maus)
  UnhookWindowsHookEx_(OrgProg_Keyb)
  OrgProg_Keyb = 0 : OrgProg_Maus = 0
  If MakroCnt>0
    Msg$ = Str(MakroCnt) + " Aktionen speichern"
    Name$ = Trim(InputRequester(Msg$, "unter welchem Namen ?", ""))
    If Name$>""
      ; RegistryWrite("Makro", Name$, Makro$) ;<-- aus Platzgründen geREMt
      ; vorlesen("Makro " + Name$ + " gespeichert") ;<-- aus Platzgründen geREMt
      Makros$ + Chr(255) + Name$ + Chr(255)
      AddElement(Makros$())
      Makros$() = Makro$
    EndIf
  EndIf
  SysTrayNr = SysTrayEntry(RefStd$, Str(IconStd))
  Makro$ = "" : MakroCnt = 0 :last_mSec = 0 ;Reset Makro-Daten
  DisableMenuItem(1, 1, 0);"Makro aufnehmen" möglich
EndProcedure

;****************************************************************
;**                         MainSource                         **
;****************************************************************
DisableExplicit

; IniFile$ = #Prg_Name + ".INI" ;{erstmal alle bereitc definierten Makro´s aus INI-Datei einlesen --> Makros$() und Makros$
; If OpenPreferences(IniFile$)
  ; If PreferenceGroup("Makro")
    ; If ExaminePreferenceKeys()
      ; While NextPreferenceKey()
        ; AddElement(Makros$())
        ; Makros$() = PreferenceKeyValue()
        ; Makros$ + Chr(255) + PreferenceKeyName() + Chr(255) ;Queue der Makro-Namen, mit ^255 geklammert
      ; Wend
    ; EndIf
  ; EndIf
  ; ClosePreferences()
; EndIf;}

Icon$="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"
IconStd = Base64Str2Image(Icon$) ;SysTray-Icon Standart  (Base64Str2Image() ist toller Ersatz für CatchImage(#PB_Any, ?Label))
Icon$="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"
IconRec = Base64Str2Image(Icon$) ;SysTray-Icon Aufnahme
Icon$="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"
IconPlay = Base64Str2Image(Icon$);SysTray-Icon Abspielen

RefStd$ = "Makro-Rekorder" + #LF$ + "kann(Maus-)Tastendrücke" + #LF$ + "aufnehmen und abspielen"
RefRec$ = "nun aufzunehmende(Maus-)Tasten betätigen" + #LF$ + "Aufnahme-Ende: hier Maus-Klick"
RefPlay$ = "Makro wird abgespielt"
SysTrayNr = SysTrayEntry(RefStd$, Str(IconStd))
MenueID = CreatePopupMenu(1)
MenuItem(1, "Makro aufnehmen")
MenuItem(2, "Makro abspielen")
MenuItem(99, "Programm beenden")

;{- Fenster-Aufbau
Repeat
  Event = WaitWindowEvent()
  Select Event
    Case #PB_Event_SysTray ;{- SysTray-Aktion
      If EventType() = #PB_EventType_LeftClick Or EventType() = #PB_EventType_RightClick
        If OrgProg_Maus
          MakroRec_Exit()
        Else
          DisplayPopupMenu(1, SysTray_WinID)
        EndIf
      EndIf;
    Case #PB_Event_Menu       ;{- die FunktionsSteuerung
      Select EventMenu()
        Case 1 ;{Makro aufnehmen
          If OrgProg_Maus = 0 ;keine laufende Aufzeichnung
            SysTrayNr = SysTrayEntry(RefRec$, Str(IconRec));Aufnahme-Icon in´s SysTray
            ;- Tastatur-Hook eintragen
            Makro$ = "" : Makro_Buff$=""
            OrgProg_Maus = SetWindowsHookEx_(#WH_MOUSE_LL, @MouseKeyHook(), GetModuleHandle_(0), 0)
            OrgProg_Keyb = SetWindowsHookEx_(#WH_KEYBOARD_LL, @KeyboardHook(), GetModuleHandle_(0), 0)
            DisableMenuItem(1, 1, 1);"Makro aufnehmen" ausgrauen
          EndIf ;}
        Case 2 ;{Makro abspielen
          If OrgProg_Maus = 0 ;keine laufende Aufzeichnung
            SysTrayNr = SysTrayEntry(RefPlay$, Str(IconPlay));Play-Icon in´s SysTray
            DisableMenuItem(1, 1, 1);"Makro aufnehmen" ausgrauen
            ;MakroNr = Auswahl_Fenster(0, 0, Makros$, "welches Makro abspielen ?") ;<-- aus Platzgründen geREMt
            MakroNr=1 
            If MakroNr
              SelectElement(Makros$(), MakroNr - 1)
              MakroPlay(Makros$())
            EndIf
            SysTrayNr = SysTrayEntry(RefStd$, Str(IconStd));Play-Icon in´s SysTray
            DisableMenuItem(1, 1, 0);"Makro aufnehmen" ausgrauen
            DisableMenuItem(1, 2, 0);"Makro abspielen" ausgrauen
          EndIf ;}
        Case 99 ;{PrgExit
          If OrgProg_Maus ;nicht keine laufende Aufzeichnung
            UnhookWindowsHookEx_(OrgProg_Maus)
            UnhookWindowsHookEx_(OrgProg_Keyb)
          EndIf
          End ;}
      EndSelect
  EndSelect
Until Event = #PB_Event_CloseWindow
If OrgProg_Maus ;nicht keine laufende Aufzeichnung
  UnhookWindowsHookEx_(OrgProg_Maus)
  UnhookWindowsHookEx_(OrgProg_Keyb)
EndIf
End

PBI Base64String2Image

Code: Alles auswählen

; Brief Example without warranty.  
Procedure Base64Str2Image(Icon$) 
  Protected ret, *buf, bufSize, bytes   

  bufSize = Len(Icon$) 
  *buf = AllocateMemory(bufSize) 
  bytes = Base64Decoder(Icon$, *buf, bufSize) 
  
  ret = CatchImage(#PB_Any, *buf, bytes)  ; return Image 
  FreeMemory(*buf) 

  ProcedureReturn ret 
EndProcedure 



Icon$="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"
IconStd = Base64Str2Image(Icon$) ;SysTray-Icon Standart  (Base64Str2Image() ist toller Ersatz für CatchImage(#PB_Any, ?Label))
Icon$="AAABAAEAICAAAAEAGACoDAAAFgAAACgAAAAgAAAAQAAAAAEAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACCfXxva2pwbm5vbW1ta2tta2tta2tvbW1ubGxubGxta2twbm5vbW1vbW1vbW1vbW1vbW1vbW1vbW1vbW1vbW1vbW1vbWxsamlta2pxb25ta2tta2t7eXmxsLDf2djg29p1c3Jta2tta2t5d3d4dnZzcXF3dXV3dXVycHBzcXFta2tsampsampsampta2tubGxraWlta2tsampsampsampsamtraWh1c3NzcXB0cnJ1c3N0cnJubGyHhYXg29nh3Nt0cXFxcG+BfH2PiYrCwMC/vb25t7e6uLi8u7q+vLy+vLy9u7u6uLi7ubm8urq9u7y/vr7Bv7/CwMDCwMDCwMDDwcHAvr7Bv7/Bv8C/vb7Bv7/Bv7/BwMC6ubnSzcvd2NdvbW10cXGEe3yOh4e5tLXQzM3b1tff29vl4OHx7O3f29rKxsbHxMPGwsLFwcHEwcDDwL/Cvr7Cv77AvbzJxcTPy8rY1NPU0M/EwMDHw8PFwsHEwcDBvr3Hw8Pw6+ro4+Jta2tycHCBeHmnoKH69PX07u/79PZ6dnckIyMpKCg+PDz69fPf2tne2NfY09LW0c/Uz83Qy8nIw8LQy8p3c3MbGhogHx8kIyO7tbayq6ywqKiwp6etpKStpaXo4+Lv6ul0cXFwbm1/dni4sbL48/Tw6uv07u/Ev8AAAAAAAAAAAADFwL/j3t3d2NXg287g28rc18bX0sHUz8Lh3NkAAAAAAAAAAAAAAADJwsOzrq+0rKyyqqqvp6eon6Dg29rr5uV7eHZtbGt8dXa9uLn58/Tw6evu6On///8MDAwAAAAAAABVU1P++eTq5dCIheJmY+ZoZeRiYOOHg+CjoJAAAAAAAAAAAABaV1fDvL2zra+0rKuyqqqvp6eooKDl4N/s5+Z8eHdta2p8dXa7tbb48/Tu6uvu6On38fKGgoIAAAAAAAAAAAByb/8AAP8AAP8AAP8AAP8AAP8AAP8AAPcAAAAAAAAAAAC7tba5s7S0ra+0rKuyqqqvp6eooKDk4eDt6Od8eHdtammBeHm7tbb48/Ts6+vu6Ons5uf48vIAAAAAAAAAAAAAAJwAANUAAM8AAM8AAM8AAM8AANsAAFwAAAAAAAA2NiPNyMe2sbK2ra+0rKuyqqqwp6enoKDj4uHu6ul8eHdtbGqAeHm6tLX48/Ts6+vu6Onq5OX+9/hSTz0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL7Oyba4srG2ra+0rKuyqqqwp6enn6Dm5OPw6+p9eXhubWuCenu7tbb48vTs6+vu6Onq5OX//+YvL+YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8YGPXNx6i2ra+0rKuyqqqwp6enn5/o5uXx7ex9eHhubGyDe329t7j48vPu6uvu6Ony6+XCvugAAP8AAB0AAAAAAAAAABoAADQAAC8AAC8AADkAAAcAAAAAAAAAAHUAAP8AAP+alL68sqyzrKuyqqqwp6enn5/o5uXz7+59d3lubWyCfH2+uLn48vPw6evu6On++OM7OPkAAP8AAKIAAAAAAAAAABwAAP8AAP8AAP8AAP8AAAAAAAAAAAAAAPoAAP8AAP8vLOzIu6izrKuyqqqwp6enn5/o5+X28fB8d3hubGyEfX6+uLn48vPw6uvu6On//+EAAP8AAP8AAP8AAAAAAAAAAAAAAOIAAP8AAP8AAI4AAAAAAAAAADEAAP8AAP8AAP8AAP/VyKKzrKuyqqqwp6emn5/q5+b38vF8dndubGyFfn++uLn48vPw6uv17+i4suwAAP8AAP8AAP8AAFcAAAAAAAAAAGEAAP8AAP8AAA4AAAAAAAAAAK0AAP8AAP8AAP8AAP+Qh8C5samyqqqwp6emn5/p5+b28vF7d3dubGuGgIG+uLn48vPw6uv17+jBu+sAAP8AAP8AAP8AAOEAAAAAAAAAAAAAAP8AAOIAAAAAAAAAAAAAAP8AAP8AAP8AAP8AAP+Wjb65samyqqqwp6emn5/q6Oj38vJ5d3ZubGuHgYK9t7j48vPw6uv38eippO0AAP8AAP8AAP8AAP8AABIAAAAAAAAAAMEAAGUAAAAAAAAAAGkAAP8AAP8AAP8AAP8AAP+Wjb65samyqqqwp6emn5/r6Or48vN5d3ZtbGuIgYO+uLn48vPw6uv17+i7tusAAP8AAP8AAP8AAP8AAJQAAAAAAAAAAEEAAAQAAAAAAAAAAO0AAP8AAP8AAP8AAP8AAP+RiMC5samyqqqwp6emn5/r6On48vN5d3ZtbGuIgoO/ubr48vPw6uvv6ej58+QAAP8AAP8AAP8AAP8AAP8AAAAAAAAAAAAAAAAAAAAAACQAAP8AAP8AAP8AAP8AAP8AAP/Fuau1rauyqqqwp6emn5/r6On48vN7d3ZwbGuJg4S+uLn48vPv6+zt8/T///ERHP8AAP8AAP8AAP8AAP8AAE8AAAAAAAAAAAAAAAAAAKcAAP8AAP8AAP8AAP8AAP8JG//E1buturqwrKywp6emn5/q6er39PR9d3ZxbGuJg4W9t7j4+vvv+Pn0i4z/Z1ykM4kAAP8AAP8AAP8AAP8AANMAAAAAAAAAAAAAAAAAAP8AAP8AAP8AAP8AAP8AAP+0ADr/AADyHBywrKytra2mn5/p6+r39vZ8d3ZxbGqKhIW+wMH54+T/AAD8FRX1amv/dE0ABf8AAP8AAP8AAP8AAP8AAAAAAAAAAAAAAFwAAP8AAP8AAP8AAP8AAP8AAP/O3LKozM3dTk7/AACvqqqloaHp6ur29fV8d3ZxbGqKhoe/xsf/AAD0mZrq///o8vPr9fDb1eIAAP8AAP8AAP8AAP8AAP8AAP8AAP8AAP8AAP8AAP8AAP8AAP8AAP+wrLe7tq+2ra2qwcHcTEzyGxugra3q6+v19PR8d3ZwbGqKjo/FcXL/MDDu///t5+jp4+To4uP2796al+gAAP8AAP8AAP8AAP8AAP8AAP8AAP8AAP8AAP8AAP8AAP9+fM3Gwa+4sbG3ra6zrKujyMj/AACdsrLp6ur29fV8d3ZwbGqKlJXQNzj+cnLv+Prs5ufp4+Tn4eLm3+Hw/OnpLDwOAOkAAP8AAP8AAP8AAP8AAP8AAP8AAP8VANm7majGxbS5tLW6r7K4rK+zrKumwcH/AACdtLTp6ur39fV9eHdwa2qKk5XQODn9eHfv+Pnu6Onr5ebp4+Tn4eLi9/f/HRX/vpqfo+ZFQ/AlJfYTE/okI/RBP+yNnuH/Kgbafna3v8G5tLW6r7K4rK+yrq6wrKz/AACdsrLp6ur39fV+eXhwa2qLjpDHdnf/AADt///u6erq5OXp4+Tm5+nj6Of/AADc5uXj4NXo487n4snm4MXg2sHb1cDM0MXTion/AACyzc22vr+4tbe2srSmysrzGhriPT2hqqrp6ur39fVzcHBvbGuLhYa/2tz/Fxb7Ojvs///o/P3m+/zm5+n/AADufX3Y/PvX6ujU5uXQ4uHL5eTF4N7E392/2tm07OvlS0v/AADPf4DDkZHDkZL6Cwr/AACptLSooqLq6ur29fWLiIdoZmWLhYbFwcL0///8Jyf/AAD8Hh78Ghr/AAD/AAD5KSn7FBT7FBP7ExP5Ghr/AAD/AAD/AAD/AAD/AAD/AAD/AAD/AAD/AADyHh/XWlqkw8OvqampoqHn6Ojw7+/g29qZlpWBe3yspqf69vfq/v/u4uPyg4TttLXrtLXos7Tnqqvkp6jhpKbfo6LcnJzQw8PG5OPC3Nu+2de71tS20NCxy8yux8ixxMavubuus7OvpqeupaWqo6P39/fz8vLo4+Lv6um9t7l2cHG+uLnz7e7w8fLu9/jq7/Dq7+/m6+zf5OXc4eLZ3t7a3dzW2djT0tHSzczNyMfMx8bHwsHDvr3Au7vGwMC7tLTDu7u8t7a5tLSwq6rc2Nj6+/vx8fHl4N/m4eDr5+Xr5eXTzs7Y0tLk4ODk4eDj39/r5+fj39/i3d3i397i3t7k397i3dzm4eDk397k397j3t3m4eDk397k397n4+Hl4d/k4N/k4N/j397l4N/s5+br5+fl4eEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="
IconRec = Base64Str2Image(Icon$) ;SysTray-Icon Aufnahme
Icon$="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"
IconPlay = Base64Str2Image(Icon$);SysTray-Icon Abspielen


;
; If OpenWindow(0, 0, 0, 480, 148, "ImageGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
;  If IconStd  ; CatchImage(0, ?Geebee) 
;    ImageGadget(0, 10, 10, 0, 0, ImageID(IconStd)) 
;  EndIf
;  If IconRec  
;    ImageGadget(1, 110, 10, 0, 0, ImageID(IconRec)) 
;  EndIf
;  If IconPlay  
;    ImageGadget(2, 210, 10, 0, 0, ImageID(IconPlay)) 
;  EndIf
;  Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
;EndIf