Добро пожаловать к нам в гости! Наш сайт посвящён программе NeoBook, с помощью которой вы легко сможете создавать собственные мультимедиа-приложения без необходимости изучать сложные языки программирования! Зарегистрируйтесь, чтобы стать членом нашего сообщества.
Всем доброго времени суток ,есть такая команда SendKeys она имитирует нажатие клавишь,но в ней нет кнопки space(пробел),можно ли имитировать ее нажатие?
Сообщение отредактировано bloer90 - Вт, 31 Августа 2010, 23:43
Здравствуйте,возникла еще 1 проблема команда работает,но мне нужно ,что бы она имитировала нажатие с повторением каждые 100 миллисекунд,но имитирует она каждые 2-5 секуды,повторение я сделал через таймер,может есть еще способ?
Сообщение отредактировано bloer90 - Вс, 05 Сентября 2010, 12:56
Дата: Пн, 06 Сентября 2010, 18:59 | Сообщение # 10
Удаленные
вопрос по этой же теме. как имитировать нажатие клавиш Ctrl+V? Пробовал {CtrlDn}V, выдает Invalid Key Может что-то не так делаю? В справке nb об этом ничего не указано.
Дата: Пн, 06 Сентября 2010, 19:31 | Сообщение # 11
Необукер
Проверенные
Сообщений: 4238
Offline
Alien, тут есть такая тема, мы там с мишлемом обсуждали как раз этот случай непомню, но вроде удалось анси-кодом {CtrlDn}[#118](синтаксис смотри сам) поищи темку, может и ответ найдешь
Поделюсь наблюдениями... короче как уже выяснили, чтобы передать правильно комбинации клавиш, нужно чтобы для окна программы-передатчика и окна-приемника были выставлены нужные раскладки. Мало того, чтобы комбинация правильно обработалась в передатчике, раскладка комбинации и окна должны совпадать.
например, нужно вставить в блокнот текст из буфера комбинацией латинских CTRL+V. SendKeys"notepad.exe" "{CtrlDn}v{CtrlUp}"
чтобы SendKeys не выдавал ошибку Invalid key раскладка для окна проекта (передатчик) должна быть выставлена как EN. Чтобы блокнот воспринял эту комбинацию правильно лучше чтобы там тоже было EN.
Далее, возможно, что если текст в буфер присваивается в самом проекте, в [Clipboard] или еще как, то нужно делать поправки на кодировку самого текста (кириллица или нет) и текущую раскладку окна проекта при присваивании. Потому что при каких то условиях ничего кроме кракозябр в блокнот мне передать так и не удалось, хотя мож не в этом было дело.
В общем, я запутался уже пока это писал, так что я хотел сказать... здесь поможет предварительная установка нужной раскладки для окон.
Например комбинация ctrl+v. В буфере - этот текст. Команда - SendKeys "notepad.exe" "{CtrlDn}v{CtrlUp}" Окно проекта - RU. Итог - Invalid key (и релог системы на 7, залипает Ctrl - выполнен {CtrlDn} а на v вылетает и {CtrlUp} не выполняется) Окно проекта - EN. Блокнот - RU. Итог правильный. Окно проекта - EN. Блокнот - EN. Итог правильный (но хз...)
С плагинами hpwSendKeys итоги более разнообразные...
Для предварительной установки окна проекта в EN перед SendKeys, я откопал этот старый плагин Peter'а. Это работает корректно всегда, а кодировку если что можно проверить и вернуть назад в ru если она была установлена.
Добавлено (10 Ноября 2012, 18:57) ---------------------------------------------
Quote (DEMBEL)
при каких то условиях ничего кроме кракозябр в блокнот мне передать так и не удалось, хотя мож не в этом было дело.
есть такой эффект. В момент присваивания SetVar "[Clipboard]" "кириллица строка" если раскладка окна проекта стоит в EN, то в блокноте получается êèðèëëèöà ñòðîêà
так что вариант такой:
zmKB_ChangeLayout "1" SetVar "[Clipboard]" "кириллица строка" zmKB_ChangeLayout "2" SendKeys "notepad.exe" "{CtrlDn}v{CtrlUp}" Как задавать вопросы
Проблема передачи содержимого буфера с помощью SendKeys актуальна.
Вставить содержимое буфера корректно удается в: - обычный блокнот - в окно поиска в файлах справки (chm) - в окно поиска информера (NeoInformer 1.16)
Вставляется какая-то хрень: - в Notepad++ (иногда не с первого, а с энного раза)
Не вставляется вообще (но код отрабатывает без вывода сообщения об ошибке): - в любой объект любого браузера (а мне надо как раз в браузер вставлять) - в проводнике винды (тоже бы не помешало)
Используемый код для подпрограммы вставки из буфера обмена:
Добавлено (29 Ноября 2014, 14:25) --------------------------------------------- а что в браузер не вставляется это настораживает... ведь вкладки современных браузеров (Хром движок вроде точно своими методами все рисует) это вообще не окна с точки зрения системы. ну разве что может IE системную оконную модель использует. А что за браузер? В IE пробовал посылать?
надеюсь ты убедился, что элемент куда вставляешь (текстовое поле) имеет фокус ввода (курсор моргает)? если нет, выбери его посылая Tab
И ты вставляешь большую V а надо маленькую. Переключи раскладку в EN и отправляй, работает.
Добавлено (01 Декабря 2014, 09:14) ---------------------------------------------
ЦитатаВадим ()
Оу! Класс!!!
есть только особенности - плагин будет требовать установленного .NET Framework 4+ и использует Unicode - строки посылаются с помощью .net метода SendKeys, он посылает только активному в данный момент окну, так что окно проекта будет терять фокус (если только не установить св-во "поверх всех окон") если посылаешь строки другому окну. - все методы сами по себе работают с Unicode, поэтому послать строки в неюникодное приложение (нб) не выйдет - в приложении будет мусор, т.к. нб не поймет юникод, а метод Sendkeys внутренне работает только с unicode, как ни кодируй входящую строку, отправка будет в unicode. Но в любом случае, плагин призван решить обратную проблему - посылать строки из неюникодного приложения (существование которых уже считается морально и технически устаревшим) в юникодное.
Добавлено (01 Декабря 2014, 09:23) --------------------------------------------- еще можешь попробовать hpwAutoIt, там есть это. Но тоже активному окну.
Добавлено (01 Декабря 2014, 09:35) ---------------------------------------------
ЦитатаDEMBEL ()
в приложении будет мусор, т.к. нб не поймет юникод
это относится к примеру вставки текста в национальной кодировке в поле ввода, комбинаций клавиш это не касается, т.к. номера английских символов в национальных ANSI и Unicode кодировках совпадают. Короче потестишь разберешься, возможно передачу в нб можно решить через буфер обмена. Как задавать вопросы
Я, лично, обожаю .NET Framework 4+, душа моя от его присутствия на компьютере преображается и становится чище.
Гм... Забавный эффект. Крайне любопытно: что же в этом пакете вызывает такой катарсис?
Серьезно интересно. У меня на компьютере этого пакета нет (и скорее всего ещё очень нескоро появится, если вообще когда-нибудь появится), и я бы не сказал, что моя душа пребывает в состоянии фрустрации!
И ещё не следует забывать, что для работы приложения потребуются преображенные и очищенные души тех пользователей, на компьютерах которых оно будет запускаться.
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Три самодостаточных аргумента: 1) Это просто способ сказать, что мне глубоко фиолетово что там нужно плагину для работы. Если программист, которому я доверяю, делает плагин, значит так надо. 2) Кроме того, у меня на компе сейчас оперативки больше более чем в два раза, чем 10 лет назад было памяти на всём жестком диске... 3) И, конечно, .NET Framework 4 у меня установлен уже давно из-за Paint.NET, а это мой любимый графический редактор.
ЦитатаPeter ()
тех пользователей, на компьютерах которых оно будет запускаться
Это тоже не проблема. Это логика - либо прога нужна, либо не нужна, третьего не дано. Кому нужна прога, тот поставит и .NET Framework 4. Это не мешок с песком таскать.
Это просто способ сказать, что мне глубоко фиолетово что там нужно плагину для работы
Вот так я и понял.
ЦитатаВадим ()
Это логика - либо прога нужна, либо не нужна, третьего не дано. Кому нужна прога, тот поставит и .NET Framework 4. Это не мешок с песком таскать.
С одной стороны верно - если пользователь ЗНАЕТ что это за программа и она реально нужна ему. Но, например, решил пользователь себе выбрать какой-нибудь графический редактор по-проще, чтобы с фотошопом не заморачиваться, и начал поиск в сети... Натыкается на этот самый Paint.NET,, хочет попробовать, скачивает, запускает установку, а ему бац - надо ещё довесок установить. Что будет делать в этой ситуации пользователь? Любопытный (или пофигист, или прогрессивный) начнет закачку (даже не задумываясь что именно он качает), опытный, рациональный скорее всего прервет установку (именно это я и делаю всегда), возможно подумает "а надо ли?", и если ему очень станет интересно (и нужно!) закачает, что весьма маловероятно. В результате вожделенный (и возможный кандидат даже на первый приз) Paint.NET идет гулять лесом. Вадим, нормальных грамотных пользователей, тянущих без разбору всякий хлам к себе на комп, не так уж и много. И не надо только питать иллюзии, что этот Net4.0 имеется на всех компах. Я, например, прекрасно без него обходился, обхожусь, и буду обходиться.
Но да ладно... это так... небольшое отступление....
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
OK, а я пока мучаю [ClipBoard] на предмет наличия кириллицы )
Добавлено (02 Декабря 2014, 16:28) ---------------------------------------------
ЦитатаDEMBEL ()
Переключить на RU SetVar "[ClipBoard]" "Кириллица" Переключить на EN SendKeys c ctrl+v
Правильно ли я понял, что нужно ДО помещения в буфер знать - будет там кириллица или нет? И если да, то менять на RU, потом переключать на EN? Или главное, чтобы непосредственно перед SendKeys раскладка была EN?
Не могу понять в чем трудность, но в собственный проект не вставляется из буфера все равно. В браузер вставляется и кириллица, и латиница, если перед SendKeys выставить EN. А в проекте не выходит. В общем, дождусь плагин, а пока буду отправлять в браузер.
Добавлено (02 Декабря 2014, 16:34) --------------------------------------------- И в браузер из проекта - то работает, то нет... Не ясно почему.
Правильно ли я понял, что нужно ДО помещения в буфер знать - будет там кириллица или нет? И если да, то менять на RU, потом переключать на EN?
ну да. Перед setvar "[Clipboard]" уже должна быть ru раскладка, иначе нб присвоит в буфер белиберду.
ЦитатаВадим ()
А в проекте не выходит.
да у меня тут тоже чушь, вроде поборол, а в хр вообще другое поведение... вместо белиберды передаются именно латинские символы, т.е. вместо ававававав не ôûôûôûôû а fdfdfdfdfdf короче без бутылки не разберешься. Как задавать вопросы
вместо белиберды передаются именно латинские символы
Да, тема оказалась нерядовая...
Может надо разрабов NeoBook спросить - как правильнее всего реализовать в плагине передачу данных из проекта в буфер и из буфера во внешние приложения, при возможном использовании в приложениях разных раскладок? Может что дельное подскажут? Бесплатный онлайн курс программирования в VisualNEO Win (NeoBook)