Seite 1 von 1

Multi - Copy&Past

Verfasst: 02.02.2008 12:45
von STARGÅTE
Tachchen, hatte mal wieder 50 freie Minuten ^^ und habe ein kleines Programm geschrieben womit einem das Kopieren/Einfügen leichter gemacht wird.

Jeder hat brauchte doch bestimmt schon mal mehrere Dinge in verschiedenen Zwischenablagen um je nach bedarf das eine oder andere Kopierte ein zu fügen.

Hier meine Lösung:

Beim Kopieren einfach beim Strg drücken noch eine Zahl von 1 bis 9 mitdrücken damit das "NebenFach" aktiviert wird. Dann einfach noch C oder V und der Text wird kopiert oder eingefügt.

Einfach eine EXE draus machen, und im Hintergrund laufen lassen (CPU schonender betrieb), mit Strg+0 kann man das Programm schließen.
Macro TransparentesFenster(Window, Sichtbarkeit) 
  SetWindowLong_(WindowID(Window), #GWL_EXSTYLEGetWindowLong_(WindowID(Window),#GWL_EXSTYLE)|#WS_EX_LAYERED
  SetLayeredWindowAttributes_(WindowID(Window), 0, Sichtbarkeit, #LWA_ALPHA
EndMacro

Structure CopyKey
  Strg.l
  Zahl.l[10]
  C.l
  V.l
  X.l
EndStructure 

OpenWindow(0, 0, 0, 1, 1, ""#PB_Window_Invisible)
OpenWindow(1, 0, 0, 192, 160, "Copy&Past"#PB_Window_BorderLessWindowID(0))
  CreateGadgetList(WindowID(1))
    ListIconGadget(1, 0, 0, 192, 160, "Nr", 25, #PB_ListIcon_FullRowSelect)
      AddGadgetColumn(1, 1, "Text", 150)
    For n = 1 To 9
      AddGadgetItem(1, -1, Str(n))
    Next n
  SetGadgetFont(1, LoadFont(1, "Arial", 7))

  TransparentesFenster(1, 0) 
 
  StickyWindow(1, 1) 

  CopyKey.CopyKey
  DA = 0

Repeat
 
  CopyKey\Strg = GetAsyncKeyState_(#VK_LCONTROL)|GetAsyncKeyState_(#VK_RCONTROL)
  For n = 0 To 9
   CopyKey\Zahl[n] = GetAsyncKeyState_(n+#VK_0)|GetAsyncKeyState_(n+#VK_NUMPAD0)
  Next 
  CopyKey\C = GetAsyncKeyState_(#VK_C)
  CopyKey\V = GetAsyncKeyState_(#VK_V)
  CopyKey\X = GetAsyncKeyState_(#VK_X)
 
  ResizeWindow(1, DesktopMouseX()+20, DesktopMouseY(), #PB_Ignore#PB_Ignore)
  If CopyKey\Strg And DA < 30
    DA + 1
    TransparentesFenster(1, DA*5)
  ElseIf Not CopyKey\Strg And DA
    DA - 1
    TransparentesFenster(1, DA*5)
  EndIf
 
  If CopyKey\Strg 
    If CopyKey\C Or CopyKey\X
      Delay(10)
      For n = 1 To 9
        If CopyKey\Zahl[n]
          SetGadgetItemText(1, n-1, GetClipboardText(), 1)
        EndIf
      Next
    Else
      For n = 1 To 9
        If CopyKey\Zahl[n]
          SetClipboardText(GetGadgetItemText(1, n-1, 1))
        EndIf
      Next 
    EndIf
  EndIf 
 
  If CopyKey\Strg And CopyKey\Zahl[0] : 
    End
  EndIf
 
  Event = WaitWindowEvent(10)

ForEver
; IDE Options = PureBasic 4.20 Beta 2 (Windows - x86)
; CursorPosition = 12
; FirstLine = 10
; Folding = --
Update 1.1
Kein Fenster mehr in der Taskleiste

Update 1.2
NummernBlock zur Benutzung jetzt auch möglich

Verfasst: 02.02.2008 15:54
von KeyKon
praktische sache... bau doch noch shift+insert mit ein zum einfügen, das hab ich mit nämlich angewöhnt zu benutzen...

Verfasst: 02.02.2008 17:00
von STARGÅTE
ach so ja ich benutze auch lieber
Kopieren: Strg+Einfg
Einfügen: Umschalt+Einfg
Ausschneiden: Umschalt+Entf

Aber das problem ist dann das er dann immer das Fenster einbleden muss wenn man Umschalt drückt, weiß nicht ob das auf dauer nervt :?

Zur not mache ich noch n kleinen Timer rein das das Fenster nicht sofort bei Umschalt kommt sondern erst nach 1s oder so...

EDIT: Hat jmd eine Idee wie ich unterdrücken kann das unten in der Taskleiste das "Fenster" erscheint ? es aber trotzdem angezeigt wird nur halt ohne diesen Abschnitt in der Taskleiste

Verfasst: 02.02.2008 17:07
von AND51
ChildWindows werden nicht angezeigt.

Das bedeutet für dich: Erstelle ein unsichtbares Hauptfenster, dann das eigentliche Fenster als Child des unsichtbaren Parentfensters:

Code: Alles auswählen

OpenWindow(0, 0, 0, 0, 0, "", #PB_Window_Invisible) 
OpenWindow(1, 0, 0, 192, 160, "Copy&Paste", #PB_Window_ScreenCentered, WindowID(0)) 

Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow

Verfasst: 02.02.2008 17:16
von STARGÅTE
cool danke,

@KeyKon

mit Shift ist das nicht machbar, da ich ja dann immer beim Zahleingeben ein Zeichen drücke -.- (!"§$...)

Verfasst: 02.02.2008 17:33
von Kiffi
STARGÅTE hat geschrieben:EDIT: Hat jmd eine Idee wie ich unterdrücken kann das unten in der Taskleiste das "Fenster" erscheint ?
neben der von AND51 geposteten Lösung gibt's noch eine weitere:
http://www.purebasic.fr/german/viewtopi ... 516#143516

Grüße ... Kiffi