Page 1 sur 1

Un petit prog pour se logger sur les sites Web

Publié : dim. 06/juil./2008 20:01
par nico
J'ai détourné un petit logiciel dont je me sert au boulot, pour en faire un petit logiciel de login de site web sans prétention.

C'est un prog qui se cache sur le coté droit de l'écran ne laissant apparaître que sa bordure, un click droit sur celle-ci fait apparaître le programme. Au bout de 2 seconde la fenêtre se rabat sur le coté.

On clique sur le bouton créer un fichier, on rentre un nom de fichier avec l'extension .txt, ensuite le bloc note se lance et on rentre les données de cette façon:

Par exemple pour me logger sur le site de PureBasic,
je tape: PureBasic<touche TAB>http://www.purebasic.fr<touche TAB>Mon Login*Mon mot de passe
(l'* permet de séparer le login du mot de passe)

Je fais ensuite fichier enregistrer, puis fichier quitter.

Le nom PureBasic apparait maintenant dans la listicon avec les autres informations.

Un click droit sur PureBasic affiche un menu permettant d'afficher la page web, ensuite pour coller les informations de login, il faut double cliquer sur PureBasic puis ensuite cliquer dans les champs de login et du mot de passe de la page web.

Eh oui ça le fait pas tout seul :lol: mais ça marche bien, pour cela je fais un coller en simulant un shift+insert. Avant de coller il efface les données écrites dans le champ.


Voici le prog:

Code : Tout sélectionner

;{-Structure ListeFichier
Structure Nom
    Nom.s
EndStructure
;}

;{-Structure ListeIcon
Structure ListIcon
    Texte.s
EndStructure
;}

Global NewList ListeFichier.Nom()
Global NewList List.ListIcon()

Global hMutex,Texte.s,Couleur.l,MemTexte1.s,MemTexte2.s,MemFichier.s,NouveauFichier.s

Prog.s="Log"

SetLastError_(#NO_ERROR)

hMutex.l= CreateMutex_(#Null, #False, @Prog)
Erreur.l = GetLastError_()
If ( Erreur = #ERROR_ALREADY_EXISTS ) Or ( Erreur = #ERROR_ACCESS_DENIED )
    MessageRequester("Info","Vous ne pouvez lancer qu'une seule instance du programme: Log.exe")
    End
EndIf

;{- Enumerations Fenêtre pricipale
;{ Windows
Enumeration
    #Main
EndEnumeration
;}
;{ Gadgets
Enumeration
	#Text_0
	#ListIcon1
	#ComboBox_Liste
	#Couleur
	#ButtonQuitter
	#Creer_Fichier
	#Editer_Fichier
	#Supprimer_Fichier
	#Image_Gauche
	#Image_Haut
	#Image_Bas
	#Image_Droite
EndEnumeration
;}
;{ Font
Enumeration
    #Font1
    #Font2
    #Font3
EndEnumeration
;}
;{ Image
Enumeration
    #Image1
    #Image2
    #Image3
    #Image4
EndEnumeration
;}
;{ PopupMenu
Enumeration
	#ContextMenu
	#Web
EndEnumeration
;}
;}

;{- Enumerations Fenêtre Aide
;{ Windows
Enumeration 100
    #Window_0
EndEnumeration
;}
;{ Gadgets
Enumeration 100
    #Texte_Info
    #Text_coller
    #Text_Info2
EndEnumeration
;}
;}

;{- Enumerations Dialog
;{ Windows
Enumeration 200
	#Dialog
EndEnumeration
;}
;{ Gadgets
Enumeration 200
	#Dialog_Text
	#Dialog_String
	#Dialog_Valider
	#Dialog_Annuler
EndEnumeration
;}
;}

;{- Fonction Simul Keyboard
Procedure KeyDown(key.l)
    keybd_event_(key, 0, 0, 0)
EndProcedure

Procedure KeyUp(key.l)
    keybd_event_(key, 0, #KEYEVENTF_KEYUP, 0)
EndProcedure

Procedure KeyCombi(ctrl.l,shift.l,alt.l,func.l,key.l)
    If ctrl
        KeyDown(#VK_CONTROL) ; simulate CTRL keydown - have to hold it down
    EndIf
    
    If alt
        KeyDown(#VK_MENU) ; simulate ALT keydown - have to hold it down
    EndIf
    
    If shift
        KeyDown(#VK_SHIFT)
    EndIf
    
    If func
        KeyDown(func+69) ; simulate function keydown
    EndIf
    
    If key
        If  shift:a=#KEYEVENTF_EXTENDEDKEY:EndIf
        keybd_event_(key, 0, a, 0)
        keybd_event_(key, 0, a|#KEYEVENTF_KEYUP, 0)
    EndIf
    
    If func
        KeyUp(func+69) ; release function key
    EndIf
    
    If alt
        KeyUp(#VK_MENU) ; release ALT
    EndIf
    
    If shift
        KeyUp(#VK_SHIFT)
    EndIf
    
    If ctrl
        KeyUp(#VK_CONTROL) ; release CTRL
    EndIf
EndProcedure
;}

;{- Fonction Simul Mouse
Procedure MouseEvent(Event.l)
    Protected Mem.l
    
    Mem.l=GlobalAlloc_(0,8)
    GetCursorPos_(Mem)
    mouse_event_(Event | #MOUSEEVENTF_ABSOLUTE, PeekL(Mem) * ($FFFF / GetSystemMetrics_(0)), PeekL(Mem + 4) * ($FFFF / GetSystemMetrics_(1)), 0, GetMessageExtraInfo_())
    GlobalFree_(Mem)
EndProcedure
;}

;{- Fonction Dialog
Procedure OpenDialog(id, Dialog_Larg, Dialog_Haut, Dialog_Texte.s, Window_Main, Dialog_Option)
    Protected Valeur.l
	
    Valeur.l=OpenWindow(id,Dialog_X,Dialog_Y,Dialog_Larg,Dialog_Haut,Dialog_Texte,Dialog_Option,WindowID(Window_Main))
	
    If id=#PB_Any
        id=Valeur
    EndIf
	
    DisableWindow(Window_Main,1)
    ProcedureReturn Valeur
EndProcedure

Procedure CloseDialog(Window_Dialog.l,Window_Main.l)
    DisableWindow(Window_Main,0)
    SetActiveWindow_(Window_Main)
    CloseWindow(Window_Dialog)
EndProcedure
;}

;{- Procedure Dialog
Procedure.l OpenWindow_Dialog(Window.l)
	Protected Quit.l,Valid.l,Extension.s
	
	NouveauFichier=""
	
	If OpenDialog(#Dialog, 200, 100, "Nouveau Fichier", Window, #PB_Window_ScreenCentered )
		;If OpenWindow(#Dialog, 407, 195, 200, 100, "Nouveau Fichier", #PB_Window_SizeGadget|#PB_Window_TitleBar|#PB_Window_SystemMenu)
		If CreateGadgetList(WindowID(#Dialog))
			TextGadget(#Dialog_Text, 10, 10, 180, 30, "Veuillez entrer un nom de fichier avec l'extension:"+Chr(34)+".txt"+Chr(34))
			StringGadget(#Dialog_String, 10, 40, 180, 20, "")
			ButtonGadget(#Dialog_Valider, 10, 70, 85, 20, "Valider")
			ButtonGadget(#Dialog_Annuler, 105, 70, 85, 20, "Annuler")
		EndIf
	EndIf
	
	Repeat
		Select WaitWindowEvent()
				; ///////////////////
			Case #PB_Event_Gadget
				Select EventGadget()
					Case #Dialog_Text
					Case #Dialog_String
					Case #Dialog_Valider
						NouveauFichier=GetGadgetText(#Dialog_String)
						Extension.s=GetExtensionPart(NouveauFichier)
						If Len(NouveauFichier)>4
							If LCase(Extension)="txt"
								If ReadFile(0,GetCurrentDirectory()+NouveauFichier)=0
									Valid=1
									CloseDialog(#Dialog,Window)
									Quit=1
								Else
									CloseFile(0)
									MessageRequester("Erreur","Ce nom de fichier existe déjà dans le répertoire de l'exécutable !")
								EndIf
							Else
								MessageRequester("Erreur","L'extension du fichier doit se terminer par:"+Chr(34)+".txt"+Chr(34)+" !")
							EndIf
						Else
							MessageRequester("Erreur","Le nom de fichier n'est pas complet !")
						EndIf
						
					Case #Dialog_Annuler
						CloseDialog(#Dialog,Window)
						Quit=1
				EndSelect
				; ////////////////////////
			Case #PB_Event_CloseWindow
				Select EventWindow()
					Case #Dialog
						CloseDialog(#Dialog,Window)
						Quit=1
				EndSelect
		EndSelect
	Until Quit=1
	
	If Valid
		ProcedureReturn 1
	EndIf
	
	ProcedureReturn 0
EndProcedure
;}

Procedure.l Thread(lParam.l)
    Protected Nb.l,Texte.s,TexteField.s,Count.l,Point.POINT
    GetAsyncKeyState_(#VK_LBUTTON)
    GetAsyncKeyState_(#VK_CONTROL)
    
    Texte.s=PeekS(lParam)
    Debug Texte
    Count=CountString(Texte, "*")
    Count=Count+1
    Nb=0
    Nb=Nb+1
    TexteField=StringField(Texte,Nb,"*")
    SetGadgetText(#Text_coller,"("+Str(Nb)+"/"+Str(Count)+")  "+TexteField)
    
    GetCursorPos_(@Point)
    ResizeWindow(#Window_0,Point\x+16,Point\y+16,#PB_Ignore,#PB_Ignore)
    HideWindow(#Window_0,0)
    
    Repeat
        If GetAsyncKeyState_(#VK_LBUTTON)
            Delay(20)
            MouseEvent(#MOUSEEVENTF_LEFTDOWN)
            Delay(20)
            MouseEvent(#MOUSEEVENTF_LEFTUP)
            Delay(20)
            
            KeyCombi(0,0,0,0,#VK_DELETE)
            KeyCombi(0,0,0,0,#VK_END)
            KeyCombi(0,1,0,0,#VK_HOME)
            
            SetClipboardText(TexteField)
            KeyCombi(0,1,0,0,#VK_INSERT)
			
            If Nb<>Count+1
                Nb=Nb+1
                TexteField=StringField(Texte,Nb,"*")
                SetGadgetText(#Text_coller,"("+Str(Nb)+"/"+Str(Count)+")  "+TexteField)
            EndIf
            
            GetAsyncKeyState_(#VK_LBUTTON)
        EndIf
        
        GetCursorPos_(@Point)
        ResizeWindow(#Window_0,Point\x+16,Point\y+16,#PB_Ignore,#PB_Ignore)
        Delay(10)
        
    Until Nb=Count+1 Or GetAsyncKeyState_(#VK_CONTROL)
    HideWindow(#Window_0,1)
    ClearClipboard()
EndProcedure

Procedure.l Aide()
    If OpenWindow(#Window_0, 555, 255, 162, 68, "Window_0", #PB_Window_BorderLess|#PB_Window_Invisible)
        If CreateGadgetList(WindowID(#Window_0))
            TextGadget(#Texte_Info, 2, 2, 158, 20, "Click gauche pour coller le texte", #PB_Text_Center)
            TextGadget(#Text_coller, 2, 24, 158, 20, "");, #PB_Text_Center)
            TextGadget(#Text_Info2, 2, 46, 158, 20, "Touche Ctrl pour abandonner", #PB_Text_Center)
        EndIf
        
        SetWindowColor(#Window_0,RGB(11,29,250))
        
        SetGadgetColor(#Texte_Info,#PB_Gadget_BackColor,RGB(198,214,253))
        SetGadgetColor(#Texte_Info,#PB_Gadget_FrontColor,RGB(11,29,250))
        
        SetGadgetColor(#Text_Info2,#PB_Gadget_BackColor,RGB(198,214,253))
        SetGadgetColor(#Text_Info2,#PB_Gadget_FrontColor,RGB(146,75,114))
        
        SetGadgetColor(#Text_coller,#PB_Gadget_BackColor,RGB(198,214,253))
        SetGadgetColor(#Text_coller,#PB_Gadget_FrontColor,RGB(32,135,32))
        
        LoadFont(#Font2, "Arial" ,12, #PB_Font_Bold)
        SetGadgetFont(#Text_coller,FontID(#Font2))
        
        StickyWindow(#Window_0,1)
    EndIf
EndProcedure

Procedure.l Callback(Window, Message, wParam, lParam)
    Protected DesktopHeight.l,DesktopWidth.l,a.l,b.l,Name.s,WindowPoint.l,RootWindow.l
    Static Timer.l,TempDepasse.l
    
    ;ViewEvent(msg)
    
    Resultat = #PB_ProcessPureBasicEvents
    Select Message
			
        Case #WM_USER+1
			;             If lParam=0
			KillTimer_(Window,10)
			Delay(50)
			ExamineDesktops()
			DesktopHeight = DesktopHeight(0)
			DesktopWidth = DesktopWidth(0)
			For b= (DesktopWidth-WindowWidth(#Main)) To (DesktopWidth-3) Step 10
				Delay(10)
				ResizeWindow(#Main,b,(DesktopHeight-WindowHeight(#Main))/2, #PB_Ignore, #PB_Ignore)
			Next b
			ResizeWindow(#Main,DesktopWidth-4,(DesktopHeight-WindowHeight(#Main))/2, #PB_Ignore, #PB_Ignore)
            Timer=0
            TempDepasse=0
            Resultat=0
            
        Case #WM_MOUSEMOVE
            If Timer=0
                Timer=1
                KeyCombi(0,0,0,0,#VK_CONTROL);pour mettre fin au thread si lancé!
                Debug "Mousemove"
                ExamineDesktops()
                DesktopHeight = DesktopHeight(0)
                DesktopWidth = DesktopWidth(0)
                For a=(DesktopWidth) To (DesktopWidth-WindowWidth(#Main)) Step -10
                    Delay(10)
                    ResizeWindow(#Main,a,(DesktopHeight-WindowHeight(#Main))/2, #PB_Ignore, #PB_Ignore)
                Next a
                ResizeWindow(#Main,DesktopWidth-WindowWidth(#Main),(DesktopHeight-WindowHeight(#Main))/2, #PB_Ignore, #PB_Ignore)
                SetTimer_(Window,10,100,0)
                Resultat=0
            EndIf
            
        Case #WM_TIMER
            ;Debug " Timer"
            Select  wParam
                Case 10
                    GetCursorPos_(@Point.POINT)
                    WindowPoint=WindowFromPoint_(Point\x,Point\y)
                    RootWindow=GetAncestor_(WindowPoint, #GA_ROOTOWNER)
                    Name=Space(100)
                    GetClassName_(WindowPoint,@Name,99)
                    If RootWindow<>Window And GetFocus_()<>GadgetID(#ComboBox_Liste)
                        TempDepasse+1
                        If TempDepasse>18
                            PostMessage_(Window,#WM_USER+1,0,0)
                        EndIf
                    Else
                        TempDepasse=0
                    EndIf
                    Resultat=0
            EndSelect
            
    EndSelect
    
    ProcedureReturn Resultat
EndProcedure

Procedure.l OpenWindow_Main()
    If OpenWindow(#Main, 467, 104, 212, 520, "Assistant",#PB_Window_BorderLess|#PB_Window_Invisible)
        SetWindowCallback(@Callback(),#Main)
        
        If CreateGadgetList(WindowID(#Main))
			TextGadget(#Text_0, 55, 10, 100, 20, "Log", #PB_Text_Center)
			ListIconGadget(#ListIcon1, 10, 70, 195, 410, "Nom", 190, #PB_ListIcon_AlwaysShowSelection|#PB_ListIcon_GridLines|#PB_ListIcon_FullRowSelect)
			ComboBoxGadget(#ComboBox_Liste, 10, 45, 100, 130)
			ButtonGadget(#Couleur, 155, 10, 50, 20, "Couleur")
			ButtonGadget(#ButtonQuitter, 10, 10, 40, 20, "Quitter")
			ButtonGadget(#Creer_Fichier, 115, 45, 90, 20, "Créer un Fichier")
			ButtonGadget(#Editer_Fichier, 10, 490, 95, 20, "Editer ce fichier")
			ButtonGadget(#Supprimer_Fichier, 110, 490, 95, 20, "Supprimer fichier")
            AddGadgetColumn(#ListIcon1, 1, "Site Web", 190)
            AddGadgetColumn(#ListIcon1, 2, "Code", 190)
            
            CreateImage(#Image1,5,520)
            StartDrawing(ImageOutput(#Image1))
				Box(0, 0, 5,520,RGB(0,0,255))
			StopDrawing()
			
            CreateImage(#Image2,205,5)
            StartDrawing(ImageOutput(#Image2))
				Box(0, 0, 205,5,RGB(0,0,255))
			StopDrawing()
			
			CreateImage(#Image3,205,5)
            StartDrawing(ImageOutput(#Image3))
				Box(0, 0, 205,5,RGB(0,0,255))
			StopDrawing()
			
			CreateImage(#Image4,2,520)
            StartDrawing(ImageOutput(#Image4))
				Box(0, 0, 2,520,RGB(0,0,255))
			StopDrawing()
			
            ImageGadget(#Image_Gauche, 0, 0, 5, 520,ImageID(#Image1))
            ImageGadget(#Image_Haut, 5, 0, 205, 5, ImageID(#Image2))
            ImageGadget(#Image_Bas, 5, 515, 205, 5, ImageID(#Image3))
            ImageGadget(#Image_Droite, 210, 0, 2, 520, ImageID(#Image4))
            
            GadgetToolTip(#Couleur, "Changer la couleur de fond de la fenêtre.")
            GadgetToolTip(#ListIcon1, "Double click gauche de la souris pour copier l'élémént!")
            GadgetToolTip(#ComboBox_Liste, "Les fichiers sont triés par ordre alphabétique.")
            
            LoadFont(#Font3, "Arial" ,9, #PB_Font_Bold)
            
            SetWindowColor(#Main,Couleur)
            
            LoadFont(#Font1, "Arial" ,12, #PB_Font_Bold)
            SetGadgetFont(#Text_0,FontID(#Font1))
            SetGadgetColor(#Text_0,#PB_Gadget_BackColor,Couleur)
            SetGadgetColor(#Text_0,#PB_Gadget_FrontColor,RGB(0,0,255))
            
            SetGadgetFont(#ListIcon1,FontID(#Font3))
            SetGadgetColor(#ListIcon1,#PB_Gadget_FrontColor,RGB(0,0,255))
			
			CreatePopupMenu(#ContextMenu)
			MenuItem(#Web, "Afficher la page Web")
			
            SetWindowLong_(WindowID(#Main),#GWL_EXSTYLE ,GetWindowLong_(WindowID(#Main),#GWL_EXSTYLE)|#WS_EX_TOOLWINDOW)
            StickyWindow(#Main,1)
			
            ExamineDesktops()
            DesktopHeight = DesktopHeight(0)
            DesktopWidth = DesktopWidth(0)
            ResizeWindow(#Main,DesktopWidth-4,(DesktopHeight-WindowHeight(#Main))/2, #PB_Ignore, #PB_Ignore)
            HideWindow(#Main,0)
            PostMessage_(WindowID(#Main),#WM_MOUSEMOVE,0,0)
			
        EndIf
    EndIf
EndProcedure

Procedure.l LoadComboFile(IndexPrecedent.l)
    Protected FileName$,NbFichier.l,Position.l
    Protected Index.l,NouveauIndex.l
    Static Fichier.s
    
    Index=-1
    NouveauIndex=-1
    ClearList(ListeFichier())
    
    If ExamineDirectory(0, GetCurrentDirectory(), "*.txt")
        While NextDirectoryEntry(0)
            If DirectoryEntryType(0) = #PB_DirectoryEntry_File
                FileName$ = DirectoryEntryName(0)
                If FileName$<>"Reserved.txt"
                    AddElement(ListeFichier())
                    ListeFichier()\Nom=FileName$
                EndIf
            EndIf
        Wend
        FinishDirectory(0)
    Else
        MessageRequester("Erreur","Impossible de lister le contenu du répertoire !")
    EndIf
    
    NbFichier=CountList(ListeFichier())
    If NbFichier>1
        SortStructuredList(ListeFichier(), 2, 0, #PB_Sort_String)
        Index=0
    EndIf
    
    Debug MemFichier
    
    If NbFichier>0
        Position=0
        ForEach ListeFichier()
            AddGadgetItem(#ComboBox_Liste, -1, ListeFichier()\Nom)
            Fichier=Fichier+ListeFichier()\Nom+" "
            Debug ListeFichier()\Nom
            If MemFichier<>""
                If FindString(MemFichier,ListeFichier()\Nom,1)=0
                    NouveauIndex=Position
                    Debug "Position= "+Str(Position)
                EndIf
            EndIf
            Position=Position+1
        Next
    EndIf
    
    MemFichier=Fichier
    
    If NouveauIndex<>-1
        Debug "NouveauIndex"
        Index=NouveauIndex
    ElseIf IndexPrecedent<>-1
        Debug "IndexPrecedent"
        Index=IndexPrecedent
    Else
        Index=0 ;Dans ce cas, on sélectionne le premier élémént de la liste
    EndIf
    
    ProcedureReturn Index
EndProcedure

Procedure.l LoadListIcon(File.s)
    Protected Texte.s,*Pointeur.BYTE
    
    ClearList(List())
    
    If ReadFile(0,File)
        While Eof(0)=0
            Texte=ReadString(0)
            If Texte<>""
				AddElement(List())
				List()\Texte=Texte
            EndIf
        Wend
        CloseFile(0)
    EndIf
    
    SortStructuredList(List(), 2, 0, #PB_Sort_String)
    If CreateFile(0, File)
        ForEach List()
            WriteStringN(0, List()\Texte)
        Next
        CloseFile(0)
    EndIf
    
    If ReadFile(0,File)
        While Eof(0)=0
            Texte=ReadString(0)
            *Pointeur=@Texte
            For a=1 To Len(Texte)
                If *Pointeur\b=9
                    *pointeur\b=10
                EndIf
                *pointeur=*pointeur+1
            Next a
            AddGadgetItem(#ListIcon1, -1, Texte)
        Wend
        CloseFile(0)
    EndIf
EndProcedure

Procedure.l EnregistrerTexteCouleur()
    Protected Texte1.s,Texte2.s
    
    If CreateFile(0,GetCurrentDirectory()+"Reserved.txt")
        WriteStringN(0,Str(Couleur))
        CloseFile(0)
    EndIf
EndProcedure

;-Debut du programme
If ReadFile(0,GetCurrentDirectory()+"Reserved.txt")
    Couleur=Val(ReadString(0))
    MemTexte1=ReadString(0)
    MemTexte2=ReadString(0)
    CloseFile(0)
Else
    If CreateFile(0,GetCurrentDirectory()+"Reserved.txt")
		Couleur=RGB(172,206,255)
		WriteString(0,Str(Couleur))
		MemTexte1=""
		MemTexte2=""
		CloseFile(0)
    EndIf
EndIf

OpenWindow_Main()

Aide()

Index=LoadComboFile(-1)
If Index<>-1
    SetGadgetState(#ComboBox_Liste, Index)
    Fichier.s=GetGadgetText(#ComboBox_Liste)
    LoadListIcon(GetCurrentDirectory()+Fichier)
	; Else
	;     MessageRequester("Info","Le répertoire ne contient ancun fichier de données !")
EndIf

;{- Event loop
Repeat
    Event= WaitWindowEvent()
	
    Select Event
			
        Case #PB_Event_Gadget
            Select EventGadget()
                Case #Image_Gauche
                    Select EventType()
                        Case #PB_EventType_RightClick
                            PostMessage_(WindowID(#Main),#WM_MOUSEMOVE,0,0)
                    EndSelect
					
                Case #Creer_Fichier
                    Message.s="Le programme Bloc-notes va se lancer, entrez vos nouvelles données,"+Chr(10)
                    Message+"puis enregistrez et quitter !"
                    If OpenWindow_Dialog(#Main)
                        If CreateFile(0,GetCurrentDirectory()+NouveauFichier)
                            CloseFile(0)
                            MessageRequester("Info",Message)
                            If RunProgram("Notepad.exe" , GetCurrentDirectory()+NouveauFichier, GetCurrentDirectory() ,#PB_Program_Wait)<>0
                                State= GetGadgetState(#ComboBox_Liste)
                                ClearGadgetItemList(#ComboBox_Liste)
                                ClearGadgetItemList(#ListIcon1)
                                Index=LoadComboFile(State)
                                If Index<>-1
                                    SetGadgetState(#ComboBox_Liste, Index)
                                    Fichier.s=GetGadgetText(#ComboBox_Liste)
                                    LoadListIcon(GetCurrentDirectory()+Fichier)
                                    PostMessage_(WindowID(#Main),#WM_MOUSEMOVE,0,0)
                                Else
                                    MessageRequester("Info",",Le répertoire ne contient pas fichier de données !")
                                EndIf
                            Else
								MessageRequester("Erreur","Le programme Bloc-notes n'a pu être lancé !")
                            EndIf
						Else
							MessageRequester("Erreur","Impossible de créer le fichier !")
                        EndIf
                    EndIf
                    
                Case #Editer_Fichier
                    Fichier=GetGadgetText(#ComboBox_Liste)
                    If Fichier<>""
                        Texte=GetGadgetItemText(#ListIcon1, Element , 1)
                        DisableWindow(#Main, 1)
                        If RunProgram("Notepad.exe" , GetCurrentDirectory()+Fichier, GetCurrentDirectory() ,#PB_Program_Wait)<>0
                            ClearGadgetItemList(#ListIcon1)
                            LoadListIcon(Fichier)
                        Else
                            MessageRequester("Erreur",",Le programme Bloc-notes n'a pu être lancé !")
                        EndIf
                    Else
                        MessageRequester("Info","Aucun fichier n'est sélectionné !")
                    EndIf
                    DisableWindow(#Main, 0)
                    
                Case #Supprimer_Fichier
                    Fichier.s=GetGadgetText(#ComboBox_Liste)
                    If Fichier<>""
                        Result.l=MessageRequester("Info","Etes-vous sûr de vouloir supprimer ce fichier?: "+Fichier,#PB_MessageRequester_YesNo)
                        If Result=6
                            If DeleteFile(GetCurrentDirectory()+Fichier)
                                State.l= GetGadgetState(#ComboBox_Liste)
                                MemFichier=RemoveString(MemFichier,Fichier)
                                Debug MemFichier
                                RemoveGadgetItem(#ComboBox_Liste, State)
                                ClearGadgetItemList(#ListIcon1)
                                InvalidateRect_(GadgetID(#ComboBox_Liste),0,1)
                            Else
                                MessageRequester("Erreur","Le fichier n'a pu être effacé !")
                            EndIf
                        EndIf
                    Else
                        MessageRequester("Info","Aucun fichier n'est sélectionné !")
                    EndIf
					
				Case #ComboBox_Liste
					Select EventType()
						Case 1  ;Selection d'un Item
							State1.s= GetGadgetText(#ComboBox_Liste)
							If State2.s<>State1
								Debug "Changement d'item"
								SetFocus_(WindowID(#Main))
								ClearGadgetItemList(#ListIcon1)
								Fichier.s=GetGadgetText(#ComboBox_Liste)
								LoadListIcon(GetCurrentDirectory()+Fichier)
								State2=State1
							EndIf
						Case 4  ;Perte de Focus"
							
						Case 7  ;Ouverture de la liste"
							If CountGadgetItems(#ComboBox_Liste)=0
								MessageRequester("Info","La liste est vide, cliquer sur le bouton "+Chr(34)+"Créer un Fichier"+Chr(34)+" !")
								SetFocus_(WindowID(#Main))
							EndIf
							
						Case 8  ;Fermeture de la liste"
							SetFocus_(WindowID(#Main))
					EndSelect
					
				Case #ListIcon1
					Select EventType()
						Case #PB_EventType_RightClick
							DisplayPopupMenu(#ContextMenu,WindowID(#Main))
							
                        Case #PB_EventType_LeftDoubleClick
                            Element=GetGadgetState(#ListIcon1)
                            If Element>-1
                                Texte=GetGadgetItemText(#ListIcon1, Element , 2)
                                SetFocus_(WindowID(#Main))
                                CreateThread(@Thread(),@Texte)
                                PostMessage_(WindowID(#Main),#WM_USER+1,0,0)
                            EndIf
                    EndSelect
                    
                Case #ButtonQuitter
                    HideWindow(#Main,1)
                    Quit=1
                    
                Case #Couleur
                    Couleur=ColorRequester()
                    If Couleur>-1
                        SetWindowColor(#Main,Couleur)
                        SetGadgetColor(#Text_0,#PB_Gadget_BackColor,Couleur)
                        EnregistrerTexteCouleur()
                    EndIf
            EndSelect
			
		Case #PB_Event_Menu
			Select EventMenu()
				Case #Web

					Element=GetGadgetState(#ListIcon1)
					If Element>-1
						Texte=GetGadgetItemText(#ListIcon1, Element , 1)
						RunProgram(Texte)
					EndIf
					
			EndSelect
			
        Case #PB_Event_CloseWindow
            Select EventWindow()
                Case #Main
                    HideWindow(#Main,1)
                    quit=1
            EndSelect
    EndSelect
Until quit=1
CloseHandle_(hMutex)
End
;}

Publié : mer. 09/juil./2008 20:44
par comtois
Je viens de tester, c'est sympa ce code. Je ne vais pas l'utiliser, j'ai déjà mes favoris dans firefox :)

Par contre je vais puiser dedans pour apprendre à programmer certains trucs.

Merci

Publié : ven. 11/juil./2008 0:12
par Ar-S
idem que comtois.
Je te remercie pour ce code que j'étudierai avec plaisir.
Beau boulot :P