[R] Comment empêcher le copier-coller les termes d’un contrat (Anti-copie texte)

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Boulanza
Niveau 8
Niveau 8
Messages : 565
Enregistré le : mer. 31 juil. 2013 15:49
Status : Hors ligne

[R] Comment empêcher le copier-coller les termes d’un contrat (Anti-copie texte)

#1

Message par Boulanza »

Bonjour,
Je souhaite ajouter une option et/ou un scripte (sans désactiver la souris ou le clavier) qui interdis le copier-coller d'un texte d'un contrat.
Merci d’avance pour votre aide.
Cordialement.

Code : Tout sélectionner

#include <GuiEdit.au3>
#include <GuiConstantsEx.au3>
#include <WindowsConstants.au3>
;===================================
Opt('MustDeclareVars', 1)
_Main()
Func _Main()
	Global $_FrhEdit, $FrOrigine001, $FrButton1, $FrOrigine002, $FrButton2 

	Local $Wow64 = ""
	If @AutoItX64 Then $Wow64 = "\Wow6432Node"
	Local $sFile = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE" & $Wow64 & "\AutoIt v3\AutoIt", "InstallDir") & "\include\changelog.txt"
	Local $msg, $Label2, $ButValid1, $ButValid2

	$FrOrigine001 = GUICreate("Nos Conditions :", 670, 480, -1, -1) 
		$_FrhEdit = GUICtrlCreateEdit("", 2, 2, 694, 368, BitOR($ES_WANTRETURN, $WS_VSCROLL))
	GUISetState()
	$FrButton1 = GUICtrlCreateButton("Oui j'accepte", 180, 420, 121, 25, 0)
	$FrButton2 = GUICtrlCreateButton("Non je refuse", 380, 420, 121, 25, 0)
	GUISetBkColor(0x00066CC)
	$FrOrigine002 = GUICtrlCreateLabel("Acceptez-vous les termes de ce contrat ?", 180, 380, 437, 20)
	GUICtrlSetColor(-1, 0xFCF8F8)
	GUICtrlSetFont($FrOrigine002, 12, 900, 0, "Ariel")
	GUISetState() 
;===============================================================================
	_GUICtrlEdit_InsertText($_FrhEdit, "En cas de litige et à défaut d'accord amiable entre les parties, le présent contrat est régi, interprété et appliqué conformément au Droit Marocain. Tout litige relatif ou découlant de l'exécution du présent contrat est soumis aux tribunaux compétents dans le ressort du siège de la société. " & @CRLF & @CRLF, 0)
	_GUICtrlEdit_InsertText($_FrhEdit, " DROIT APPLICABLE ET COMPETENCE" & @CRLF & @CRLF, 0)
	_GUICtrlEdit_InsertText($_FrhEdit, "-----------------------------------------------------------------------------------------------" & @CRLF & @CRLF, 0)
	_GUICtrlEdit_InsertText($_FrhEdit, " Dernière mise à jour: 01-01-2015 " & @CRLF & @CRLF, 0)
	_GUICtrlEdit_InsertText($_FrhEdit, " TERMES DU CONTRAT DE LICENCE" & @CRLF & @CRLF, 0)
	;===============================================
	While 1
	$msg = GUIGetMsg()
	Select
	Case $msg = $GUI_EVENT_CLOSE
	ExitLoop
	Case $msg = $FrButton1
	Exit

	Case $msg = $FrButton2
	Exit
	ExitLoop
	EndSelect
	WEnd
	EndFunc   ;==>_Main
Modifié en dernier par Boulanza le lun. 24 août 2020 00:40, modifié 1 fois.
Boulanza
Niveau 8
Niveau 8
Messages : 565
Enregistré le : mer. 31 juil. 2013 15:49
Status : Hors ligne

Re: [..] Comment empêcher le copier-coller les termes d’un contrat (Anti-copie texte)

#2

Message par Boulanza »

$_FrhEdit = GUICtrlCreateEdit("", 2, 2, 694, 368, BitOR($ES_WANTRETURN, $WS_VSCROLL))
GUICtrlSetState($_FrhEdit,$GUI_DISABLE)

