[..] Message à l'ouverture d'un fichier

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Doc
Niveau 1
Niveau 1
Messages : 13
Enregistré le : lun. 12 sept. 2011 20:07
Status : Hors ligne

[..] Message à l'ouverture d'un fichier

#1

Message par Doc »

Bonjour à tous, je me suis mis en tête de faire un petit script permettant lors de l'ouverture d'un fichier de demander un mot de passe.

Seulement, je ne trouve pas de fonction me permettant lors de l'ouverture du fichier d'afficher par exemple, une Msgbox

Voiçi le type de code, Run étant une tentative raté (normal...) :

Code : Tout sélectionner

$Chemin = "C:\Users\Doc\Downloads\Recherche.png"
If Run($Chemin) Then
    MsgBox(64, "Information", "Fenêtre ouverte !")
EndIf
 
Merci d'avance :D

Doc
Avatar du membre
moi
Niveau 7
Niveau 7
Messages : 370
Enregistré le : sam. 09 juil. 2011 22:14
Localisation : devant sont ordinateur
Status : Hors ligne

Re: [...]Message à l'ouverture d'un fichier

#2

Message par moi »

Code : Tout sélectionner

shellexecute($chemin)
le problème ce n'est pas un problème, le seul problème ici c'est nous.

j'aime NYAN CAT Image
Doc
Niveau 1
Niveau 1
Messages : 13
Enregistré le : lun. 12 sept. 2011 20:07
Status : Hors ligne

Re: [...]Message à l'ouverture d'un fichier

#3

Message par Doc »

Le ShellExecute ne convient pas, il ouvre automatiquement le fichier, je veux que la Msgbox s'affiche lorsque l'utilisateur lui même ouvre le fichier.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [...] Message à l'ouverture d'un fichier

#4

Message par mikell »

Ce genre de truc devrait le faire
► Afficher le texte
" 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
Tlem
Site Admin
Site Admin
Messages : 11830
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [...] Message à l'ouverture d'un fichier

#5

Message par Tlem »

Cela manque de clarté. :shock:

