Re: FPD 2.6 и буфер обмена Windows | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Напиши сам, там кода на 20 строк на сях - по сути нужен пяток АПИ функций. Только прежде всего надо ПОНЯТЬ что такое буфер обмена винды, какие там есть "форматы", как он хранит в себе тексты (а он их хранит по разному!), и в частности почему из того-же VFP если копировать кириллицу, то иногда (при активной английской раскладке) в буфере оказываются "иероглифы"...
------------------ WBR, Igor |
Re: FPD 2.6 и буфер обмена Windows | |
---|---|
Crispy Сообщений: 18571 Дата регистрации: 16.05.2005 |
Действительно, припомнил сейчас эту утилитку (nircmd, года 3 назад последний раз с ней возился), одновременно и ужасающую и восхищающую своими поистине гигантскими практически недостижимыми ни для одной крупной современной софтверной фирмы/корпорации возможностями в столь малом объеме килобайт. Это без преувеличения шедевр программистской мысли, иначе не скажешь. И большинству разработчиков современного крупногабаритного софта глядя на нее стоит, если не повеситься, то хотя бы искусать собственные локти до уровня 4-х маслов, которые постоянно рекламируют по ТВ. Почему же только 1251? 866 точно так же вставляется и исправляется в менюшке буфера обмена. Хотя в данном случае это само собой и не выход. ------------------ В действительности все иначе, чем на самом деле. (Антуан де Сент-Экзюпери) Исправлено 1 раз(а). Последнее : Crispy, 12.02.13 13:38 |
Re: FPD 2.6 и буфер обмена Windows | |
---|---|
Crispy Сообщений: 18571 Дата регистрации: 16.05.2005 |
"Слушай, Валико-джан. Я тибе адин умный вещь скажу. Только ты не обижайся." Вставляю я строку, скопированную в буфер из-под FPD - в окошко VFP. И чтобы выдумали? Отображается нормально. Тут-то не вытерпел я и уже чисто из любопытства, вставив это дело в офис, через просмотр в окошке формата шрифта быстренько пробежался по шрифтам. И о чудо (в смысле, то, о чем и подумал с самого начала) - для шрифтов "старой закалки" (win98) FPD-шная строка отбразилась как ей и положено. Т.е., то, что я и подозревал - дело в доюникодовском "смещении" букв в кодовых страницах файлов шрифтов. Которое например хорошо можно наблюдать в любом редакторе шрифтов. Почему оно так сделано в утилите это как бы уже другой вопрос (скорее к разработчикам nircmd). Тем не менее при установленных по умолчанию шрифтах-98 (если у тебя таковые наблюдаются), например Peterburg (неплохой таймсовский вариант кстати по начертанию, даже красивее) и ряда других (они в основном с красивым начертанием букв, курсивные) отображение строки вполне нормально. Хотя в общем случае это тоже не выход вероятно. Впрочем лечить это путем замены в реестре 1252 -> 1251 на мой взгляд вариант еще менее пригодный. ------------------ В действительности все иначе, чем на самом деле. (Антуан де Сент-Экзюпери) |
Re: FPD 2.6 и буфер обмена Windows | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Шрифты тут совершенно не при чём. Просто есть в виндовом "буфере обмена" 3 БАЗОВЫХ формата для хранения и ИЗВЛЕЧЕНИЯ "чисто-текстовых" данных (про всякие HTML да RTF пока забудем) CF_OEMTEXT, CF_TEXT и CF_UNICODETEXT (надеюсь названия форматов вполне "говорящие" и расшифровывать их не нужно). И есть система "синтезирования" недостающих форматов. Т.е. если, например, одна прога поместила в буфер данные в формате CF_UNICODETEXT, то другая вполне может "извлечь" данные в формате CF_TEXT или CF_OEMTEXT ну и наоборот тоже... И вот как раз в этой самой процедуре "синтезирования того чего нету" и кроется проблема "русских буковок" - винда в качестве "недостающего параметра преобразования" для конвертации анси/оем текста в юникод (т.к. такое преобразование требует указания кодовой страницы анси/оем текста) использует хранящийся в том же самом буфере обмена идентификатор языка (специальный формат CF_LOCALE) - а уж он, если его явно не прописала программа поместившая текст в буфер (очевидно что большинство программ этого НЕ делают), будет взят из текущего языка ввода для того окошка из которого происходило копирование.
Впрочем, всё это подробнейшим образом расписано и в MSDN и во всяких программистских форумах - как ПРАВИЛЬНО помещать в буфер обмена русский текст (конечно, если его пихать в юникоде то проблем/неоднозначностей не будет вовсе). ------------------ WBR, Igor |
Re: FPD 2.6 и буфер обмена Windows | |
---|---|
vk65 Сообщений: 402 Дата регистрации: 08.04.2008 |
В winXP будет работать clip из win2003server, можно взять здесь: pubs.logicalexpressions.com |
Re: FPD 2.6 и буфер обмена Windows | |
---|---|
Simple777 Автор Сообщений: 33855 Дата регистрации: 05.11.2006 |
Действительно, clip.ex из сообщения vk65 корректно работает в WinXP и для 866, и для 1251
Что же касается утилиты nircmd, то для нее вполне возможно преобразовать таблицы 866 или 1251 в Unicode. Наверняка есть пакетные утилиты. И если Unicode всегда будет отображаться в буфере корректно, то вроде как и проблемы не должно быть. Но вот я попробовал занести в буфер обмена данные из файла в формате Unicode nircmd.exe clipboard readfile myfile.txt И по этой команде в буфер обмена вместо текста занеслось только 2 ера, т.е. 2 твердых знака. А вот вышеупомянутая утилита clip.exe текст в формате Unicode помещает в буфер обмена корректно. И опять таки остается открытым вопрос о считывании данных из буфера обмена в среду FPD. Исправлено 2 раз(а). Последнее : Simple777, 13.02.13 22:16 |
Re: FPD 2.6 и буфер обмена Windows | |
---|---|
Crispy Сообщений: 18571 Дата регистрации: 16.05.2005 |
"Говорю же тебе - дерево там ВО! И мужик в пиджаке." Я с файлом правда не пробовал, зато вот так пересылал строку из FPD:
А вот clip.exe, которым выше поделился vk65 - вещь уже реальная, где все сделано как надо. Жаль только, что работает лишь с файлами, а не со строками в том числе, как это например может делать великий nircmd. ------------------ В действительности все иначе, чем на самом деле. (Антуан де Сент-Экзюпери) |
Re: FPD 2.6 и буфер обмена Windows | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Утилиты, утилиты - несколько строк на си вот и все утилиты... Если не затачивать исходник под оба варианта компиляции - ANSI и UNICODE то и того меньше будет...
------------------ WBR, Igor |
Re: FPD 2.6 и буфер обмена Windows | |
---|---|
Simple777 Автор Сообщений: 33855 Дата регистрации: 05.11.2006 |
Я так понимаю, это исходник на сях (каких, интересно - их же вроде много разных, этих сей)
Наверное, для большинства участников форума этот исходник легко читаем и легко компилируем. Также для них очевидны параметры запуска для откомпилированного исходника. А вот про себя такого сказать не могу. Фигурные скобки помню... "Казань брал,Астрахань... брал... Ревель брал... Шпака не брал..." И насчет nircmd Если он заточен под таблицу 1252, так ведь можно, видимо, перед отправкой в буфер в тексте сделать преобразование в кодовую таблицу 1252. И тогда можно будет передавать тексты в буфер обмена без каких-либо заморочек. |
Re: FPD 2.6 и буфер обмена Windows | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Тестил на VS 2008 - минимальный сишный проект "без всего". Большая часть сего "исходника" находится в гугле за пару минут. просто имя_exe "строка которую надо положить в буфер обмена"- кавычки нужны чтобы пробелы передать. Исходников оного нет, и что там и как сделали разрабы неизвестно (не, ну коенчно не составляет труда запустить под win32 отладчиком и посмотреть чего он вызывает). Скорее всего они ПРОСТО не заморачивались на установку CF_LOCALE - в моём примере видно, что если прога скомпилирована в unicode версии, то она просто получает параметр командной строки в юникоде и помещает его в буфер обмена БЕЗ всяких неоднозначностей. Если же скомпилировать в ANSI версии, то без дополнительного кода система автоматом поместит в качестве CF_LOCALE тот идентификатор языка, который был активен в момент "копирования" - я понятия не имею какой язык активен для твоей досовской консоли-эмулятора, но раз выходят "иероглифы" - то вероятно не русский. Я же принудительно говорю что там русские буковки - это позволяет не заморачиваться на "текущий язык ввода". Вообще я не запускал эту мега-утилиту из под ntvdm - т.е. из FPD и ему подобных старичков, бог его знает как они взаимодействуют с обычными win32 программами... Не актуально это... ------------------ WBR, Igor |
Re: FPD 2.6 и буфер обмена Windows | |
---|---|
Crispy Сообщений: 18571 Дата регистрации: 16.05.2005 |
Цитата: Т.е. стандартными средствами это непереводимо. Для таких целей обычно использовали патчи - фонтов, файлов раскладок и прочего. Если на пальцах - тут ведь речь идет о том, чтобы скажем из интервала CHR(1)-CHR(255) (ведь их всего 255!) возвращались совсем другие символы, чем они возвращаются системой для данной утилиты. Да и кроме 1252=1251 надо возможно еще и 437=866 делать. Так что "будете у нас на Колыме — милости просим!" Поэтому мне кажется уж лучше Короче: www.youtube.com ------------------ В действительности все иначе, чем на самом деле. (Антуан де Сент-Экзюпери) |
Re: FPD 2.6 и буфер обмена Windows | |
---|---|
korsak Сообщений: 269 Откуда: Киров (Вятка) Дата регистрации: 27.03.2007 |
а слабо было просто компильнуть и страждущему отдать, который Шпака не брал? Исправлено 1 раз(а). Последнее : korsak, 15.02.13 11:05 |
Re: FPD 2.6 и буфер обмена Windows | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
У меня нету под рукой нормального сишного компилятора, который бы без лишних усилий сделал "минимальный самодостаточный exe". А создаваемый студией exe, которому нужен msvcr90.dll и ещё бог знает что, выкладывать смысла не вижу ни малейшего.
------------------ WBR, Igor |
Re: FPD 2.6 и буфер обмена Windows | |
---|---|
Simple777 Автор Сообщений: 33855 Дата регистрации: 05.11.2006 |
Ну, ежели подвести некоторые промежуточные итоги обсуждения.
Поместить в буфер клавиатуры текст можно для XP утилитой clip.exe, предложенной vk65 Для Vista, Win7 и Win8 можно использовать системную одноименную утилиту clip.exe А для считывания данных из буфера обмена в FPD можно сохранить содержимое буфера обмена в файл: nircmd.exe clipboard addfile "c:\My Files\info1.txt" Вроде бы текст всегда сохраняется в кодовой странице 1251, что легко преобразовывается в кодовую страницу 866. В принципе, это решение проблемы, причем эти варианты будут работать, начиная с XP и выше (для помещения данных в буфер обмена), и начиная с Win98 и выше для считывания данных из буфера обмена, чего вполне достаточно. Если б "допилить" утилитку на сях, то тогда было бы вообще универсальное решение для всех ОС Win, начиная с 98. Но насколько я понимаю, эта утилитка передает строку в буфер обмена, а не файл. Или можно передать через переменную содержимое файла? И будут ли ограничения в этом случае на длину передаваемой через переменную строки? Исправлено 2 раз(а). Последнее : Simple777, 15.02.13 23:14 |
Re: FPD 2.6 и буфер обмена Windows | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Написать можно всё что надо. Хоть через файл хоть через параметр командной строки. Для работы утилиты под Win9x скорее всего новая Visual Studio не подойдёт - надо искать антикварные компиляторы... Кроме того в мастдае буфер обмена работает не совсем так, насколько я помню...
Но уж извини делать это будет, очевидно, тот кому нужно антиквариат поддерживать - я пас. ------------------ WBR, Igor |
Re: FPD 2.6 и буфер обмена Windows | |
---|---|
Simple777 Автор Сообщений: 33855 Дата регистрации: 05.11.2006 |
Несколько некропостинг, но обсуждение поднятой темы по сути зашло в свое время некоторый тупик.
Но вот нынче опять появился вопрос об обмене данными в буфером Windows из-под FPD. Стал искать на форуме по nircmd Поиск дал неожиданный результат. forum.foxclub.ru Оказывается, еще за 7 лет до моего вопроса это обсуждалось. И есть отличная утилита WINCLIP, которая из-под FPD 2.6 может и текст помещать в буфер Windows, и считывать данные из оного буфера в файл. И вроде как даже с unicode работает. Такие дела. FPD 2.6 Forewer! |
Re: FPD 2.6 и буфер обмена Windows | |
---|---|
of63 Сообщений: 25256 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
Симпле, ты умрешь, и скажешь начертать на камне - "FPD" )
|
Re: FPD 2.6 и буфер обмена Windows | |
---|---|
Simple777 Автор Сообщений: 33855 Дата регистрации: 05.11.2006 |
|
Re: FPD 2.6 и буфер обмена Windows | |
---|---|
ssa Сообщений: 13008 Откуда: Москва Дата регистрации: 23.03.2005 |
С каких пор дос-программы стали запускать что-то "из-под" себя? С каких пор свойства виндовой консольной утилиты стали достоинствами ничего не знающей ничего про всё это дос-прогрммы? ------------------ Лень - это неосознанная мудрость. |
Re: FPD 2.6 и буфер обмена Windows | |
---|---|
of63 Сообщений: 25256 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
ну, в винде10 якобы сделали перенос Ctrl-C из черного окна в винду и обратно.. наврали)
|
© 2000-2024 Fox Club  |