Page 1 sur 1

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

Posté : dim. 23 août 2020 11:59
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

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

Posté : dim. 23 août 2020 12:37
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

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

Posté : dim. 23 août 2020 12:44
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

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

Posté : dim. 23 août 2020 14:01
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.

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

Posté : dim. 23 août 2020 15:11
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é...

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

Posté : dim. 23 août 2020 16:09
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

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

Posté : dim. 23 août 2020 16:37
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...

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

Posté : dim. 23 août 2020 21:42
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

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

Posté : dim. 23 août 2020 22:00
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:

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

Posté : dim. 23 août 2020 22:37
par walkson
Le gros chat vert fait de l'arthrose dans les pattes doigts ? :lol:
bon, je :arrow:
:mrgreen:

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

Posté : lun. 24 août 2020 00:43
par Boulanza
Bonsoir tout le mode,
Merci infiniment pour votre aide.
Cordialement.