powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / cannot open clipboard
25 сообщений из 52, страница 2 из 3
cannot open clipboard
    #39208312
fd00ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zelius, тебе в GetLockInfo надо бы пройтись по цепочке GetWindowThreadProcessId -> OpenProcess -> GetModuleFileNameEx, чтобы получить имя процесса, захватившего буфер ;-)
...
Рейтинг: 0 / 0
cannot open clipboard
    #39208319
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZeliusX11,

это все на что ты обратил внимание?

ну я код не изучал :)
не хочу его использовать
пока не хочу )))
...
Рейтинг: 0 / 0
cannot open clipboard
    #39208350
Фотография Gator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zelius, у него D2007. Там нет хелперов.
...
Рейтинг: 0 / 0
cannot open clipboard
    #39208352
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gatorу него D2007. Там нет хелперов.В 2006 уже были
...
Рейтинг: 0 / 0
cannot open clipboard
    #39208357
Фотография Gator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_, точно. Есть. Затупил.
...
Рейтинг: 0 / 0
cannot open clipboard
    #39208375
Zelius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторну я код не изучал :)

прелестно!

я показал методику, как с большой вероятностью можно определить кем заблокирован клипбоард. хелперы я просто вырезал из своего кода, не писать же новый, тем более ТСу то ничего и не надо, кроме готового разжеванного ответа. ну может кто-то из гугла заглянет...
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
cannot open clipboard
    #39732474
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чтобы скопировать что-то своё в буфер, достаточно ли просто одной строки
Код: pascal
1.
Clipboard.AsText := s;


?

Или нужна обёртка из:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
  if not s.IsEmpty then
  begin
    Clipboard.Open;
    try
      Clipboard.AsText := s;
    finally
      Clipboard.close;
    end;
  end;



Вопрос в продолжение моей темы. Имею две программы. Одна что-то копирует в буфер, вторая мониторит буфер и ловит инфу.
Дело в том, что в первой программе я делаю просто копирование в буфер одной строкой.
Но когда в другой своей программе, я пытаюсь прочесть из буфера строку, то получаю ошибку:
ERROR. WMDrawClipboard. ClipboardOwner=9511674. WindowThreadProcessId=11108. Cannot open clipboard: Отказано в доступе

В Диспетчере задач посмотрел, что это за WindowThreadProcessId=11108, а это моя первая программа.
...
Рейтинг: 0 / 0
cannot open clipboard
    #39732482
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и нужно ли делать такую обёртку, когда читаешь из буфера?
или ждостаточной одной строки?
Код: pascal
1.
value := Clipboard.AsText;
...
Рейтинг: 0 / 0
cannot open clipboard
    #39732486
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11или ждостаточной одной строки?
Спорю, что проверить это было-бы быстрее ожидания ответа на форуме.
На втором месте чтение справки:
авторUse the AsText property to place text in and retrieve text from the clipboard. The clipboard must contain a string or an exception occurs. To determine if the clipboard contains a string, pass CF_TEXT to the HasFormat method.
...
Рейтинг: 0 / 0
cannot open clipboard
    #39732491
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
13.11.2018 15:14, X11 пишет:
> Чтобы скопировать что-то своё в буфер, достаточно ли просто одной строки
> Clipboard.AsText := s;

если тебе похеру "крякозябры", то да.
а если НЕ похеру, то

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
function SendToClipboard(const S: string): boolean;
var
  hClipbrd: THandle;
begin
  Result := True;
  Clipboard.Open;
  Clipboard.AsText := S;
  hClipbrd := Clipboard.GetAsHandle(CF_TEXT);
  if hClipbrd = INVALID_HANDLE_VALUE then
    Result := False
  else
    SetClipboardData(CF_LOCALE, hClipbrd);
  Clipboard.Close;
end;



Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
cannot open clipboard
    #39732504
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadmanСпорю, что проверить это было-бы быстрее ожидания ответа на форуме.

Параллельно проверяю.
Эффект нулевой.
Всё равно вторая программа выдаёт исключение при чтении буфера.


wadmanНа втором месте чтение справки:
Читал. Только не понял, нужно ли при записи в буфер самому указывать формат или это за меня сделает Дельфи.

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
procedure TClipboard.SetAsText(const Value: string);
{$IF NOT DEFINED(CLR)}
begin
  SetBuffer(CTextFormat, PChar(Value)^, ByteLength(Value) + SizeOf(Char));
{$ELSE}
var
  Buffer: TBytes;
