BG Development


Страници: (3) [1] 2 3   ( Първото ново мнение ) Reply to this topicStart new topicStart Poll

> Ефекти на Clipboard, Търся софтуерно решение
Антон Яначков
Публикувано на: 27-12-2021, 11:33
Quote Post



Име: Антон Яначков
Група: Потребител
Ранг: Почетен член

Мнения: 2504
Регистриран на: 27.07.16



Имам следния проблем. Когато подавам софтуерно стринг към Clipboard, ако в този момент съм на Кирилица, всичко е нормално, но ако съм на Латиница, то при пействане, текста излиза в ANSI код. Има вариант да следя софтуерно на каква клавиатурна подредба съм и да я превключвам, но много по-добре би било да корегирам текста преди да го подам към Clipboard или преди да го взема от там. На мен тези таблици са ми пълна мътилка. Какво трябва да направя с буквата, така че буквата А да бъде пак А и след пействане, нищо че съм я копирал, когато съм бил на Латиница?
PMEmail PosterUsers Website
Top
dvader
Публикувано на: 27-12-2021, 12:13
Quote Post


Group Icon
Име:
Група: VIP
Ранг: Почетен член

Мнения: 4957
Регистриран на: 12.07.05



Ползвай Уникод при слагането в Clipboard - CF_UNICODETEXT.


--------------------
I find your lack of faith disturbing
PM
Top
Дон Реба
Публикувано на: 27-12-2021, 12:40
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 9628
Регистриран на: 11.11.06



GetClipboardData си има параметър в какъв формат искаш резултата, ако конверсията е възможна, виндовса ти я прави

едит: що ли ми се струва че имаш друг проблем обаче, нещо премълчаваш/пропускаш

Това мнение е било редактирано от Дон Реба на 27-12-2021, 12:41
PM
Top
Дон Реба
Публикувано на: 27-12-2021, 12:47
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 9628
Регистриран на: 11.11.06



QUOTE (dvader @ 27-12-2021, 12:13)
Ползвай Уникод при слагането в Clipboard - CF_UNICODETEXT.

това предполага да подаваш указател към уникод (16 бит символ) , той явно подава анси, или нещо тотално е объркал в описанието, даже почвам да се сещам какво - (предполагам) той подава анси кирилица винаги, но когато пейстне според кирилизатора кирилицата се пейства като кирилица или като маймуница.
PM
Top
Антон Яначков
Публикувано на: 27-12-2021, 13:11
Quote Post



Име: Антон Яначков
Група: Потребител
Ранг: Почетен член

Мнения: 2504
Регистриран на: 27.07.16



QUOTE (dvader @ 27-12-2021, 12:13)
Ползвай Уникод при слагането в Clipboard - CF_UNICODETEXT.

Не мога да го излъжа и с тази константа. Предполагам, че проблема идва от това, че приложението е 32 битово, а аз отварям глобалния Clipbord, а той е 64 битов и подавам на него. Явно трябва да прочета стринга бит по бит и предполагам, че трябва да ги дублирам тези битове или да добавям 0. Нямам на идея как работи тази дяволия наречена Clipboard. Когато е в локалния Clipboard на самото приложение, всичко е точно, дори с константата CF_TEXT, но изляза ли извън приложението и не съм превключил клавиатурата, става маджа с грозде.
PMEmail PosterUsers Website
Top
Антон Яначков
Публикувано на: 27-12-2021, 13:32
Quote Post



Име: Антон Яначков
Група: Потребител
Ранг: Почетен член

Мнения: 2504
Регистриран на: 27.07.16



QUOTE (Дон Реба @ 27-12-2021, 12:47)
QUOTE (dvader @ 27-12-2021, 12:13)
Ползвай Уникод при слагането в Clipboard - CF_UNICODETEXT.

това предполага да подаваш указател към уникод (16 бит символ) , той явно подава анси, или нещо тотално е объркал в описанието, даже почвам да се сещам какво - (предполагам) той подава анси кирилица винаги, но когато пейстне според кирилизатора кирилицата се пейства като кирилица или като маймуница.