Cette solution est valable, mais je perds les couleurs du texte... Y a t'il une solution à cela. Merci
Avatar du membre
mikell
Modérateur
Modérateur
Messages : 6036
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Comment empêcher le copier-coller les termes d’un contrat (Anti-copie texte)

#3

Message par mikell »

Pour un Edit, utiliser le style $ES_READONLY (avec GUICtrlSetBkColor pour que le fond reste blanc)

Après si ce n'est pas suffisant, on peut désactiver le clic droit spécifiquement sur cet Edit :

#include <GuiConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Constants.au3>
#include <WinAPI.au3>


$hGUI = GUICreate("Test GUI", 300, 200)
$edit = GUICtrlCreateEdit("", 10, 10, 280, 180)
GUISetState()

$wProcHandle = DllCallbackRegister("_WindowProc", "ptr", "hwnd;uint;wparam;lparam")
$wProcOld = _WinAPI_SetWindowLong(GUICtrlGetHandle($edit), $GWL_WNDPROC, DllCallbackGetPtr($wProcHandle))

While 1
  $msg = GuiGetMsg()
    If $msg = $GUI_EVENT_CLOSE Then
        GUIDelete($hGui)
        DllCallbackFree($wProcHandle)
        Exit
    EndIf
WEnd


Func _WindowProc($hWnd, $Msg, $wParam, $lParam)
    Switch $hWnd
        Case GUICtrlGetHandle($edit)
            Switch $Msg
                Case $WM_CONTEXTMENU
                    Msgbox(0,"","-> Interdit")
                    Return 0
            EndSwitch
    EndSwitch
    Local $aRet = DllCall("user32.dll", "int", "CallWindowProc", "ptr", $wProcOld, _
                          "hwnd", $hWnd, "uint", $Msg, "wparam", $wParam, "lparam", $lParam)
    Return $aRet[0]
EndFunc
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Boulanza
Niveau 8
Niveau 8
Messages : 565
Enregistré le : mer. 31 juil. 2013 15:49
Status : Hors ligne

Re: [..] Comment empêcher le copier-coller les termes d’un contrat (Anti-copie texte)

#4

Message par Boulanza »

Bonjour Monsieur mikell,
Merci pour votre suggestion.
Remarques: Ctrl C et Ctrl V, il copie-colle le texte en plus on peut modifier les conditions du contrat...
je continue mes recherches...
Cordialement.
Avatar du membre
walkson
Modérateur
Modérateur
Messages : 869
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: [..] Comment empêcher le copier-coller les termes d’un contrat (Anti-copie texte)

#5

Message par walkson »

Bonjour,
Les copier-coller ne fonctionnent pas

Code : Tout sélectionner

#include <EditConstants.au3>
#include <GuiConstantsEx.au3>
#include <WindowsConstants.au3>
;===================================
Opt('MustDeclareVars', 1)
_Main()
Func _Main()
	Global $_FrhEdit, $FrOrigine001, $FrButton1, $FrOrigine002, $FrButton2,$text

	Local $Wow64 = ""
	If @AutoItX64 Then $Wow64 = "\Wow6432Node"
	Local $sFile = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE" & $Wow64 & "\AutoIt v3\AutoIt", "InstallDir") & "\include\changelog.txt"
	Local $msg, $Label2, $ButValid1, $ButValid2

	$FrOrigine001 = GUICreate("Nos Conditions :", 660, 480, -1, -1)
		$_FrhEdit = GUICtrlCreateEdit("", 2, 2, 660, 368,BitOR($ES_WANTRETURN, $WS_VSCROLL,$ES_READONLY))
		GUICtrlSetBkColor(-1, 0xFFFFFF)

	GUISetState()
	$FrButton1 = GUICtrlCreateButton("Oui j'accepte", 180, 420, 121, 25, 0)
	$FrButton2 = GUICtrlCreateButton("Non je refuse", 380, 420, 121, 25, 0)
	GUISetBkColor(0x00066CC)
	$FrOrigine002 = GUICtrlCreateLabel("Acceptez-vous les termes de ce contrat ?", 180, 380, 437, 20)
	GUICtrlSetColor(-1, 0xFCF8F8)
	GUICtrlSetFont($FrOrigine002, 12, 900, 0, "Ariel")
	GUISetState()
