IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Questions sur les hooks !


Sujet :

VB.NET

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Octobre 2009
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 5
    Points : 0
    Points
    0
    Par défaut Questions sur les hooks !
    Bonsoir ...

    salut , j ai conçu un programme sur vb.net et j ai tombé sur un problème , j ai fait tout pour trouver une solution , et voila a la fin , je demande vous aides
    mon programme fait des taches particulieres sur le pc , sans ma présence mais ça oblige l écran a rester allumer pendant le traitement , et je voulais éteindre l écran , oui c est facile a éteindre l écran avec des fonctions API mais mon programme bouge la souris pendant le traitement et beaucoup de fois et c est pour ca mon écran s allume tout le temps .
    donc je me mes sur les hooks pour introduire un hook sur le message qui est le responsable , ça veut dire le message qui allume l écran et l'intercepter

    mais je pouvais pas , d abord vu que je suis un débutant , j ai pas bien compris le principe d injection un dll pour faire un hook globale

    mes amis si il y a des idées des autres méthodes pour faire ca n hésiter pas a me dire , et si y a un une moyenne pour m expliquer les hooks je serai très content


    merciii pour vos aides ...

  2. #2
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    1 048
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 048
    Points : 2 201
    Points
    2 201
    Par défaut
    Peut être que ceci peut t'aider.

    https://support.microsoft.com/en-us/kb/319524

    Sinon y a un bouton sur le moniteur aussi :-)

  3. #3
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    S'il n'y a pas de bouton sur ton moniteur, tu peux tricher. Tu ajustes tes options d'alimentation, quitte à te créer un nouveau mode. Tu programmes la fermeture de l'écran au bout de quelques secondes et l'arrêt, ou la mise en veille, beaucoup plus tard.
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  4. #4
    Nouveau Candidat au Club
    Inscrit en
    Octobre 2009
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 5
    Points : 0
    Points
    0
    Par défaut
    Citation Envoyé par sinople Voir le message
    Peut être que ceci peut t'aider.

    https://support.microsoft.com/en-us/kb/319524

    Sinon y a un bouton sur le moniteur aussi :-)
    merciii pour ta réponse :
    le probleme c est que "Global hooks are not supported in the .NET Framework
    j ai bien avancé sur un hook avec c++ et je vais controler l executable avec vb.net

    mais j ai tombé dans un probleme de wm_command , j ai pas pu capté les paramettre !! je sais pas pk

  5. #5
    Nouveau Candidat au Club
    Inscrit en
    Octobre 2009
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 5
    Points : 0
    Points
    0
    Par défaut
    Citation Envoyé par clementmarcotte Voir le message
    Bonjour,

    S'il n'y a pas de bouton sur ton moniteur, tu peux tricher. Tu ajustes tes options d'alimentation, quitte à te créer un nouveau mode. Tu programmes la fermeture de l'écran au bout de quelques secondes et l'arrêt, ou la mise en veille, beaucoup plus tard.
    non pour le bouton , et oui j'ai essayé de jouer sur ca et je suis arrivé jusqu'au minimum de contraste (en programmation bien sûr) mais c'est toujours visible.

    [EDIT]
    l'objectif est de faire des modifications pendant la veille de l'écran, donc les utilisateurs ne vont rien sentir. Après la fin de la modification j'autorise l'allumage de l'écran avec la souris. J'ai bien fait beaucoup de recherches mais je suis toujours coincé.

  6. #6
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    1 048
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 048
    Points : 2 201
    Points
    2 201
    Par défaut
    T'as pas la possibilité de contrôler ton batch autrement qu'en simulant la souris et le clavier ?

    Genre un serveur d'automation, des dlls ou je sais pas quoi d'autre ?

    Ce qui résoudrait la problématique annoncée et rendrait la chose beaucoup plus fiable (parce que bon suffit de pas grand chose pour que ça parte en sucette ce genre de truc).

  7. #7
    Nouveau Candidat au Club
    Inscrit en
    Octobre 2009
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 5
    Points : 0
    Points
    0
    Par défaut
    Citation Envoyé par sinople Voir le message
    T'as pas la possibilité de contrôler ton batch autrement qu'en simulant la souris et le clavier ?

    Genre un serveur d'automation, des dlls ou je sais pas quoi d'autre ?

    Ce qui résoudrait la problématique annoncée et rendrait la chose beaucoup plus fiable (parce que bon suffit de pas grand chose pour que ça parte en sucette ce genre de truc).
    a ton avis si j'ai la possibilité de controler mon application autrement , je vais rater ca ? bon , on oublie mon application , ma question est simple ; est que on peux forcer l'écran a s'eteindre pendant quelque temps malgré les actions de traitement ?

    je vais mettre mes essais pour donner a cette discution a peu de concret :

    la c'est un programme qui fait un hook globale sur Wn_command apres filtrer les messages pour intercepter les messages de moniteur
    code dll à injecter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    #include "main.h"
    HHOOK global;
     
    extern "C" DLL_EXPORT BOOL APIENTRY DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
    {
        switch (fdwReason)
        {
            case DLL_PROCESS_ATTACH:
                // attach to process
                // return FALSE to fail DLL load
     
                global=hinstDLL;
                break;
     
            case DLL_PROCESS_DETACH:
                // detach from process
                break;
     
            case DLL_THREAD_ATTACH:
                // attach to thread
                break;
     
            case DLL_THREAD_DETACH:
                // detach from thread
                break;
        }
        return TRUE; // succesful
    }
    extern "C" DLL_EXPORT LRESULT CALLBACK procedure(UINT  code, WPARAM wParam, LPARAM lParam){
     
         if(code >= HC_ACTION)
         {
     
         MSG *msg = (MSG *)lParam;
     
        if(msg->message == WM_SYSCOMMAND)
         {
    MessageBoxA(NULL,"1","1",MB_OK);
     
             if ((msg->wParam & 0xFFF0) == SC_MINIMIZE)
            {
               MessageBoxA(NULL,"minimizi","minimizi",MB_OK);
            }
             if ((msg->wParam & 0xFFF0) == SC_MAXIMIZE)
            {
               MessageBoxA(NULL,"maximizi","maximizi",MB_OK);
     
            }
            if ((msg->wParam & 0xFFF0)  == SC_SCREENSAVE)
            {
               MessageBoxA(NULL,"SC_SCREENSAVE","SC_SCREENSAVE",MB_OK);
     
            }
     
            if ((msg->wParam & 0xFFF0)  == SC_MONITORPOWER)
            {
               MessageBoxA(NULL,"SC_MONITORPOWER","SC_MONITORPOWER",MB_OK);
     
            }
         }}
     
    return CallNextHookEx(NULL, code, wParam, lParam);
    }
    code de l'injecteur toujours en C:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    #include <stdio.h>
    #include <stdlib.h>
    #include <windows.h>
    HHOOK hook;
     
    void WINAPI JACKAL()
    {
    	HMODULE lib = LoadLibrary("C:\\Users\\lenovo\\Desktop\\c++\\dll2\\bin\\Release\\dll2.dll");
    	if (lib){
    		HOOKPROC procedure = (HOOKPROC)GetProcAddress(lib, "procedure@12");
    		if (procedure)
    			hook = SetWindowsHookEx(WH_GETMESSAGE, procedure, lib, 0);
    		else
    			printf("Can't find function in dll!\n");
    	}
    	else
    		printf("Can't find dll!\n");
    	if (hook)
    		printf("Hook installed properly!\n\n");
    	int i =0;
    	while (i<16)
    	{
    	    printf("%d\n\n",i);
    	    i=i+1;
    		Sleep(5000);
    	}
     
    	FreeLibrary(lib);
    	UnhookWindowsHookEx(hook);
    }
    int main()
    {
        JACKAL();
        return 0;
    }


    si tu remarque je fais des messagebox pour les test ; le hook marche pour intercepter certain message mais surtout pas le message voulu , merci pour tes reponses monsieur en attendu un autre aide , salut

Discussions similaires

  1. [HOOK] Problème(s) pour réaliser le tutoriel sur les HOOKS
    Par Rodrigue dans le forum C++Builder
    Réponses: 13
    Dernier message: 27/07/2016, 19h22
  2. question sur les vertex buffer et index buffer
    Par airseb dans le forum DirectX
    Réponses: 9
    Dernier message: 25/08/2003, 03h38
  3. question sur les variables globales et les thread posix
    Par souris_sonic dans le forum POSIX
    Réponses: 5
    Dernier message: 13/06/2003, 14h59
  4. Question sur les handles et les couleurs...
    Par MrDuChnok dans le forum C++Builder
    Réponses: 7
    Dernier message: 29/10/2002, 09h45
  5. question sur les message box !
    Par krown dans le forum Langage
    Réponses: 7
    Dernier message: 02/08/2002, 17h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo