none
Как программно нажать клавишу RRS feed

  • Вопрос

  • В дельфи это можно сделать так:

     keybd_event(Ord('E'), MapVirtualKey(Ord('E'), 0), 0, 0);
    keybd_event(Ord('E'), MapVirtualKey(Ord('E'), 0), KEYEVENTF_KEYUP, 0);

    а как это сделать в Visual

    • Перемещено Tagore Bandlamudi 2 октября 2010 г. 20:17 MSDN Forums consolidation (От:Visual Studio 2010 Launch в России)

Ответы

  • Возможно тебе подойдет класс SendKeys. Более подробно можно посмотреть тут: http://msdn.microsoft.com/ru-ru/library/k3w7761b.aspx

    Пример на C#:

    class SendKeysDemo
    {
     static void Main()
     {
     //Запускаем notepad Process process = Process.Start("notepad.exe");
     //Ждем пока приложение закончит инициализацию process.WaitForInputIdle();
     //Находим окно Notepad'a, необязательно только-что запущенного.
     //Понятно, что если бы нам нужно было именно окно запущенного нами
     //приложения - можно воспользоваться свойством process.MainWindowHandle
     //но одна из целей примера - продемонстрировать использование FindWindow
     IntPtr hWndNotepad = FindWindow("Notepad", null); 
     //Делаем найденное окно активным
     SetForegroundWindow(hWndNotepad); 
     //Посылаем строку
     SendKeys.SendWait("Hello!!!");
     } 
     //Экспортируем нужные Win32 функции
     [DllImport("User32.dll")]
     static extern IntPtr FindWindow(string lpClassName, string lpWindowName); 
     [DllImport("User32.dll")]
     static extern int SetForegroundWindow(IntPtr hWnd);
    }
    
    20 февраля 2011 г. 16:19
  • Также можно воспользоваться библиотекой Windows Input Simulator (C# SendInput Wrapper - Simulate Keyboard and Mouse), или импортировать функцию keybd_event через механизм p/invoke:

      [DllImport("user32.dll", SetLastError = true)]
      public static extern void keybd_event(byte bVk, byte bScan, uint dwFlags, int dwExtraInfo);
    
      [DllImport("user32.dll")]
      private static extern int MapVirtualKey(MapVirtualKeyMapTypes uCode, uint uMapType);
    
    

     


    Для связи [mail]
    4 марта 2011 г. 14:51
    Модератор

Все ответы

  • я еще не установил visual studio, но я думаю, что если там есть "События" и "Вызов события" то можно создать событие, затем установить "При открытии окна" вызывать это событие!

    И вроде все! Полазьте там в проге! (может чтото найдете!) :DD

    5 августа 2010 г. 7:23
  • Возможно тебе подойдет класс SendKeys. Более подробно можно посмотреть тут: http://msdn.microsoft.com/ru-ru/library/k3w7761b.aspx

    Пример на C#:

    class SendKeysDemo
    {
     static void Main()
     {
     //Запускаем notepad Process process = Process.Start("notepad.exe");
     //Ждем пока приложение закончит инициализацию process.WaitForInputIdle();
     //Находим окно Notepad'a, необязательно только-что запущенного.
     //Понятно, что если бы нам нужно было именно окно запущенного нами
     //приложения - можно воспользоваться свойством process.MainWindowHandle
     //но одна из целей примера - продемонстрировать использование FindWindow
     IntPtr hWndNotepad = FindWindow("Notepad", null); 
     //Делаем найденное окно активным
     SetForegroundWindow(hWndNotepad); 
     //Посылаем строку
     SendKeys.SendWait("Hello!!!");
     } 
     //Экспортируем нужные Win32 функции
     [DllImport("User32.dll")]
     static extern IntPtr FindWindow(string lpClassName, string lpWindowName); 
     [DllImport("User32.dll")]
     static extern int SetForegroundWindow(IntPtr hWnd);
    }
    
    20 февраля 2011 г. 16:19
  • Также можно воспользоваться библиотекой Windows Input Simulator (C# SendInput Wrapper - Simulate Keyboard and Mouse), или импортировать функцию keybd_event через механизм p/invoke:

      [DllImport("user32.dll", SetLastError = true)]
      public static extern void keybd_event(byte bVk, byte bScan, uint dwFlags, int dwExtraInfo);
    
      [DllImport("user32.dll")]
      private static extern int MapVirtualKey(MapVirtualKeyMapTypes uCode, uint uMapType);
    
    

     


    Для связи [mail]
    4 марта 2011 г. 14:51
    Модератор