none
Recherche développeur pour finaliser un développement en c# RRS feed

  • Question

  • Bonjour,
    nous recherchons un développeur pour finaliser un développement sur le projet ci-dessous (prestation rémunérée)
    Nous avons développé un système de hook sur windows qui permet de connaitre et de remonter dans un fichier csv ce qui a été cliqué (onglet, texte, menus, sous-menus, icônes) par l'utilisateur. 
    Le système fonctionne très bien avec la très grande majorité des applications (90%) mais pas sur toutes.
    Sur certaines applications, notre système ne capte qu'une partie mais pas la totalité des éléments 
    cliqués. 
    Par exemple avec photoshop la capture des sous menus est excellente mais pas des menus 
    ou icônes. Sur Open Office et Libre Office, le système ne fonctionne pas.
    Tout notre système repose sur WINAPI et .Net Framework 

    exemple de code pour .Net Framework :
    /** 
    * LowLevel mouse Event 
    */ 
    int MouseEvents(int code, IntPtr wParam, IntPtr lParam) 


    if (code < 0) 
    return CallNextHookEx(_hook, code, wParam, lParam);

    if (code == HookCodes.HC_ACTION) 

    // Marshal the MSLLHOOKSTRUCT data from the callback lParam 
    MSLLHOOKSTRUCT mouseHookStruct = (MSLLHOOKSTRUCT) 
    Marshal.PtrToStructure(lParam, typeof(MSLLHOOKSTRUCT));

    // Get the mouse WM from the wParam parameter 
    MouseMessage wmMouse = (MouseMessage)wParam; 

    if (wmMouse == MouseMessage.WM_LBUTTONDOWN ) 

    IntPtr win = WindowFromPoint(mouseHookStruct.pt); 
    if (EventHandlerList != null) 

    EventHandlerList(this, new SysEventInfo { Hwnd = win, mouse = mouseHookStruct, Lparam = lParam, Wparam = wParam}); 




    return CallNextHookEx(_hook, code, wParam, lParam); 
    }

    //.........

    public class SysEventInfo : EventArgs 

    public IntPtr Hwnd { get; set; } 
    public IntPtr Lparam { get; set; } 
    public IntPtr Wparam { get; set; } 
    public MSLLHOOKSTRUCT mouse { get; set; } 
    }

    //.......

    // Methode 1 : 
    /* 
    * SendMessage WM_GETTEXT to the HWND 
    */ 
    GetText(IntPtr hwnd){ 
    string result; 
    StringBuilder sb = new StringBuilder(65535); 
    SendMessage(hwnd, (int)WM_GETTEXT, (IntPtr)sb.Capacity, sb); 
    return sb.ToString(); 
    }

    // Methode 2 : 
    public static AutomationElement GetCurrentElement(SysEventInfo info) 

    IntPtr hwnd = info.Hwnd; 
    System.Drawing.Point mouse = new System.Drawing.Point(info.mouse.pt.X, info.mouse.pt.Y); AutomationElement element; 
    try 

    element = AutomationElement.FromPoint(new System.Windows.Point(mouse.X, mouse.Y)); 

    catch (Exception e) 

    element = AutomationElement.FromHandle(hwnd); 
    }

    return element; 
    }

    Si vous êtes compétent dans ce domaine, vous pouvez nous contacter. Sinon merci de ne pas postuler à 
    cette offre de prestation.

    lundi 24 avril 2017 16:22