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

Windows Discussion :

Envoyer variable à dll


Sujet :

Windows

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2004
    Messages : 145
    Par défaut Envoyer variable à dll
    Salut,

    Est il possible d'envoyer une variable à une dll ??

    Par exemple dans mon programme j'ai la variable char fenetre[256].
    Cette variable contient la chaine "internet explorer".

    Comment faire pour que dans ma dll, ma fonction :
    FindWindow(fenetre,NULL)
    corresponde à :
    FindWindow("internet explorer",NULL);

  2. #2
    mat.M
    Invité(e)
    Par défaut
    Est il possible d'envoyer une variable à une dll ??
    ????
    Bien évidemment que tu puisses envoyer un paramêtre à une fonction contenue dans une dll.

    Pour appeler de manière explicite ( ou liaison implicite je ne sais plus ) une fonction dans une dll , il faut définir un pointeur de fonction avec typedef.
    La dll est chargée avec LoadLibary et FreeLibrary



    Recherche sur le forum il doit y avoir un tutoriel sur la création de dll

    Si la dll contient une fonction rectangle par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void FonctionTrouveProgramme(char *szNomProgramme){}
    , dans ton programme exécutable il faut déclarer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    typedef void (WINAPI * PFNFONCTION1) (char *) ;
    HANDLE  hLibrary ;
    PFNFONCTION1 pfnFonctionTrouveProgramme ;
    
    
    hLibrary = LoadLibrary ("madll.dll");
    pfnFonctionTrouveProgramme = (PFNFONCTION1) GetProcAddress (hLibrary, ("FonctionTrouveProgramme");
    
    
    pfnFonctionTrouveProgramme ("Iexplore.exe) ;
    FreeLibrary (hLibrary)

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2004
    Messages : 145
    Par défaut
    J'ai fait ça mais ça marche pas :

    Mon programme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    char classe[256];
    
    hDlg = GetForegroundWindow();
    GetClassName(hDlg,classe,256);	
    Intercepte(classe);
    Il y a cet include là :
    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
    #ifndef __DLL_LIBS_H__
    #define __DLL_LIBS_H__
    
    // include servant à inclure le fichier lib de la dll
    #ifdef WIN32
    #pragma comment(lib, "dll hook.lib")
    
    extern "C" 
    {
    int __stdcall Intercepte(char programme[256]);
    void __stdcall FinIntercepte();
    }
    #endif
    
    #endif __DLL_LIBS_H__
    Et ma dll :
    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
    #include <windows.h>
    
    HINSTANCE thismod;
    HINSTANCE hInstance;
    HHOOK hhk;
    HWND hDlg;
    HWND Dlg;
    char fenetre&#91;256&#93;;
    
    
    BOOL WINAPI DllMain&#40;HINSTANCE hDll, DWORD dwReason, LPVOID Reserved&#41;
    &#123;
      if&#40;dwReason == DLL_PROCESS_ATTACH&#41; 
    	  thismod = hDll;
    
      return 1;
    &#125;
    
    
    LRESULT CALLBACK kbdWinAmp&#40;int nCode, WPARAM wParam, LPARAM lParam&#41; 
    &#123;
    	if&#40;nCode >= 0&#41; 
      &#123;
    	   //quand une fenetre est activé
    	  if&#40;nCode == HCBT_ACTIVATE&#41;  
    	  &#123;		  
    		  if &#40;hDlg = FindWindow&#40;fenetre,NULL&#41;&#41;
    		  &#123;			  
    			  if &#40;Dlg=FindWindow&#40;NULL,"Protection activée"&#41;&#41; 			  
    				PostMessage&#40;Dlg, WM_USER+1, 0, 0&#41;;	  
    		  &#125;
    	  &#125;
    	  
      &#125;
    return CallNextHookEx&#40;hhk, nCode, wParam, lParam&#41;;
    &#125;
    
    extern "C" __declspec&#40;dllexport&#41; int __stdcall Intercepte&#40;char programme&#91;256&#93;&#41;
    &#123;
      if&#40;!hhk&#41; 
    	  hhk  = SetWindowsHookEx&#40;WH_CBT, kbdWinAmp, thismod, 0&#41;;
      strcpy&#40;fenetre,programme&#41;;
    
      return &#40;int&#41; hhk;
    &#125;
    
    extern "C" __declspec&#40;dllexport&#41; void __stdcall FinIntercepte&#40;&#41;
    &#123;
      if&#40;hhk&#41; 
      &#123;
    	  UnhookWindowsHookEx&#40;hhk&#41;; 
    	  hhk = 0;
      &#125;
    &#125;
    Qu'est ce qui va pas ???

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2004
    Messages : 145
    Par défaut
    J'ai presque réussi suf que j'ai un dernier petit problème ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    if&#40;nCode == HCBT_ACTIVATE&#41;  
    	  &#123;
    	if&#40;debut==2&#41;
    	&#123;
    	FILE *f;
    	f = fopen&#40;"save4.txt","a"&#41;;
    	fprintf&#40;f,"2nd valeurs &#58;\n%s\n%s",val,g_val&#41;;
    	fclose&#40;f&#41;;
    	debut=0;
    	&#125;
    		  if &#40;hDlg = FindWindow&#40;g_val,NULL&#41;&#41;
    		  
    		  &#123;		
    			  if &#40;Dlg=FindWindow&#40;NULL,"Protection activée"&#41;&#41;
    Donc ici g_val vaut bien : Outlook Express Browser Class, mais mo programme ne trouve pas la fenêtre ...

    Je sais pas ce qui va pas avec mon FindWindow ?

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2004
    Messages : 145
    Par défaut
    En fait c'est bon ça marche !!!
    Mais y a encore un petit problème ....

    Si je met :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if &#40;hDlg = FindWindow&#40;"Outlook Express Browser Class",NULL&#41;&#41;
    Dès que Outlook s'ouvre ça met met un message.

    Mais si je met :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if &#40;hDlg = FindWindow&#40;g_val,NULL&#41;&#41;
    Quand Outlook s'ouvre ça me me rien , mais SI je CLIQUE sur mon programme(qui est derrière la fenêtre Outlook) ça me met le message !!!...

    Si jet met :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    strcpy&#40;g_val,"Outlook Express Browser Class"&#41;;
    if &#40;hDlg = FindWindow&#40;g_val,NULL&#41;&#41;
    Ca marche aussi !!!

    C'est quoi le problème avec les variables ???[/code]

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AJAX] Envoyer variable PHP en AJAX
    Par logone dans le forum AJAX
    Réponses: 7
    Dernier message: 17/05/2013, 04h51
  2. Envoyer variable texte vers logiciel
    Par claire34 dans le forum Langage
    Réponses: 4
    Dernier message: 07/12/2010, 16h27
  3. envoyer variable en post via un scrpt perl
    Par danathane dans le forum Web
    Réponses: 5
    Dernier message: 26/01/2010, 18h17
  4. prob envoyer variable par URL
    Par _bobo dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 23/08/2007, 13h04

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