;===============================================================================
	$text = "En cas de litige et à défaut d'accord amiable entre les parties, le présent contrat est régi, interprété et appliqué conformément au Droit Marocain. Tout litige relatif ou découlant de l'exécution du présent contrat est soumis aux tribunaux compétents dans le ressort du siège de la société. " & @CRLF & @CRLF
	$text &= " DROIT APPLICABLE ET COMPETENCE" & @CRLF & @CRLF
	$text &= "-----------------------------------------------------------------------------------------------" & @CRLF & @CRLF
	$text &= " Dernière mise à jour: 01-01-2015 " & @CRLF & @CRLF
	$text &= " TERMES DU CONTRAT DE LICENCE" & @CRLF & @CRLF
	GUICtrlSetData($_FrhEdit,$text)
	;===============================================
	While 1
	$msg = GUIGetMsg()
	Select
	Case $msg = $GUI_EVENT_CLOSE
	ExitLoop
	Case $msg = $FrButton1
	Exit

	Case $msg = $FrButton2
	Exit
	ExitLoop
	EndSelect
	WEnd
	EndFunc   ;==>_Main


Je ne connais pas la législation marocaine mais il me semble que de préciser que l'original est déposé et disponible à une certaine adresse est suffisant.
De plus, modifier les termes d'un contrat est illégal et enfin, modifier le contrat affiché sur le programme n'apporte rien puisqu'il n'est pas enregistré...
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Boulanza
Niveau 8
Niveau 8
Messages : 565
Enregistré le : mer. 31 juil. 2013 15:49
Status : Hors ligne

Re: [..] Comment empêcher le copier-coller les termes d’un contrat (Anti-copie texte)

#6

Message par Boulanza »

Bonjour Monsieur Walkson,
Merci infiniment pour vos suggestions: Impossible de faire copier-coller
J'ai juste une petite question: Peut on insérer des graphiques ou des images accompagnant le texte ($text &= image.jpg) ? Si c'est possible comment réaliser cela ? Merci.
Cordialement.

Code : Tout sélectionner

#include <EditConstants.au3>
#include <GuiConstantsEx.au3>
#include <WindowsConstants.au3>
;===================================
Opt('MustDeclareVars', 1)
_Main1()
Func _Main1()
	Global $_FrhEdit, $FrOrigine001, $FrButton1, $FrOrigine002, $FrButton2,$text, $text2

	Local $Wow64 = ""
	If @AutoItX64 Then $Wow64 = "\Wow6432Node"
	Local $sFile = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE" & $Wow64 & "\AutoIt v3\AutoIt", "InstallDir") & "\include\changelog.txt"

	Local $msg, $Label2, $ButValid1, $ButValid2

	$FrOrigine001 = GUICreate("Nos Conditions :", 1170, 880, -1, -1)

	$_FrhEdit = GUICtrlCreateEdit("", 2, 2, 1194, 768, BitOR($ES_WANTRETURN, $WS_VSCROLL))
	GUICtrlSetState($_FrhEdit,$GUI_DISABLE)
	GUICtrlSetBkColor(-1, 0xFFFFFF)
     GUICtrlSetFont($_FrhEdit, 12, 900, 0, "Ariel")
	GUISetState()

	$FrButton1 = GUICtrlCreateButton("Oui j'accepte", 420, 820, 121, 25, 0)
	$FrButton2 = GUICtrlCreateButton("Non je refuse", 580, 820, 121, 25, 0)
	GUISetBkColor(0x00066CC)

	$FrOrigine002 = GUICtrlCreateLabel("Acceptez-vous les termes de ce contrat ?", 400, 780, 437, 20)
		GUICtrlSetColor(-1, 0xFCF8F8)
	GUICtrlSetFont($FrOrigine002, 12, 900, 0, "Ariel")
	GUISetState()
