Tampon texte

Vous avez une idée pour améliorer ou modifier PureBasic ? N'hésitez pas à la proposer.
Avatar de l’utilisateur
SPH
Messages : 4947
Inscription : mer. 09/nov./2005 9:53

Tampon texte

Message par SPH »

Ce serait bien de pouvoir faire 2 choses avec le tampon texte :

1> le remplir d'un quelconque caractere pour simuler l'appuie d'une touche (par exemple, je met ENTRER dans le tampon et ainsi, un logiciel tournant en paralelle et qui attend l'appuie de la touche ENTRER puisse passer cette etape. Cela necessite peut etre que l'instruction qui permette de faire ca puisse aussi connaitre sa cible qu'il nous faudra preciser...)

2> analyser le tampon texte pour savoir quelles sont les touches appuyées (une sorte de keyloggueur quoi. Mais pas forcement dans l'optique "espionnage". Simplement, ce serait si genial niveau communiquation entre plusieurs code PB !!)
poshu
Messages : 1138
Inscription : sam. 31/juil./2004 22:32

Message par poshu »

1> je vois pas le rapport avec le tampon texte

2> je vois toujours pas le rapport avec le tampon texte

pour communiquer entre deux programmes, tu as la librairie "Process" (d'ailleur, l'aide est explicite à ce sujet: Cette bibliothèque permet de récupérer des informations sur le programme, ainsi que d'exécuter d'autres programmes et communiquer avec eux.). Et c'est rudement moins louche que ce que tu nous propose là...
Avatar de l’utilisateur
SPH
Messages : 4947
Inscription : mer. 09/nov./2005 9:53

Message par SPH »

Il n'y a rien de louche a vouloir avoir des instructions sur le tampon texte !
Et je trouve mes idées tres interessantes !

:wink:
poshu
Messages : 1138
Inscription : sam. 31/juil./2004 22:32

Message par poshu »

mais ca n'a toujours rien à voir avec le tampon texte >_>
Avatar de l’utilisateur
SPH
Messages : 4947
Inscription : mer. 09/nov./2005 9:53

Message par SPH »

poshu a écrit :mais ca n'a toujours rien à voir avec le tampon texte >_>
Tu es sûre ? Dans mon esprit, ca a un lien mais peut etre que je me trompe...
poshu
Messages : 1138
Inscription : sam. 31/juil./2004 22:32

Message par poshu »

Ca dépend ce que tu entend par tampon texte en fait...
Déjà, en faisait une recherche dans l'aide pour tempon texte, j'ai qu'une seule et unique réponse, c'est copymemorystring().
J'ai cependant compris dans "tampon texte" le tampon d'écriture des fichiers. Si c'était bien de ca que tu parlais, alors ca n'a aucun rapport.

Sinon, le 1 doit etre faisable avec l'api, et la communication entre deux applications est dans la lib process; pas de quoi foueter un chat.
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message par Flype »

je pense que SPH parle plutot de ce qu'on appelle le 'tampon clavier', la pile FIFO des touches pressées, non ?
Image
Avatar de l’utilisateur
SPH
Messages : 4947
Inscription : mer. 09/nov./2005 9:53

Message par SPH »

En tout cas, j'ai une idée brillante sur ce que pourrait devenir PB. Voici clairement ce que PB pourrait faire :
simuler logiciellement des actions physiques
Ce serait cool que l'on ait des instructions pour faire cliquer les boutons de la souris et pour faire appuyer les touches du clavier. Perso, moi, ca m'aiderais !!!!!
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

SPH a écrit :En tout cas, j'ai une idée brillante sur ce que pourrait devenir PB. Voici clairement ce que PB pourrait faire :
simuler logiciellement des actions physiques
Ce serait cool que l'on ait des instructions pour faire cliquer les boutons de la souris et pour faire appuyer les touches du clavier. Perso, moi, ca m'aiderais !!!!!
ben comme par exemple
formater le disk dur, ou effacer quelques fichiers
ou inverser le sens du pointeur de souris,
faire cliquer sur le menu exit d'un prg, des le lancement,
selectionner tout les icones du bureau et le deplacer dans la corbeille, tout ça sous l'oeil ebahie de l'utilisateur de l'ordi
meme lancer le traitement de text a la place de l'utilisateur
pour ecrire dedans (a sa place toujours) "Fuck l'equipe de france"
et pendant ce temps connection a l'internet, et transmissions de ses identifiants de connection sur un news group...
tout un tas de truc .........
SUPER GEANT :D
Avatar de l’utilisateur
SPH
Messages : 4947
Inscription : mer. 09/nov./2005 9:53

Message par SPH »

Dobro a écrit :
SPH a écrit :En tout cas, j'ai une idée brillante sur ce que pourrait devenir PB. Voici clairement ce que PB pourrait faire :
simuler logiciellement des actions physiques
Ce serait cool que l'on ait des instructions pour faire cliquer les boutons de la souris et pour faire appuyer les touches du clavier. Perso, moi, ca m'aiderais !!!!!
ben comme par exemple
formater le disk dur, ou effacer quelques fichiers
ou inverser le sens du pointeur de souris,
faire cliquer sur le menu exit d'un prg, des le lancement,
selectionner tout les icones du bureau et le deplacer dans la corbeille, tout ça sous l'oeil ebahie de l'utilisateur de l'ordi
meme lancer le traitement de text a la place de l'utilisateur
pour ecrire dedans (a sa place toujours) "Fuck l'equipe de france"
et pendant ce temps connection a l'internet, et transmissions de ses identifiants de connection sur un news group...
tout un tas de truc .........
SUPER GEANT :D
Je n'avais pas l'imagination aussi developpée mais dans chaque projets d'instructions il y a 2 faces : celle de l'utilisation normale et celle de l'utilisation détournée.

Mais franchement, de toute facon, celui qui veux etre vicieux le sera avec ou sans instructions nouvelles. Moi perso, je reve d'une emulation (et pas simulation comme je l'ai dis) des boutons de la souris et de toutes les touches du claviers ainsi que de la position de la fleche de la souris.
A propos de cette derniere possibilité, elle etait intégré dans AMOS sur amiga et je m'en servais souvent (et personne n'en faisait un fromage)