begin
  Buffer := WideBytesOf(Value + #0);
  SetBuffer(CTextFormat, Buffer, Length(Buffer))
{$ENDIF}
end;
...
Рейтинг: 0 / 0
cannot open clipboard
    #39732506
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящийесли тебе похеру "крякозябры", то да.

ОК, т.е. получается, что в коде чтения из буфера проблема.
Но если обратиться к справке

справкаThe clipboard must contain a string or an exception occurs.
то исключения быть не должно, т.к. в буфере 100% строка.
Т.к. я отправляю в первой программе именно строку в буфер.

Я уже 100500 проверок перепробовал в коде чтения из буфера. Задолбало это исключение.
...
Рейтинг: 0 / 0
cannot open clipboard
    #39732507
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Локаль мне не нужна, т.к. я отправляю в буфер только цифры.
...
Рейтинг: 0 / 0
cannot open clipboard
    #39732508
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11Всё равно вторая программа выдаёт исключение при чтении буфера.
Странно, но у меня asText работает в обоих направлениях.
Но Мимопроходящий верно отметил, что с юникодом беда.
...
Рейтинг: 0 / 0
cannot open clipboard
    #39732510
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий> Чтобы скопировать что-то своё в буфер, достаточно ли просто одной строки
> Clipboard.AsText := s;

если тебе похеру "крякозябры", то да.

Ты пишешь, что достаточно одной этой строки, но тут же предлагаешь код с обёрткой из open/close.
...
Рейтинг: 0 / 0
cannot open clipboard
    #39732512
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11Я уже 100500 проверок перепробовал в коде чтения из буфера. Задолбало это исключение.
Напиши свою обертку зарегистрировав свой формат клипборда как строку.
Это исключит кучу ошибок. Например, таким образом сделано у фастрепорта.
...
Рейтинг: 0 / 0
cannot open clipboard
    #39732513
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadmanСтранно, но у меня asText работает в обоих направлениях.

У меня тоже в обоих, но исключение почти всегда на читающей стороне.
...
Рейтинг: 0 / 0
cannot open clipboard
    #39732518
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadman, мне не нужен свой формат, т.к. пользователь копирует в буфер текст не только из первой моей программы, но так же текст и из Блокнота, из браузера, ещё откуда-то.
...
Рейтинг: 0 / 0
cannot open clipboard
    #39732519
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11, придется разбираться тогда... Какое исключение?
...
Рейтинг: 0 / 0
cannot open clipboard
    #39732524
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При чтении, я, конечно же проверяю
if Clipboard.HasFormat(CF_TEXT) then
...
Рейтинг: 0 / 0
cannot open clipboard
    #39732525
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadmanКакое исключение?

выше я написал:
X11ERROR. WMDrawClipboard. ClipboardOwner=9511674. WindowThreadProcessId=11108. Cannot open clipboard: Отказано в доступе
...
Рейтинг: 0 / 0
cannot open clipboard
    #39732528
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот что я заметил, когда я отлаживаю код, то ошибки нет. Исключения нет.
Может нужно перед проверкой сделать какую-то паузу?
...
Рейтинг: 0 / 0
cannot open clipboard
    #39732529
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сделал
Код: pascal
1.
2.
Sleep(300);
value := Clipboard.AsText;



И ошибка исчезла.
Но нигде в справке этого нет. Это Винда виновата? Антивирус?
...
Рейтинг: 0 / 0
cannot open clipboard
    #39732530
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
cannot open clipboard
    #39732535
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11Вот что я заметил, когда я отлаживаю код, то ошибки нет. Исключения нет.
Операция с буфером затратная по времени. Если ты в одном месте сразу вставляешь и сразу достаешь, то стоит делать некую паузу. Например, вставь из блокнота, переключись на свое приложение и проверь.
Это и есть типичный сценарий.
Для взаимодействия на уровне одной программы без участия пользователя лучше задействовать иные механизмы.
...
Рейтинг: 0 / 0
25 сообщений из 52, страница 2 из 3
Форумы / Delphi [игнор отключен] [закрыт для гостей] / cannot open clipboard
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]