Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.05.2010, 14:54   #1
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию Функция на виртуальную распечатку строки

Код:
Procedure PrintSmt(S : String);
Var
I:Integer;
Begin
For I := 1 to Length(S) do
  Begin
   Keybd_event(Ord(S[I]), 0, 0, 0);
   Keybd_event(Ord(S[I]), 0, KEYEVENTF_KEYUP, 0);
  end;
End;
Код:
PrintSmt('PrivetiКъ');
Выводит всякую фигню.

P.S. И подскажите, пожалуйста, как отправить CTRL+V?
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 15.05.2010, 15:06   #2
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

а почему не postmessage ?
Код:
postMessage(h, $0102, ord(s[i]), 0)
и да, если русские посылаешь, то раскладку переключай LoadKeyboardLayout(StrCopy(Layout,' 00000419'),KLF_ACTIVATE).
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 15.05.2010, 15:11   #3
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Это так, похоже, придется каждую букву проверять на раскладку. Все-таки, наверное проще будет зарядить строку в буфер обмена и послать CTRL+V. Вопрос только в том, как он посылается.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 15.05.2010, 15:15   #4
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

в русской раскладке английские символы через postmessage идут нормально, т.е. будет достаточно сразу один раз переключить.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 15.05.2010, 15:17   #5
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Дык, а ежели хендл неизвестен? Тестирую на блокноте, программа собирается для мозиФФ.

Вотъ, нашел и вставил:

Код:
Procedure PrintSmt(S : String);
Var
I:Integer;
Begin
 Clipboard.AsText := S;
 keybd_event(VK_CONTROL, MapVirtualKey(VK_CONTROL, 0), 0, 0);
 keybd_event(Ord('V'), MapVirtualKey(Ord('V'), 0), 0, 0);
 keybd_event(Ord('V'), MapVirtualKey(Ord('V'), 0), KEYEVENTF_KEYUP, 0);
 keybd_event(VK_CONTROL, MapVirtualKey(VK_CONTROL, 0), KEYEVENTF_KEYUP, 0)
End;
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ

Последний раз редактировалось Alex Cones; 15.05.2010 в 15:19.
Alex Cones вне форума Ответить с цитированием
Старый 15.05.2010, 15:33   #6
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

в смысле если неизвестен, значит его надо найти, а если имеешь ввиду то, что сверху активное, то значит его хэндл брать через GETforegroundwindow ...а нескольких кнопок послать нажатие можно так:
Код:
var msg: TMessage;
...
msg.LParamLo:= MOD_CONTROL;
msg.LParamHi:= VK_CONTROL or ord('V');
PostMessage(handle_window, WM_HOTKEY, 0, Msg.LParam);
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
функция: копирование части строки в другую строку plasticman Microsoft Office Excel 1 18.03.2009 15:30
маска ввода через виртуальную клавиатуру Димка JavaScript, Ajax 3 09.03.2009 19:33
Delphi.Строки.Функция. Scabby Помощь студентам 1 11.02.2009 19:45
Как в VirtualBox настроить виртуальную сеть Stilet Софт 5 22.10.2008 18:52
одна функция потока, а другая функция - член класса запускающего этот поток Дмитрий_Ч Общие вопросы C/C++ 2 27.09.2007 08:50