Non, FRANCHEMENT, je trouve ce projet excellent ! #heaven

ps : tout ce que tu decris est deja possible !! :wink:
Dorian
Messages : 489
Inscription : mar. 15/mars/2005 15:33

Message par Dorian »

Dobro a écrit :
SPH a écrit :En tout cas, j'ai une idée brillante sur ce que pourrait devenir PB. Voici clairement ce que PB pourrait faire :
simuler logiciellement des actions physiques
Ce serait cool que l'on ait des instructions pour faire cliquer les boutons de la souris et pour faire appuyer les touches du clavier. Perso, moi, ca m'aiderais !!!!!
ben comme par exemple
formater le disk dur, ou effacer quelques fichiers
ou inverser le sens du pointeur de souris,
faire cliquer sur le menu exit d'un prg, des le lancement,
selectionner tout les icones du bureau et le deplacer dans la corbeille, tout ça sous l'oeil ebahie de l'utilisateur de l'ordi
meme lancer le traitement de text a la place de l'utilisateur
pour ecrire dedans (a sa place toujours) "Fuck l'equipe de france"
et pendant ce temps connection a l'internet, et transmissions de ses identifiants de connection sur un news group...
tout un tas de truc .........
SUPER GEANT :D
C'est déjà possible :D

J'avais commencé un faux virus à la demande d'un pote qui faisait je sais plus trop quoi (j'ai abandonné faute de motivation ^^) et sa baladait la souris et écrivait dans le bloc-note (après l'avoir lancé) : "T'as eu peur" ou un truc du style.

Donc dans ce cas faut supprimer la moitié des commandes ainsi que l'API et les commandes DOS et là personne ne pourrat faire de virus mais je pense que le nombre d'utilisateur de PB diminurait considérablement :evil: .

Malheureusement tout est déjà possible et on ne peut compter que sur le bon sens des utilisateurs :?
Dorian
Messages : 489
Inscription : mar. 15/mars/2005 15:33

Message par Dorian »