;===============================================================================
	$text = " En cas de litige et à défaut d'accord amiable entre les parties, le présent contrat est régi, interprété et appliqué conformément au Droit Marocain. Tout litige relatif ou découlant de l'exécution du présent contrat est soumis aux tribunaux compétents dans le ressort du siège de la société. " & @CRLF & @CRLF
	$text &= " En cas de litige et à défaut d'accord amiable entre les parties, le présent contrat est régi, interprété et appliqué conformément au Droit Marocain. Tout litige relatif ou découlant de l'exécution du présent contrat est soumis aux tribunaux compétents dans le ressort du siège de la société. " & @CRLF & @CRLF
	$text &= " DROIT APPLICABLE ET COMPETENCE" & @CRLF & @CRLF
	$text &= "-----------------------------------------------------------------------------------------------" & @CRLF & @CRLF
	$text &= " Dernière mise à jour: 01-01-2015 " & @CRLF & @CRLF
	$text &= " TERMES DU CONTRAT DE LICENCE" & @CRLF & @CRLF
	GUICtrlSetData($_FrhEdit,$text)
	;===============================================
	While 1
	$msg = GUIGetMsg()
	Select
	Case $msg = $GUI_EVENT_CLOSE
	ExitLoop
	Case $msg = $FrButton1
	Exit

	Case $msg = $FrButton2
	Exit
	ExitLoop
	EndSelect
	WEnd
	EndFunc   ;==>_Main
Boulanza
Niveau 8
Niveau 8
Messages : 565
Enregistré le : mer. 31 juil. 2013 15:49
Status : Hors ligne

Re: [..] Comment empêcher le copier-coller les termes d’un contrat (Anti-copie texte)

#7

Message par Boulanza »

Pour Walkson,
Actuellement, avec les nouvelles technologies, tout est falsifiable par colonage ... Les contrats ne sont plus sur papier, il sont sous forme numérique, il est de même pour l'imagerie médicale: L'image d'un foie malade peut être remplacé sur un cliché numérique par un foie sain, ceci est dans le bute de prescrire une assurance vie...
Avatar du membre
walkson
Modérateur
Modérateur
Messages : 869
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: [..] Comment empêcher le copier-coller les termes d’un contrat (Anti-copie texte)

#8

Message par walkson »

En tout cas, pour le contrat d'assurance, je l'ai reçu par mail et je l'ai renvoyé par courrier (pas eu le choix !)
Concernant un "édit" avec texte et image, il y a deux solutions, soit en HTML avec _IECreateEmbedded(), soit en RTF avec _GUICtrlRichEdit_Create()
Je vous propose en RTF, vous créez un fichier avec texte et image avec WordPad et vous modifiez le chemin $rtf = FileRead(@ScriptDir & "\RTF\aa.rtf") Idem pour les chemins des images (en BMP)

Code : Tout sélectionner

#include <GUIConstantsEx.au3>
#include <GuiRichEdit.au3>
#include <WindowsConstants.au3>
$rtf = FileRead(@ScriptDir & "\RTF\aa.rtf") ;Modifier le chemin


    Local $hGui, $iMsg, $idBtnExit, $hRichEdit
    $hGui = GUICreate("Example (" & StringTrimRight(@ScriptName, StringLen(".exe")) & ")", 520, 550, -1, -1)
    $hRichEdit = _GUICtrlRichEdit_Create($hGui, "", 10, 10, 500, 490, _
            BitOR($ES_MULTILINE, $WS_VSCROLL, $ES_AUTOVSCROLL))
    $idBtnExit = GUICtrlCreateButton("Exit", 10, 510, 40, 30)
    GUISetState(@SW_SHOW)
	_GUICtrlRichEdit_SetBkColor ($hRichEdit,Dec('D8F8F8'))
	_GUICtrlRichEdit_InsertText($hRichEdit, "Inserting image..." & @LF & @LF)
	_GUICtrlRichEdit_AppendText($hRichEdit, $rtf)
	_GUICtrlRichEdit_SetParaAlignment($hRichEdit, "c")
