Bonjour a tous.
Tout d'abord veuillez m'excuser si je fait bref, mais je suis sur mon téléphone.
Je poste ici une demande de correction et d'amelioration de script.
( en réalité j'aimerais que l'ont me fasse un petit programme bien particulier. Mais ne sachant comment l'expliquer, j'ai pris le temps de faire un "brouillon" pour illustrer ma demande.)
Voici donc dans les grandes lignes ce que j'attend du programme.
(Testez le script suivant)
► Afficher le texte
Code : Tout sélectionner
#Include <Clipboard.au3>
#include <Misc.au3>
#include <Array.au3>
#include <MsgBoxConstants.au3>
#include <Timers.au3>
#include <WindowsConstants.au3>
#include <TrayConstants.au3>
Local $hDLL = DllOpen("user32.dll")
local $CopySlots = 10
Local $CopyArray[$CopySlots]
Local $CurrentSlot = 0
Local $CopyTimer = 400
Local $FontSize = 10
Local $MenuSlotsHeight = $FontSize*2
Local $CopyToolLen = 20
Local $CopyMenuLen = 30
Local $CopySlotSel = 0
Local $CopyCheck = 0
Local $MenuColorOver = 0x0cc10c
Local $MenuColorNorm = 0x080808
While 1
If _IsPressed("11", $hDLL) And _IsPressed("43",$hDLL) Then
;~ $ClipText = _ClipBoard_GetData($CF_TEXT)
$ClipText = ClipGet()
If $ClipText <> "" And $ClipText <> $CopyArray[$CopySlotSel] Then
;~ _ClipBoard_SetData("")
If $CurrentSlot = 0 Then
$CopyCheck = $CopySlots-1
Else
$CopyCheck = $CurrentSlot-1
EndIf
If $CopyArray[$CopyCheck] <> $ClipText Then
$CopyArray[$CurrentSlot] = $ClipText
;~ ToolTip("Slot "&$CurrentSlot+1&" : "&StringLeft($ClipText,$CopyToolLen),0,0)
TrayTip("", "Slot "&$CurrentSlot+1&" : "&StringLeft($ClipText,$CopyToolLen), 5)
If $CurrentSlot < $CopySlots-1 Then
$CurrentSlot +=1
ElseIf $CurrentSlot = $CopySlots-1 Then
$CurrentSlot = 0
EndIf
EndIf
EndIf
Local $CopyTime = TimerInit()
Local $CopyMenuBuffer = 0
Local $CopyMenuHeight = $CopySlots*$MenuSlotsHeight
Do
If _IsPressed("11",$hDLL) And TimerDiff($CopyTime) > $CopyTimer And $CopyMenuBuffer = 0 Then
Local $CurrentWin = WinGetTitle("[ACTIVE]")
Local $CopyMenu = GUICreate("CopySlots",200,$CopyMenuHeight,-1,-1,$WS_POPUP)
GUISetBkColor($MenuColorNorm)
Local $CopyLabel[$CopySlots]
For $i = 0 To $CopySlots-1
$CopyLabel[$i] = GUICtrlCreateLabel("Slot "&$i+1&" : "&StringLeft($CopyArray[$i],$CopyMenuLen),5,$i*$MenuSlotsHeight,190,$MenuSlotsHeight,0x0200)
GUICtrlSetFont(-1,$FontSize)
GUICtrlSetBkColor(-1,$MenuColorNorm)
GUICtrlSetColor(-1,$MenuColorOver)
Next
GUISetState(@SW_SHOW,$CopyMenu)
WinSetOnTop($CopyMenu, "", 1)
WinActivate($CurrentWin)
$CopySlotSel = 0
GUICtrlSetBkColor($CopyLabel[0],$MenuColorOver)
GUICtrlSetColor($CopyLabel[0],$MenuColorNorm)
$CopyMenuBuffer = 1
ClipPut($CopyArray[$CopySlotSel])
EndIf
If _IsPressed("11", $hDLL) And _IsPressed("43",$hDLL) And $CopyMenuBuffer = 1 Then
sleep(100)
GUICtrlSetBkColor($CopyLabel[$CopySlotSel],$MenuColorNorm)
GUICtrlSetColor($CopyLabel[$CopySlotSel],$MenuColorOver)
If $CopySlotSel = 9 Then
$CopySlotSel = 0
Else
$CopySlotSel +=1
EndIf
GUICtrlSetBkColor($CopyLabel[$CopySlotSel],$MenuColorOver)
GUICtrlSetColor($CopyLabel[$CopySlotSel],$MenuColorNorm)
_ClipBoard_SetData($CopyArray[$CopySlotSel])
EndIf
If _IsPressed("56",$hDLL) Then
_ClipPutFile($CopyArray[$CopySlotSel])
ExitLoop
EndIf
Until _IsPressed("11", $hDLL) = False
If $CopyMenuBuffer = 1 Then
GUIDelete($CopyMenu)
$CopyMenuBuffer = 0
EndIf
sleep(250)
EndIf
If _IsPressed("11", $hDLL) And _IsPressed("56",$hDLL) Then
$Owner = WinGetHandle("[ACTIVE]")
$Text = WinGetText($Owner,"[ToolbarWindow32]")
$SplitText = StringSplit($Text,@CRLF)
$FinalText = StringTrimLeft($SplitText[8],10)
$Split = StringSplit($CopyArray[$CopySlotSel],"\")
Local $FinalSplit
For $i = 1 to $Split[0]
If $i = 1 Or $i = $Split[0] Then
$FinalSplit &= $Split[$i]
Else
$FinalSplit &= $Split[$i]&"\"
EndIf
Next
;Text = dossier
;split = fichier
If FileExists($FinalText&"\"&$Split[$Split[0]]) Then
;~ MsgBox(0,"","Ca existe !!")
FileMove($FinalText&"\"&$Split[$Split[0]],$FinalText&"\copie - "&$Split[$Split[0]])
FileCopy($CopyArray[$CopySlotSel],$FinalText&"\"&$Split[$Split[0]])
EndIf
Sleep(200)
EndIf
WEnd
DllClose($hDLL)
Comme vous l'aurez compris l'idée est de faire un "multislots" sur le press-papiers.
Faites comme bon vous semble, soit vous reprenez mon code d'exemple, soit vous faites a votre sauce.
Y ajouter vos idées serais un bon point, (surtout pour la partie coller)
-UTILISATION :
*ctrl+c > relâchez le c = menu des slots
*appuyez sur c (sans lâcher ctrl) pour naviguer.
*Lachez ctrl pour coller.
*Loption ctrl+v dans le menu offre dautres option de ctrl+v quand cest un fichier.
Merci a vous pour je l'espère une version plus "propre" et sans bug.