Дали правилно се пейства или на маймуница, зависи само от това дали приложението, което подава към клипбоарда е на Кирилица или Латиница. При самото пействане, без значение в какво приложение и на каква клавиатура, всичко е точно, но само и единствено, ако копирането е било при Кирилица.
PMEmail PosterUsers Website
Top
Дон Реба
Публикувано на: 27-12-2021, 14:15
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 9628
Регистриран на: 11.11.06



аха, взеха да се изясняват нещата
тоест, подаващото приложение е твое, а четящите чужди, е малко с ченгел но ако е това, комбинирай отговора на вейдър със моя втори отговор - ползвай CF_UNICODETEXT НО и подавай уникод, няма да стане ако му подаваш анси и да го лъжеш че подаваш уникод. превръщането на анси към уникод обаче не е тривиално, всъщност точно затова като си на кирилица работи - виндовса знае че това е кирилица, когато си на латиница обаче не знае високите символи какви са. според мен най-простия и сигурен вариант е да си нацъкаш сам конвертиращата таблица, вадиш уникоде кирилицата , вадиш и анси кирилицата (1251), може да си ги намериш готови в нета таблиците, или да ползваш навиндовса системното тулче charactermap
PM
Top
JanBirdX
Публикувано на: 27-12-2021, 14:50
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 1794
Регистриран на: 21.02.05



с това на става ли: multibytetowidechar
PMEmail Poster
Top
Антон Яначков
Публикувано на: 27-12-2021, 14:59
Quote Post



Име: Антон Яначков
Група: Потребител
Ранг: Почетен член

Мнения: 2504
Регистриран на: 27.07.16



QUOTE (Дон Реба @ 27-12-2021, 14:15)
аха, взеха да се изясняват нещата
тоест, подаващото приложение е твое, а четящите чужди, е малко с ченгел но ако е това, комбинирай отговора на вейдър със моя втори отговор - ползвай CF_UNICODETEXT НО и подавай уникод, няма да стане ако му подаваш анси и да го лъжеш че подаваш уникод. превръщането на анси към уникод обаче не е тривиално, всъщност точно затова като си на кирилица работи - виндовса знае че това е кирилица, когато си на латиница обаче не знае високите символи какви са. според мен най-простия и сигурен вариант е да си нацъкаш сам конвертиращата таблица, вадиш уникоде кирилицата , вадиш и анси кирилицата (1251), може да си ги намериш готови в нета таблиците, или да ползваш навиндовса системното тулче charactermap

Явно това е отговора, но ще видя дали ще ми стигне творческия ентусиазъм. На пръв поглед ми се струва доста работа. А от опит знам, че понякога е добре да се поизчака, та дано ми хрумне по-мързеливо решение. Всъщност аз най-мързеливото го знам, да сменя софтуерно клавиатурата, но ми изглежда дървено.
Благодаря за помоща!
PMEmail PosterUsers Website
Top
Дон Реба
Публикувано на: 27-12-2021, 15:05
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 9628
Регистриран на: 11.11.06



QUOTE (Антон Яначков @ 27-12-2021, 14:59)
Всъщност аз най-мързеливото го знам, да сменя софтуерно клавиатурата, но ми изглежда дървено.

има недървен вариант на същото решение - SetThreadLocale, пробвай дали ще стане

това няма да смени езика на клавиатурата (това е дървено да), но ще информира виндовса че ползвателя на клипборда иска текста да се третира като кирилица

Това мнение е било редактирано от Дон Реба на 27-12-2021, 15:08
PM
Top
1 потребители преглеждат тази тема в момента (1 гости, 0 анонимни потребители)
Потребители, преглеждащи темата в момента:

Topic Options Страници: (3) [1] 2 3  Reply to this topicStart new topicStart Poll

 


Copyright © 2003-2019 | BG Development | All Rights Reserved
RSS 2.0