$bmp = ReadBmpToRtf(@ScriptDir & "\Image4RTF.bmp") ;Modifier le chemin
_GUICtrlRichEdit_AppendText($hRichEdit, $bmp)
_GUICtrlRichEdit_AppendText($hRichEdit, @CRLF)
$pic = lireRTF()
_GUICtrlRichEdit_AppendText($hRichEdit, $pic)
_GUICtrlRichEdit_AppendText($hRichEdit, @CRLF)
$bmp = ReadBmpToRtf(@ScriptDir & "\aa.bmp") ;Modifier le chemin
_GUICtrlRichEdit_AppendText($hRichEdit, $bmp)
	    While True
        Switch GUIGetMsg()
			Case $GUI_EVENT_CLOSE, $idBtnExit
				_GUICtrlRichEdit_Deselect ( $hRichEdit)
				_GUICtrlRichEdit_StreamToFile($hRichEdit, @DesktopDir & "\gcre.rtf")
                _GUICtrlRichEdit_Destroy($hRichEdit) ; needed unless script crashes
                GUIDelete()
                Exit
        EndSwitch
		WEnd
Func ReadBmpToRtf($sBmpFilspc)
	Local $hFile, $sRtf
	$hFile = FileOpen($sBmpFilspc, 16)
	If FileRead($hFile, 2) <> "0x424D" Then Return SetError(1, 0, "")
	FileRead($hFile, 12)
	$sRtf = '{\rtf1{\pict\dibitmap ' & Hex(FileRead($hFile)) & '}}'
	FileClose($hFile)
	Return $sRtf
