none
SendMessage ou émulation de déplacement de souris RRS feed

  • Question

  • Bonjour, je viens de terminer un programme utilisant l'API Skype.

    Lorsque j'execute mon programme, Skype le bloque et affiche un message sur lequel je dois cliquer pour autoriser l'accès de ce dernier à Skype.

    http://img7.hostingpics.net/pics/576607Sans_titre.jpg

    J'essaye actuellement d'envoyer 3 messages sur la fenêtre TAB TAB ENTER pour envoyer ENTER sur le bon boutton...

    Cependant celà ne fonctionne pas, mon programme reste bloqué.

    Le code que j'utilise est-il bon ou auriez-vous une autre solution à me proposer pour appuyer sur ce maudit boutton?

    Merci d'avance et voici mon code

    using System;
    using System.Collections;
    using System.Collections.Generic;
    using System.Data;
    using System.Diagnostics;
    using SKYPE4COMLib;
    using System.IO;
    using System.Text;
    using System.Runtime.InteropServices;
    using System.Threading;
    using System.Windows.Forms;
    
    namespace skype_API
    {
    
      class cskype
      {
        [DllImport("user32.dll",CharSet=CharSet.Auto, CallingConvention=CallingConvention.StdCall)]
        public static extern void mouse_event(long dwFlags, long dx, long dy, long cButtons, long dwExtraInfo);
    
        [DllImport("USER32.DLL")]
        public static extern IntPtr FindWindow(string lpClassName,
          string lpWindowName);
    
        // Activate an application window.
        [DllImport("USER32.DLL")]
        public static extern bool SetForegroundWindow(IntPtr hWnd);
    
        [DllImport("user32.dll")]
        private static extern int SendMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam);
    
        private const int MOUSEEVENTF_LEFTDOWN = 0x02;
        private const int MOUSEEVENTF_LEFTUP = 0x04;
        private const int MOUSEEVENTF_RIGHTDOWN = 0x08;
        private const int MOUSEEVENTF_RIGHTUP = 0x10;
        private const int VK_TAB = 0x09;
        private const int VK_RETURN = 0x0D;
    
    
        public delegate bool WindowEnumDelegate(IntPtr hwnd,
                            int lParam);
    
        // declare the API function to enumerate child windows
        [DllImport("user32.dll")]
        public static extern int EnumChildWindows(IntPtr hwnd,
                             WindowEnumDelegate del,
                             int lParam);
    
        // declare the GetWindowText API function
        [DllImport("user32.dll")]
        public static extern int GetWindowText(IntPtr hwnd,
                            StringBuilder bld, int size);
    
    
        public static IntPtr MakeLParam(int wLow, int wHigh)
        {
          return (IntPtr)(((short)wHigh << 16) | (wLow & 0xffff));
        }
        public static bool WindowEnumProc(IntPtr hwnd, int lParam)
        {
          // get the text from the window
          StringBuilder bld = new StringBuilder(256);
          GetWindowText(hwnd, bld, 256);
    
          if (bld.ToString().Contains("Conseil"))
          {
            MyWindowIs(hwnd);
          }
          return true;
        }
    
        public static void MyWindowIs(IntPtr handle)
        {
          SetForegroundWindow(handle);
    
          SendMessage(handle, MOUSEEVENTF_RIGHTDOWN, (IntPtr)0, MakeLParam(700, 350));
          Thread.Sleep(100);
          SendMessage(handle, MOUSEEVENTF_RIGHTUP, (IntPtr)0, MakeLParam(700, 350));
          Thread.Sleep(100);
          SendMessage(handle, VK_TAB, (IntPtr)0, MakeLParam(700, 350));
          Thread.Sleep(100);
          SendMessage(handle, VK_TAB, (IntPtr)0, MakeLParam(700, 350));
          Thread.Sleep(100);
          SendMessage(handle, VK_RETURN, (IntPtr)0, MakeLParam(700, 350));
        }
    
        //skype API
    
        public static Skype myskype = new Skype();
    
        public static void start()
        {
          myskype = new Skype();
    
          WindowEnumDelegate del
          = new WindowEnumDelegate(WindowEnumProc);
    
          // call the win32 function
          EnumChildWindows(IntPtr.Zero, del, 0);
    
    		//* my skype code *//
    
        }
      }
    }

    mardi 6 juillet 2010 20:23

Réponses

Toutes les réponses