Vous voulez afficher une boite de dialogue demandant la saisie d'un mot de passe lorsqu'un utilisateur ouvre un fichier spécifique (Ou n'importe quel fichier) par le biais de l'explorer de Windows ?
Ou bien,
Vous voulez afficher une boite de dialogue demandant la saisie d'un mot de passe lorsqu'un utilisateur choisit l'ouverture d'un fichier par le biais d'un selecteur de fichiers AutoIt ?

Pour le cas 1, cela va être plutôt délicat selon le type de fichier.
L'utilisation de la gestion des droits Windows serait bien plus approprié.

Pour le cas 2, cela sera plus simple (mais j'ai comme l'impression que c'est plutôt le cas 1 que vous recherchez ... :mrgreen: ).
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Doc
Niveau 1
Niveau 1
Messages : 13
Enregistré le : lun. 12 sept. 2011 20:07
Status : Hors ligne

Re: [...] Message à l'ouverture d'un fichier

#6

Message par Doc »

En clair, voici le script qui permet de choisir un fichier où mettre un mot de passe :

Code : Tout sélectionner

#RequireAdmin
#include <Constants.au3>
#include <EditConstants.au3>
#Include <File.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Include <Crypt.au3>
#Region ### START Koda GUI section ### Form=C:\Users\Sam\Desktop\AutoIT\FileProtect\Koda\FileProtect.kxf
Global $FileProtect = GUICreate("Configuration de FileProtect", 500, 255, 192, 124)
GUISetBkColor(0xFFFFFF)
Global $Chemin = GUICtrlCreateInput("", 120, 72, 265, 21)
GUICtrlSetState(-1, $GUI_DISABLE)
Global $Recherche = GUICtrlCreatePic(@ScriptDir & "\Data\Images\Recherche.jpg", 225, 8, 50, 50)
GUICtrlSetTip($Recherche, "Parcourir")
Global $Protection = GUICtrlCreatePic(@ScriptDir & "\Data\Images\Bouclier.jpg", 230, 170, 50, 50)
GUICtrlSetTip($Protection, "Sécuriser le fichier")
Global $Demarrage = GUICtrlCreateCheckbox("Protection au Démarrage", 8, 235, 145, 17)
$MsgBoxDemarrage = 0
Global $Label1 = GUICtrlCreateLabel("Mot de Passe pour le fichier (Obligatoire) :", 152, 104, 200, 17)
Global $Input2 = GUICtrlCreateInput("", 120, 136, 265, 21, BitOR($ES_CENTER,$ES_PASSWORD,$ES_AUTOHSCROLL))
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

Dim $Algo = $CALG_3DES
Dim $CheminFileProtect = @ScriptDir
Dim $FichierDemarrage = @ScriptDir & "\Data\Fichiers\Demarrage.ini"
Dim $Add = @ScriptDir & "\Data\Fichiers\Add.ini"


If Not FileExists($FichierDemarrage) Then
    MsgBox(16, "Erreur", "Le fichier 'Data\Fichiers\Demarrage.ini' est introuvable !")
    Exit
EndIf
While 1

 $Msg = GUIGetMsg()

 If $Msg = $GUI_EVENT_CLOSE Then  Exit

 If $Msg = $Recherche Then
Dim $FichierProtection = FileOpenDialog("FileProtect", "C:\", "Tous (*.*)", 1)
    GUICtrlSetData($Chemin, $FichierProtection)
EndIf

If _IsChecked($Demarrage) Then
FileOpen($FichierDemarrage)
RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run", "FileProtect.exe", "REG_SZ", $CheminFileProtect)
_FileWriteToLine($FichierDemarrage, 1, "Lancement du Logiciel au démarrage de l'ordinateur = True", 1)
While $MsgBoxDemarrage = 0
MsgBox(64, "Information", "Le logiciel ce lançera au démarrage de l'ordinateur.")
$MsgBoxDemarrage = 1
FileClose($FichierDemarrage)
WEnd
Else
$MsgBoxDemarrage = 0
_FileWriteToLine($FichierDemarrage, 1, "Lancement du Logiciel au démarrage de l'ordinateur = False", 1)
RegDelete("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run", "FileProtect.exe")
EndIf

If $Msg = $Protection Then

Dim $FichierProtection = @ScriptDir & "\Data\Fichiers\Protection.ini"

FileOpen($FichierProtection, 1)
FileOpen($Add, 1)

Dim $FichierProteger = GUICtrlRead($Chemin)
Dim $Pass = GUICtrlRead($Input2)
Dim $PassCrypt = _Crypt_EncryptData($Pass, "Password", $Algo)
Dim $AddValue = FileReadLine($Add, 1)

If $AddValue = "" Then
    MsgBox(16, "Erreur", "Le fichier Data\Fichiers\Add.ini est corrompu, veuillez entrer une valeur différente de 0.")
    Exit
EndIf

If $AddValue = "0" Then
    MsgBox(16, "Erreur", "Le fichier Data\Fichiers\Add.ini est corrompu, veuillez entrer une valeur différente de 0.")
    Exit
EndIf

If $FichierProteger = "" Then
MsgBox(16, "Erreur", "Il n'y a aucun fichier à proteger !")
ElseIf $Pass = "" Then
    MsgBox(16, "Erreur", "Il n'y a aucun Mot de Passe !")
ElseIf $Pass And $Chemin <> "" Then
_FileWriteToLine($FichierProtection, $AddValue, $FichierProteger, 1)
$AddValue = $AddValue + 1
_FileWriteToLine($Add, 1, $AddValue, 1)
_FileWriteToLine($FichierProtection, $AddValue, $PassCrypt, 1)
$AddValue = $AddValue + 1
_FileWriteToLine($Add, 1, $AddValue, 1)
FileClose($FichierProtection)
FileClose($Add)
MsgBox(64, "Information", "Fichier protegé avec succès !")
EndIf
EndIf

If Not ProcessExists("FileProtect.exe") Then
    Run(@ScriptDir & "\FileProtect.exe")
EndIf

WEnd


Func _IsChecked($Check)
    Return BitAnd(GUICtrlRead($Check),$GUI_CHECKED) = $GUI_CHECKED
EndFunc
Ensuite, je voudrais un autre script qui en fonction du fichier à proteger choisit par l'utilisateur, affiche une InputBox qui demande un mot de passe pour démarrer le fichier.

(Il me manque juste la partie pour l'affichage de l'inputbox à l'ouverture du fichier...)

J'espère que c'est plus clair :P

Doc
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11830
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [...] Message à l'ouverture d'un fichier

#7

Message par Tlem »

Doc a écrit :J'espère que c'est plus clair :P
Non !!!

Comment ce fichier est-il sensé être lancé ?
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Doc
Niveau 1
Niveau 1
Messages : 13
Enregistré le : lun. 12 sept. 2011 20:07
Status : Hors ligne

Re: [...] Message à l'ouverture d'un fichier

#8

Message par Doc »

Hum, je vais essayer de décrire par étapes :

Etape 1 - L'utilisateur sélectionne un fichier (Exemple.txt), et lui met un mot de passe.

Etape 2 - L'utilisateur essaye d'ouvrir Exemple.txt mais avant l'ouverture du Fichier une InputBox apparaît et demande le mot de passe.

Etape 3 - Si le mot de passe est bon, le fichier s'ouvre, sinon il ne s'ouvre pas.

Voila ce que je voudrais faire, le problème est que je ne trouve pas comment faire pour que le script détecte l'ouverture de Exemple.txt...
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11830
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [...] Message à l'ouverture d'un fichier

#9

Message par Tlem »

Vous ne répondez malheureusement toujours pas à ma question :
Comment ce fichier est-il sensé être lancé ?

Malgré votre réponse évasive, j'entrevois la possibilité que vous cherchez à intercepter le lancement ou l'ouverture d'un fichier par un double clic dessus ! :mrgreen:
Et dans ce cas, ma réponse pour le cas N°1 de mon message http://www.autoitscript.fr/forum/viewto ... 065#p56065 reste la solution.

L'interception du lancement d'un fichier/programme reste possible sous certaines conditions, mais j'ai bien peur que selon différents critères la totalité des actions possibles ne soient pas envisageable.
Pour un fichier, celui-ci peut être lancé par :
- Un double clic
- Un clic droit, puis exécuter
- Par le menu démarrer puis exécuter
- Par le lancement à partir d'un programme tiers (batch, script, etc ...)
et sans doute d'autres méthodes auxquelles je ne pense pas à cette heure avancée de la soirée.

Comme je l'ai dit, il reste possible d'intercepter le lancement de certains type de fichiers, tel par exemple un fichier texte.
Il suffit de vérifier si dans le titre d'une application en cours ou qui vient d'être lancée, le nom du fichier en cours d'édition s'y trouve. Ceci dit, la protection reste illusoire, car il suffit de renommer le fichier ou de le copier sur une clé USB pour le lire à partir d'un autre PC.

Bref, faites ce que vous voulez, mais pour moi, la seule et unique manière de protéger un fichier d'une lecture non désirée reste la gestion des droits utilisateurs par Windows.
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [...] Message à l'ouverture d'un fichier

#10

Message par mikell »

Tlem a écrit :Il suffit de vérifier si dans le titre d'une application en cours ou qui vient d'être lancée, le nom du fichier en cours d'édition s'y trouve.
Tiens ? comment diable n'y a-t-on pas pensé avant :mrgreen:
(disons, 5 posts avant... :P )
" 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
Tlem
Site Admin
Site Admin
Messages : 11830
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [...] Message à l'ouverture d'un fichier

#11

Message par Tlem »

@mikell, je n'avais effectivement pas regardé votre code en détail.
Ceci dit, j'ai l'intime conviction que ce n'est pas ce que Doc souhaite faire, donc c'est pour cela que je répète en détails les possibilités. :mrgreen:
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Répondre