EndFunc   ;==>ReadBmpToRtf
Func lireRTF()
$val ="{\rtf1\ansi\deff0\adeflang1025"
$val &="{\fonttbl{\f0\froman\fprq2\fcharset0 Times New Roman;}{\f1\froman\fprq2\fcharset0 Times New Roman;}{\f2\fswiss\fprq2\fcharset0 Arial;}{\f3\fnil\fprq2\fcharset0 SimSun;}{\f4\fswiss\fprq2\fcharset128 Arial;}{\f5\froman\fprq2\fcharset128 Times New Roman;}{\f6\froman\fprq2\fcharset0 Times New Roman;}{\f7\fnil\fprq2\fcharset0 SimSun;}{\f8\fnil\fprq2\fcharset0 Tahoma;}{\f9\fnil\fprq0\fcharset0 Tahoma;}}"
$val &="{\colortbl;\red0\green0\blue0;\red255\green255\blue0;\red228\green228\blue228;}"
$val &=""
$val &=""
$val &="\trowd\trqc\trpaddft3\trpaddt0\trpaddfl3\trpaddl10\trpaddfb3\trpaddb0\trpaddfr3\trpaddr10"
$val &="\clbrdrt\brdrs\brdrw10\brdrcf15\clbrdrl\brdrs\brdrw10\brdrcf15\clbrdrb\brdrs\brdrw10\brdrcf15\clcbpat3\cellx2000"
$val &="\clbrdrt\brdrs\brdrw10\brdrcf15\clbrdrl\brdrs\brdrw10\brdrcf15\clbrdrb\brdrs\brdrw10\brdrcf15\clcbpat2\cellx5521"
$val &="\clbrdrt\brdrs\brdrw10\brdrcf15\clbrdrl\brdrs\brdrw10\brdrcf15\clbrdrb\brdrs\brdrw10\brdrcf15\clbrdrr\brdrs\brdrw10\brdrcf15\clcbpat2\cellx7600"
$val &="\pard\intbl\pard\plain \intbl\ltrpar\s1\cf0\rtlch\af3\afs24\ltrch\dbch\af3\f3\fs24\loch\f3\fs24 {\rtlch \ltrch\loch\f3\fs24\i0\b0 AABB}"
$val &="\cell\pard\plain \intbl\ltrpar\s1\cf0\rtlch\af3\afs24\ltrch\dbch\af3\f3\fs24\loch\f3\fs24 {\rtlch \ltrch\loch\f3\fs24\i0\b0 AABB}"
$val &="\cell\pard\plain \intbl\ltrpar\s1\cf0\rtlch\af3\afs24\ltrch\dbch\af3\f3\fs24\loch\f3\fs24 {\rtlch \ltrch\loch\f3\fs24\i0\b0 AABB}"
$val &=""
$val &="\cell\row\pard \trowd\trqc\trpaddft3\trpaddt0\trpaddfl3\trpaddl10"
$val &="\trpaddfb3\trpaddb0\trpaddfr3\trpaddr10\clbrdrl\brdrs\brdrw10\brdrcf15\clbrdrb\brdrs\brdrw10\brdrcf15\cellx2000"
$val &="\clbrdrl\brdrs\brdrw10\brdrcf15\clbrdrb\brdrs\brdrw10\brdrcf15\cellx5521"
$val &="\clbrdrl\brdrs\brdrw10\brdrcf15\clbrdrb\brdrs\brdrw10\brdrcf15\clbrdrr\brdrs\brdrw10\brdrcf15\cellx7600"
$val &="\pard\intbl\pard\plain \intbl\ltrpar\s1\cf0\rtlch\af0\afs24\ltrch\dbch\af0\f0\fs24\loch\f0\fs24 {\rtlch \ltrch\loch\f0\fs24\i0\b0 BBBB}"
$val &="\cell\pard\plain \intbl\ltrpar\s1\cf0\rtlch\af5\afs24\ltrch\dbch\af5\f5\fs24\loch\f5\fs24 {\rtlch \ltrch\loch\f5\fs24\i0\b0 BBBB}"
$val &="\cell\pard\plain \intbl\ltrpar\s1\cf0\rtlch\af5\afs24\ltrch\dbch\af5\f5\fs24\loch\f5\fs24 {\rtlch \ltrch\loch\f5\fs24\i0\b0 BBBB}"
$val &=""
$val &="\cell\row\pard \trowd\trqc\trpaddft3\trpaddt0\trpaddfl3\trpaddl10\trpaddfb3\trpaddb0\trpaddfr3\trpaddr10"
$val &="\clbrdrl\brdrs\brdrw10\brdrcf15\clbrdrb\brdrs\brdrw10\brdrcf15\cellx2000"
$val &="\clbrdrl\brdrs\brdrw10\brdrcf15\clbrdrb\brdrs\brdrw10\brdrcf15\cellx5521"
$val &="\clbrdrl\brdrs\brdrw10\brdrcf15\clbrdrb\brdrs\brdrw10\brdrcf15\clbrdrr\brdrs\brdrw10\brdrcf15\cellx7600"
$val &="\pard\intbl\pard\plain \intbl\ltrpar\s1\cf0\rtlch\af4\afs24\ab\ltrch\dbch\af4\f4\fs24\b\loch\f4\fs24\b {\rtlch \ltrch\loch\f4\fs24\i0\b CCCC}"
$val &="\cell\pard\plain \intbl\ltrpar\s1\cf0\rtlch\af4\afs24\ab\ltrch\dbch\af4\f4\fs24\b\loch\f4\fs24\b {\rtlch \ltrch\loch\f4\fs24\i0\b CCCC}"
$val &="\cell\pard\plain \intbl\ltrpar\s1\cf0\rtlch\af4\afs24\ab\ltrch\dbch\af4\f4\fs24\b\loch\f4\fs24\b {\rtlch \ltrch\loch\f4\fs24\i0\b CCCC}"
$val &="\cell\row\pard \pard\plain \ltrpar\s1\cf0\rtlch\af3\afs24\ltrch\dbch\af3\f3\fs24\loch\f3\fs24"
$val &="\par }"
Return $val
EndFunc
La fonction lireRTF() est réalisée avec ce code (WriteRtf.au3 peut être en include)

Code : Tout sélectionner

$i = 0
$file = FileOpen("WriteRtf.au3",8 + 2)
FileWriteLine($file,"Func lireRTF()")
While 1
	$i += 1
	$line = FileReadLine(@ScriptDir & "\RTF\ff.rtf",$i) ;chemin à modifier
	If @error = -1 Then ExitLoop
	If $i = 1 Then
	FileWriteLine($file,'$val ="' & $line&'"')
	Else
	FileWriteLine($file,'$val &="' & $line&'"')
	EndIf
WEnd
FileWriteLine($file,"Return $val" )
FileWriteLine($file,"EndFunc")
FileClose($file)
Cela vous donne les différentes possibilités.
Le code ci-dessous vient d'UEZ du forum US (autres possibilités :mrgreen: )

Code : Tout sélectionner

#include <GDIPlus.au3>
#include <GUIConstantsEx.au3>
#include <GuiRichEdit.au3>
#include <WindowsConstants.au3>

