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

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

Вернуться   Форум программистов > Клуб программистов > Свободное общение
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.06.2008, 21:31   #21
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Air, а Вы не погорячились с этим "лыцарем джедая"? Честное слово, проще было импортировать функцию из Advapi32.dll. (Правда с учетом, что она требует w2k и выше). А по второму вопросу, разве widestring в дельфи это не юникод-строки?
B_N вне форума Ответить с цитированием
Старый 19.06.2008, 19:53   #22
Air
Участник клуба
 
Аватар для Air
 
Регистрация: 30.04.2007
Сообщений: 1,307
По умолчанию

Возможно, тогда как "widestring" затолкаю в "PWideChar"?
Пробовал переписывать типы в функции - она вообще не работает...
Всего навсего нужен конвертер данных.
Всё гениальное - просто!
Air вне форума Ответить с цитированием
Старый 19.06.2008, 20:00   #23
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
    ws : widestring;
begin
    ws := 'Unicode String';
    SetWindowTextW(self.Handle, PWIDECHAR(ws));
end;
---------------------------------

И сразу попробую угадать следующий вопрос

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
    s : string;
    ws : widestring;
    len : integer;
begin
    s := 'Ansi String';
    len := MultiByteToWideChar(CP_ACP, 0, PANSICHAR(s), -1, nil, 0);
    if len > 0 then begin
        SetLength(ws, len);
        MultiByteToWideChar(CP_ACP, 0, PANSICHAR(s), -1, PWIDECHAR(ws), len);
        SetWindowTextW(self.Handle, PWIDECHAR(ws));
    end;
end;

Последний раз редактировалось B_N; 19.06.2008 в 20:18.
B_N вне форума Ответить с цитированием
Старый 22.06.2008, 20:50   #24
Air
Участник клуба
 
Аватар для Air
 
Регистрация: 30.04.2007
Сообщений: 1,307
По умолчанию

B_N Спасибо Вам огромное!
Всё гениальное - просто!

Последний раз редактировалось Air; 23.06.2008 в 10:32.
Air вне форума Ответить с цитированием
Старый 14.07.2008, 22:23   #25
weereew
Новичок
Джуниор
 
Регистрация: 14.07.2008
Сообщений: 2
По умолчанию

to Air: Спасибо что выложил модули!!!долго их искал, а тут все и сразу!

Последний раз редактировалось weereew; 14.07.2008 в 22:25.
weereew вне форума Ответить с цитированием
Старый 01.12.2009, 13:37   #26
Marinesku
Пользователь
 
Регистрация: 01.12.2009
Сообщений: 13
По умолчанию

Здравствуйте. У меня вопрос:
вот код эмуляции буквы:
keybd_event(ord('E'), MapVirtualKey(ord('E'), 0), 0, 0);
keybd_event(ord('E'), 0, KEYEVENTF_KEYUP, 0);
вот для других кнопок:
keybd_event(VK_TAB, MapVirtualKey(VK_TAB, 0), 0, 0);
keybd_event(VK_TAB, 0, KEYEVENTF_KEYUP, 0);
и кроме tab так можно нажимать и другие кнопки.
А как же эмулировать ТОЧКУ. Или тире, запятую... Но главное сейчас - это точка. Вот мне нужно поставить точку, например, в блокноте, или в адресной строку браузера. И не через хендл, я хендл не знаю.
Думал через del на дополнительной клавиатуре, тот что справа (он тоже точку рисует), дык и его незнаю как эмулировать. Только обычный del работает. Может хоть его код напишите? правого del?
Marinesku вне форума Ответить с цитированием
Старый 01.12.2009, 13:42   #27
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

1)свою тему не создать?
2)
Код:
keybd_event(ord('E'), MapVirtualKey(ord('E'), 0), 0, 0);
keybd_event(ord('E'), 0, KEYEVENTF_KEYUP, 0);
а точку вместо Е не подставить?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 01.12.2009, 14:07   #28
Marinesku
Пользователь
 
Регистрация: 01.12.2009
Сообщений: 13
По умолчанию

Нет, точку вместо Е подставить не выйдет. Если при работающем экзешнике с таким кодом направить фокус на эдит, то ничего не происходит, а направь фокус на блокнот с уже написаным текстом, он вытирает буквы, т.е. работает как бекспейс, только вправо.
Marinesku вне форума Ответить с цитированием
Старый 04.02.2010, 12:38   #29
Melphin
Новичок
Джуниор
 
Регистрация: 03.02.2010
Сообщений: 12
По умолчанию

2 Пепел Феникса

Вот у меня вопрос похожий на Marinesku
Цитата:
А как же эмулировать ТОЧКУ. Или тире, запятую...
Мне нужно вписать букву Х (русская). если пишу
Код:
keybd_event(byte('Х'),0,0,0);
keybd_event(byte('Х'),0,KEYEVENTF_KEYUP,0);
то вообще ничего не происходит
а если пишу
Код:
keybd_event(byte('['),0,0,0);
keybd_event(byte('['),0,KEYEVENTF_KEYUP,0);
То он эмулирует VK_LWIN.
Как мне нажать "Х"
Жизнь - как плохо проDEBUGеный код. В самы ответственный момент вылетает Access Violations.

Последний раз редактировалось SkyM@n; 04.02.2010 в 12:54.
Melphin вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Эмуляция нажатия нескольких клавиш -=Shad0www Общие вопросы Delphi 3 12.05.2008 08:13
Имитация нажатия комбинации клавиш Zeraim Win Api 15 05.05.2008 20:35
Как заставить программу реагтровать на нажатия клавиш? AngelOfDeath Общие вопросы Delphi 9 07.04.2008 23:58
Проверка нажатия клавиш в компоненте Мемо|Delphi GAGARIN-NEW Помощь студентам 4 09.12.2007 19:59
программа по эмуляции нажатия клавиш sr_lexx Win Api 3 03.12.2007 15:40