Dobro a écrit :
SPH a écrit :En tout cas, j'ai une idée brillante sur ce que pourrait devenir PB. Voici clairement ce que PB pourrait faire :
simuler logiciellement des actions physiques
Ce serait cool que l'on ait des instructions pour faire cliquer les boutons de la souris et pour faire appuyer les touches du clavier. Perso, moi, ca m'aiderais !!!!!
ben comme par exemple
formater le disk dur, ou effacer quelques fichiers
ou inverser le sens du pointeur de souris,
faire cliquer sur le menu exit d'un prg, des le lancement,
selectionner tout les icones du bureau et le deplacer dans la corbeille, tout ça sous l'oeil ebahie de l'utilisateur de l'ordi
meme lancer le traitement de text a la place de l'utilisateur
pour ecrire dedans (a sa place toujours) "Fuck l'equipe de france"
et pendant ce temps connection a l'internet, et transmissions de ses identifiants de connection sur un news group...
tout un tas de truc .........
SUPER GEANT :D
C'est déjà possible :D

J'avais commencé un faux virus à la demande d'un pote qui faisait je sais plus trop quoi (j'ai abandonné faute de motivation ^^) et sa baladait la souris et écrivait dans le bloc-note (après l'avoir lancé) : "T'as eu peur" ou un truc du style.

Donc dans ce cas faut supprimer la moitié des commandes ainsi que l'API et les commandes DOS et là personne ne pourrat faire de virus mais je pense que le nombre d'utilisateur de PB diminurait considérablement :evil: .

Malheureusement tout est déjà possible et on ne peut compter que sur le bon sens des utilisateurs :?
Cls
Messages : 620
Inscription : mer. 22/juin/2005 8:51
Localisation : Nantes

Message par Cls »

Dobro a écrit :
ben comme par exemple
formater le disk dur, ou effacer quelques fichiers
ou inverser le sens du pointeur de souris,
faire cliquer sur le menu exit d'un prg, des le lancement,
selectionner tout les icones du bureau et le deplacer dans la corbeille, tout ça sous l'oeil ebahie de l'utilisateur de l'ordi
meme lancer le traitement de text a la place de l'utilisateur
pour ecrire dedans (a sa place toujours) "Fuck l'equipe de france"
et pendant ce temps connection a l'internet, et transmissions de ses identifiants de connection sur un news group...
tout un tas de truc .........
SUPER GEANT :D
Tu vois le mal partout à ce que je comprends ?

@SPH

API Windows : keyb_event (user32.dll)
The keybd_event function synthesizes a keystroke. The system can use such a synthesized keystroke to generate a WM_KEYUP or WM_KEYDOWN message.

Je ne sais pas si ca peut t'aider.
Cordialement
poshu
Messages : 1138
Inscription : sam. 31/juil./2004 22:32

Message par poshu »

Je rejoins Dobro pour dire que c'est vraiment des fonctions tendancieuses... Et si c'est pas le cas, plutot que de nous le dire, pourquoi ne pas donner des exemples d'application pas trop louche?
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

de toute façon ce que tu demande est facile a faire

dans le forum debutant il y a des exemple pour la souris
(deplacement et click)
ici : http://purebasic.forum-gratuit.com/viewtopic.php?t=1310

pour le clavier voici un code qui devrai convenir

Code : Tout sélectionner

