Multi - Copy&Past

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7028
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Multi - Copy&Past

Beitrag 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
Zuletzt geändert von STARGÅTE am 26.03.2008 15:12, insgesamt 4-mal geändert.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
KeyKon
Beiträge: 1412
Registriert: 10.09.2004 20:51
Computerausstattung: Laptop: i5 2,8 Ghz, 16GB DDR3 RAM, GeForce 555GT 2GB VRAM
PC: i7 4,3 Ghz, 32GB DDR3 RAM, GeForce 680 GTX 4GB VRAM
Win10 x64 Home/Prof
PB 5.30 (64bit)
Wohnort: Ansbach
Kontaktdaten:

Beitrag von KeyKon »

praktische sache... bau doch noch shift+insert mit ein zum einfügen, das hab ich mit nämlich angewöhnt zu benutzen...
(\/) (°,,,°) (\/)
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7028
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Beitrag 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
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag 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
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7028
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Beitrag von STARGÅTE »

cool danke,

@KeyKon

mit Shift ist das nicht machbar, da ich ja dann immer beim Zahleingeben ein Zeichen drücke -.- (!"§$...)
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
Kiffi
Beiträge: 10711
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag 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
a²+b²=mc²
Antworten