Example()

Func Example()
    Local $hGui, $iMsg, $idBtnExit, $hRichEdit
    $hGui = GUICreate("Example (" & StringTrimRight(@ScriptName, StringLen(".exe")) & ")", 520, 550, -1, -1)
    $hRichEdit = _GUICtrlRichEdit_Create($hGui, "This is a test.", 10, 10, 500, 490, _
            BitOR($ES_MULTILINE, $WS_VSCROLL, $ES_AUTOVSCROLL))
    $idBtnExit = GUICtrlCreateButton("Exit", 10, 510, 40, 30)
    GUISetState(@SW_SHOW)

    _GUICtrlRichEdit_InsertText($hRichEdit, "Inserting image..." & @LF & @LF)
    _GUICtrlRichEdit_InsertText($hRichEdit, @LF & "JPG image scaled:" & @LF & @LF)
    _GUICtrlRichEdit_InsertBitmap($hRichEdit, "c:\Program Files\AutoIt3\Examples\GUI\mslogo.jpg", "\qc", "\picw6747\pich1058\picwgoal6690\pichgoal1860\") ;\qc = centered
    _GUICtrlRichEdit_InsertText($hRichEdit, @LF & @LF & "PNG image:" & @LF & @LF)
    _GUICtrlRichEdit_InsertBitmap($hRichEdit, "c:\Program Files\AutoIt3\Examples\GUI\Torus.png")
    _GUICtrlRichEdit_InsertText($hRichEdit, @LF & @LF & "Done.")

    While True
        Switch GUIGetMsg()
            Case $GUI_EVENT_CLOSE, $idBtnExit
                _GUICtrlRichEdit_Destroy($hRichEdit) ; needed unless script crashes
                GUIDelete()
                Exit
        EndSwitch
    WEnd
EndFunc   ;==>Example

Func _GUICtrlRichEdit_InsertBitmap($hWnd, $sFile, $sFormatFunctions = "\", $sBitmapFunctions = "\", $iBgColor = Default) ;coded by UEZ build 2016-02-16
    If Not FileExists($sFile) Then Return SetError(0, 0, 1)
    If Not _WinAPI_IsClassName($hWnd, $__g_sRTFClassName) Then Return SetError(0, 0, 2)
    _GDIPlus_Startup()
    Local $hImage = _GDIPlus_ImageLoadFromFile($sFile)
    If @error Then
        _GDIPlus_Shutdown()
        Return SetError(0, 0, 3)
    EndIf
    Local Const $aDim = _GDIPlus_ImageGetDimension($hImage)
    Local Const $hBitmap = _GDIPlus_BitmapCreateFromScan0($aDim[0], $aDim[1]), $hGfx = _GDIPlus_ImageGetGraphicsContext($hBitmap)
    If $iBgColor = Default Then
        $iBgColor = 0xFF000000 + _WinAPI_SwitchColor(_GUICtrlRichEdit_GetBkColor($hWnd))
    EndIf
    _GDIPlus_GraphicsClear($hGfx, $iBgColor)
    _GDIPlus_GraphicsDrawImageRect($hGfx, $hImage, 0, 0, $aDim[0], $aDim[1])
    _GDIPlus_GraphicsDispose($hGfx)
    Local $binStream = _GDIPlus_StreamImage2BinaryString($hBitmap, "BMP")
    If @error Then
        _GDIPlus_ImageDispose($hImage)
        _GDIPlus_ImageDispose($hBitmap)
        _GDIPlus_Shutdown()
        Return SetError(0, 0, 4)
    EndIf
    Local $binBmp = StringMid($binStream, 31)
    Local Const $binRtf = "{\rtf1\viewkind4" & $sFormatFunctions & " {\pict{\*\picprop}" & $sBitmapFunctions & "dibitmap " & $binBmp & "}\par}" ;check out http://www.biblioscape.com/rtf15_spec.htm
    _GUICtrlRichEdit_AppendText($hWnd, $binRtf)
    $binStream = 0
    $binBmp = 0
    _GDIPlus_ImageDispose($hImage)
    _GDIPlus_ImageDispose($hBitmap)
    _GDIPlus_Shutdown()
    Return 1
EndFunc   ;==>_GUICtrlRichEdit_InsertBitmap

Func _GDIPlus_StreamImage2BinaryString($hBitmap, $sFormat = "JPG", $iQuality = 80, $bSave = False, $sFileName = @ScriptDir & "\Converted.jpg") ;coded by UEZ 2013 build 2014-01-25 (based on the code by Andreik)
    Local $sImgCLSID, $tGUID, $tParams, $tData
    Switch $sFormat
        Case "JPG"
            $sImgCLSID = _GDIPlus_EncodersGetCLSID($sFormat)
            $tGUID = _WinAPI_GUIDFromString($sImgCLSID)
            $tData = DllStructCreate("int Quality")
            DllStructSetData($tData, "Quality", $iQuality) ;quality 0-100
            Local $pData = DllStructGetPtr($tData)
            $tParams = _GDIPlus_ParamInit(1)
            _GDIPlus_ParamAdd($tParams, $GDIP_EPGQUALITY, 1, $GDIP_EPTLONG, $pData)
        Case "PNG", "BMP", "GIF", "TIF"
            $sImgCLSID = _GDIPlus_EncodersGetCLSID($sFormat)
            $tGUID = _WinAPI_GUIDFromString($sImgCLSID)
        Case Else
            Return SetError(1, 0, 0)
    EndSwitch
    Local $hStream = _WinAPI_CreateStreamOnHGlobal() ;http://msdn.microsoft.com/en-us/library/ms864401.aspx
    If @error Then Return SetError(2, 0, 0)
    _GDIPlus_ImageSaveToStream($hBitmap, $hStream, DllStructGetPtr($tGUID), DllStructGetPtr($tParams))
    If @error Then Return SetError(3, 0, 0)

    Local $hMemory = _WinAPI_GetHGlobalFromStream($hStream) ;http://msdn.microsoft.com/en-us/library/aa911736.aspx
    If @error Then Return SetError(4, 0, 0)
    Local $iMemSize = _MemGlobalSize($hMemory)
    If Not $iMemSize Then Return SetError(5, 0, 0)
    Local $pMem = _MemGlobalLock($hMemory)
    $tData = DllStructCreate("byte[" & $iMemSize & "]", $pMem)
    Local $bData = DllStructGetData($tData, 1)
    _WinAPI_ReleaseStream($hStream) ;http://msdn.microsoft.com/en-us/library/windows/desktop/ms221473(v=vs.85).aspx
    _MemGlobalFree($hMemory)
    If $bSave Then
        Local $hFile = FileOpen($sFileName, 18)
        If @error Then Return SetError(6, 0, $bData)
        FileWrite($hFile, $bData)
        FileClose($hFile)
    EndIf
    Return $bData
EndFunc   ;==>_GDIPlus_StreamImage2BinaryString
Func _GDIPlus_ImageGetDimension_1($hImage)
	Local $size[2]
	$size[0] = _GDIPlus_ImageGetWidth ( $hImage )
	$size[1] = _GDIPlus_ImageGetHeight ( $hImage )
	Return $size
EndFunc
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Avatar du membre
mikell
Modérateur
Modérateur
Messages : 6036
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Comment empêcher le copier-coller les termes d’un contrat (Anti-copie texte)

#9

Message par mikell »

Sinon pour "verrouiller" efficacement un Edit, on peut aussi (le code est long et compliqué, pas le temps de mettre) mettre un Label transparent par dessus :wink:
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
walkson
Modérateur
Modérateur
Messages : 869
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: [..] Comment empêcher le copier-coller les termes d’un contrat (Anti-copie texte)

#10

Message par walkson »

Le gros chat vert fait de l'arthrose dans les pattes doigts ? :lol:
bon, je :arrow:
:mrgreen:
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Boulanza
Niveau 8
Niveau 8
Messages : 565
Enregistré le : mer. 31 juil. 2013 15:49
Status : Hors ligne

Re: [R] Comment empêcher le copier-coller les termes d’un contrat (Anti-copie texte)

#11

Message par Boulanza »

Bonsoir tout le mode,
Merci infiniment pour votre aide.
Cordialement.
Répondre