Procedure Touche(Option.l)
  keybd_event_(Option,0,0,0) ; Simule l'appui sur la touche "A"
  keybd_event_(Option,0,#KEYEVENTF_KEYUP,0) ; simule le relachement d'une touche
  Delay(60)
EndProcedure

Touche(#VK_A) ; la touche "A"

encore un code du Soldat pour simuler le clavier sur une autre fenetre



ces codes existent depuis longtemps !!


Code : Tout sélectionner

Procedure KeyBoardEvent(WindowID, Touche, ToucheSpecial)
        ; WindowID : fenêtre qui va recevoir la touche
        ; Touche : Touche appuyée, voir constantes PB dans l'aide de AddKeyboardShortcut()
        ; ToucheSpecial :
        ; = 1 si touche Control appuyée
        ; = 2 si touche Alt appuyée
        ; = 0 sinon
        
        SetForegroundWindow_(WindowID)
        
        If OpenLibrary(0, "user32.dll")
                
                Select ToucheSpecial
                        Case 1
                                CallFunction(0, "keybd_event", #VK_CONTROL, 0, 0, 0)
                        Case 2
                                CallFunction(0, "keybd_event", #VK_MENU, 0, 0, 0)
                EndSelect
                
                CallFunction(0, "keybd_event", Touche, 0, 0, 0)
                Delay(10)
                CallFunction(0, "keybd_event", Touche, 0, #KEYEVENTF_KEYUP, 0)
                
                Select ToucheSpecial
                        Case 1
                                CallFunction(0, "keybd_event", #VK_CONTROL, 0, #KEYEVENTF_KEYUP, 0)
                        Case 2
                                CallFunction(0, "keybd_event", #VK_MENU, 0, #KEYEVENTF_KEYUP, 0)
                EndSelect
                
                CloseLibrary(0)
        EndIf
EndProcedure



; Debut du test

Delay(1000)

WindowE = GetForegroundWindow_()

KeyBoardEvent(WindowE, #PB_Shortcut_N, 1)
KeyBoardEvent(WindowE, #PB_Shortcut_Z, 0)
KeyBoardEvent(WindowE, #PB_Shortcut_U, 0)
KeyBoardEvent(WindowE, #PB_Shortcut_T, 0)
KeyBoardEvent(WindowE, #PB_Shortcut_A, 2)

Quand a ce code qui suit
il permet de lancer une aplication et de faire suivre une sequence de touche

dans l'exemple qui est donné (en utilisant JAPBE)
il va automatiquement ecrire a l'emplacement du curseur la ligne :
"on va ecrire une nouvelle ligne"
suivi d'un ENTER ce qui metra le curseur dessous cette ligne !

Code : Tout sélectionner

 ; SendKeys procedure by PB -- do whatever you want with it.  :)
; Syntax: r=SendKeys(handle,window$,key$) ; r = 0 for failure.
; Specify either a handle or window$ title to type to, but not both!
; You cannot type curly braces { } as part of the keystrokes, sorry!

Procedure SendKeys(Handle,window$,keys$)
  If window$<>"" : Handle=FindWindow_(0,window$) : EndIf ; Use window$ instead of handle.
  If IsWindow_(Handle)=0 ; Does the target window actually exist?
    ProcedureReturn 0 ; Nope, so report 0 for failure to type.
  Else
    ; This block gives the target window the focus before typing.
    thread1=GetWindowThreadProcessID_(GetForegroundWindow_(),0)
    thread2=GetWindowThreadProcessID_(Handle,0)
    If thread1<>thread2 : AttachThreadInput_(thread1,thread2,#True) : EndIf
    SetForegroundWindow_(Handle) ; Target window now has the focus for typing.
    Sleep_(125) ; 1/8 second pause before typing to prevent fast CPU problems.
    ; Now the actual typing starts.
    keybd_event_(#VK_MENU,0,#KEYEVENTF_KEYUP,0) ; Release ALT key before typing.
    keybd_event_(#VK_CONTROL,0,#KEYEVENTF_KEYUP,0) ; Release CONTROL key before typing.
    keybd_event_(#VK_SHIFT,0,#KEYEVENTF_KEYUP,0) ; Release SHIFT key before typing.
    keybd_event_(#VK_LWIN,0,#KEYEVENTF_KEYUP,0) ; Release WINDOWS key before typing.
    For r=1 To Len(keys$)
      vk$=Mid(keys$,r,1)
      If vk$="{" ; Special key found.
        s=FindString(keys$,"}",r+1)-(r+1) ; Get length of special key.
        s$=Mid(keys$,r+1,s) ; Get special key name.
        Select s$ ; Get virtual key code of special key.
          Case "ALTDOWN" : keybd_event_(#VK_MENU,0,0,0) ; Hold ALT down.
          Case "ALTUP" : keybd_event_(#VK_MENU,0,#KEYEVENTF_KEYUP,0) ; Release ALT.
          Case "BACKSPACE" : vk=#VK_BACK
          Case "CONTROLDOWN" : keybd_event_(#VK_CONTROL,0,0,0) ; Hold CONTROL down.
          Case "CONTROLUP" : keybd_event_(#VK_CONTROL,0,#KEYEVENTF_KEYUP,0) ; Release CONTROL.
          Case "DELAY" : vk=0 : Sleep_(1000) ; Delay typing for one second.
          Case "DELETE" : vk=#VK_DELETE
          Case "DOWN" : vk=#VK_DOWN
          Case "END" : vk=#VK_END
          Case "ENTER" : vk=#VK_RETURN
          Case "ESCAPE" : vk=#VK_ESCAPE
          Case "F1" : vk=#VK_F1
          Case "F2" : vk=#VK_F2
          Case "F3" : vk=#VK_F3
          Case "F4" : vk=#VK_F4
          Case "F5" : vk=#VK_F5
          Case "F6" : vk=#VK_F6
          Case "F7" : vk=#VK_F7
          Case "F8" : vk=#VK_F8
          Case "F9" : vk=#VK_F9
          Case "F10" : vk=#VK_F10
          Case "F11" : vk=#VK_F11
          Case "F12" : vk=#VK_F12
          Case "HOME" : vk=#VK_HOME
          Case "INSERT" : vk=#VK_INSERT
          Case "LEFT" : vk=#VK_LEFT
          Case "PAGEDOWN" : vk=#VK_NEXT
          Case "PAGEUP" : vk=#VK_PRIOR
          Case "PRINTSCREEN" : vk=#VK_SNAPSHOT
          Case "RETURN" : vk=#VK_RETURN
          Case "RIGHT" : vk=#VK_RIGHT
          Case "SPACE" : vk=#VK_SPACE
          Case "SHIFTDOWN" : shifted=1 : keybd_event_(#VK_SHIFT,0,0,0) ; Hold SHIFT down.
          Case "SHIFTUP" : shifted=0 : keybd_event_(#VK_SHIFT,0,#KEYEVENTF_KEYUP,0) ; Release SHIFT.
          Case "TAB" : vk=#VK_TAB
          Case "UP" : vk=#VK_UP
          Case "WINDOWS" : vk=#VK_LWIN
        EndSelect
        If Left(s$,3)<>"ALT" And Left(s$,7)<>"CONTROL" And Left(s$,5)<>"SHIFT"
          keybd_event_(vk,0,0,0) : keybd_event_(vk,0,#KEYEVENTF_KEYUP,0) ; Press the special key.
        EndIf
        r+s+1 ; Continue getting the keystrokes that follow the special key.
      Else
        vk=VkKeyScanEx_(Asc(vk$),GetKeyboardLayout_(0)) ; Normal key found.
        If vk>303 And shifted=0 : keybd_event_(#VK_SHIFT,0,0,0) : EndIf ; Due to shifted character.
        keybd_event_(vk,0,0,0) : keybd_event_(vk,0,#KEYEVENTF_KEYUP,0) ; Press the normal key.
        If vk>303 And shifted=0 : keybd_event_(#VK_SHIFT,0,#KEYEVENTF_KEYUP,0) : EndIf ; Due to shifted character.
      EndIf
    Next
    If thread1<>thread2 : AttachThreadInput_(thread1,thread2,#False) : EndIf ; Finished typing to target window!
    keybd_event_(#VK_MENU,0,#KEYEVENTF_KEYUP,0) ; Release ALT key in case user forgot.
    keybd_event_(#VK_CONTROL,0,#KEYEVENTF_KEYUP,0) ; Release CONTROL key in case user forgot.
    keybd_event_(#VK_SHIFT,0,#KEYEVENTF_KEYUP,0) ; Release SHIFT key in case user forgot.
    keybd_event_(#VK_LWIN,0,#KEYEVENTF_KEYUP,0) ; Release WINDOWS key in case user forgot.
    ProcedureReturn 1 ; Report successful typing!  :)
  EndIf
EndProcedure 


;on va ecrire une nouvelle ligne


;SendKeys(GetDesktopWindow_(),"","{WINDOWS}r") ; Open the RUN dialog.
;Delay(500) ; Give it about one second to open, just in case!
;SendKeys(0,"","jaPBe") ; Tell it to run Notepad.
;Delay(500) ; Another small delay to allow Notepad time to open.
;SendKeys(0,"","accessoires") ; Tell it to run Notepad.
;Delay(500) ; Another small delay to allow Notepad time to open.
;SendKeys(0,"","wordpad{ENTER}") ; Tell it to run Notepad.
;SendKeys(0,"accessoires","notepad.exe{ENTER}") ; Tell it to run Notepad.

;Delay(500) ; Another small delay to allow Notepad time to open.
SendKeys(0,"japbe",";on va ecrire une nouvelle ligne{ENTER}")


;on va ecrire une nouvelle ligne

Si j'aprends que tu as utilisé ces info pour foutre le bazard
je me deplace moi meme :mad:
Répondre