powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / cannot open clipboard
25 сообщений из 52, страница 1 из 3
cannot open clipboard
    #39194437
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
D2007

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
if Clipboard.HasFormat(CF_TEXT) then
....
....

        try
          value := Clipboard.AsText;// ошибка здесь
        except

        end;//try except



здесь есть три темы на форуме, их прочел, не нашёл там ничего полезного

как же всё-таки правильно?
...
Рейтинг: 0 / 0
cannot open clipboard
    #39194449
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
добавиил:

Код: pascal
1.
2.
3.
          value := Clipboard.AsText;
          if GetLastError <> 0 then
            MessageBox(SysErrorMessage(GetLastError) + ', GetLastError: ' + IntToStr(GetLastError), constError, MB_OK+MB_ICONERROR);



вываливается только " cannot open clipboard "
...
Рейтинг: 0 / 0
cannot open clipboard
    #39194471
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11,

1. может там данные нетекстовые?
2. другие программы нормально работают?
...
Рейтинг: 0 / 0
cannot open clipboard
    #39194483
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
makhaon. может там данные нетекстовые?

я же написал:
if Clipboard.HasFormat(CF_TEXT) then
...
Рейтинг: 0 / 0
cannot open clipboard
    #39194486
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
makhaon2. другие программы нормально работают?

какие другие?
...
Рейтинг: 0 / 0
cannot open clipboard
    #39194491
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
возможно, я понял причину

У МЕНЯ БЫЛО ТАК
Код: pascal
1.
2.
3.
4.
5.
6.
7.
value := Clipboard.AsText;

...
...
...
а потом сразу
s := Clipboard.AsText;



я переделал
Код: pascal
1.
s := value;


отправил пользователю
у меня пока ошибок не наблюдалось
отправил на тестирование пользователю
...
Рейтинг: 0 / 0
cannot open clipboard
    #39196775
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проблема решилась не полностью
в течение часа 3-5 раз появляется сообщение
...
Рейтинг: 0 / 0
cannot open clipboard
    #39196786
Zelius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11,

Может в системе стоят следилки за клипбоардом? Можно посмотреть GetClipboardViewer покажет ли что нить. Плюс, посмотреть что вернет GetOpenClipboardWindow после ошибки.
...
Рейтинг: 0 / 0
cannot open clipboard
    #39196959
Michael Longneck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Совет будет некрасивый, но практичный. В ответ на этот Exception взять маленькую паузу и повторить действие. OleGetClipboard у меня выдавал регулярно такое сообщение, будучи вызываемым очень часто (TAction.OnUpdate). Я проблему свою решил через IsClipboardFormatAvailable. Но так, как у тебя проблема дальше, уже в операции внесения данных то выход - взять паузу и повторить.
...
Рейтинг: 0 / 0
cannot open clipboard
    #39196976
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а как сделать, чтобы окно с текстом " cannot open clipboard " не появлялось?
...
Рейтинг: 0 / 0
cannot open clipboard
    #39196978
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дело в том, что появляется как раз не exception, а простое окно
...
Рейтинг: 0 / 0
cannot open clipboard
    #39196983
Michael Longneck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну например отказаться от услуг Clipbrd модуля и вызвать все API вручную. Но честно говоря не нашёл я в этом модуле MessageBox. Всё там нормально (XE7)
...
Рейтинг: 0 / 0
cannot open clipboard
    #39196988
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Michael LongneckНо честно говоря не нашёл я в этом модуле MessageBox.
Его TAplication должен выдавать.
...
Рейтинг: 0 / 0
cannot open clipboard
    #39196993
Michael Longneck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну так не без посредства же raise exception. Там есть подозрительный момент,
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
procedure TClipboard.MainWndProc(var Message: TMessage);
begin
  try
    WndProc(Message);
  except
    if Assigned(ApplicationHandleException) then
      ApplicationHandleException(Self)
    else
      raise;
  end;
end;



но тогда просто надо Application.OnException подцепить и там сделать свою обработку.
...
Рейтинг: 0 / 0
cannot open clipboard
    #39197083
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11,

авторя же написал:
if Clipboard.HasFormat(CF_TEXT) then


между проверкой и вставкой проходит время. возможно, что формат меняется за эти доли секунды

авторкакие другие?

любые, которые с текстовым клипбордом работают
...
Рейтинг: 0 / 0
cannot open clipboard
    #39197091
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
makhaonмежду проверкой и вставкой проходит время. возможно, что формат меняется за эти доли секунды

нет, это исключено
я копирую в буфер обмена и программа выдаёт ошибку
я сразу же вставляю, например, в блокнот, чтобы проверить, что скопировалось и вижу, что проблем нет - вставилось в блокнот именно то, что копировал
...
Рейтинг: 0 / 0
cannot open clipboard
    #39197102
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zeliusпосмотреть что вернет GetOpenClipboardWindow после ошибки.

...
Рейтинг: 0 / 0
cannot open clipboard
    #39197142
Zelius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11,

HWND WINAPI GetOpenClipboardWindow(void); - посмотреть что за хендл она вернет (можно и до и после вызова) и по нему поискать кому принадлежит окно через Spy++
...
Рейтинг: 0 / 0
cannot open clipboard
    #39197429
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может, с юникодом какие грабли?

Попробуй допилить эту функцию

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
function GetClipboardString: WideString;
var
  LClip: TClipboard;
  LMem: THandle;
  LPtr: Pointer;
begin
  LClip := Clipboard;
  LClip.Open;
  try
    if not LClip.HasFormat(CF_UNICODETEXT) then
      Result := LClip.AsText
    else begin
      LMem := LClip.GetAsHandle(CF_UNICODETEXT);
      LPtr := GlobalLock(LMem);
      try
        SetString(Result, PWideChar(LPtr), GlobalSize(LMem) div SizeOf(Result[1]));
      finally
        GlobalUnlock(LMem);
      end;
    end;
  finally
    LClip.Close;
  end;
end;
...
Рейтинг: 0 / 0
cannot open clipboard
    #39197536
fd00ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кто-то открыл буфер и не закрыл. ты лезешь за данными - получаешь отлуп

Michael LongneckНо честно говоря не нашёл я в этом модуле MessageBoxхех, надо было искать raise EClipboardException.Create. этот же тип ошибок и ловить в Application.OnException, если надо их погасить
...
Рейтинг: 0 / 0
cannot open clipboard
    #39197637
Zelius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11,

+1 к _Vasilisk_, лочишь клипбоард и никуда он больше от тебя не денется, а если не лочится, то значит и не был твоим...
...
Рейтинг: 0 / 0
cannot open clipboard
    #39197783
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_Может, с юникодом какие грабли?

Программа, откуда копируют - моя и следит ща буфером тоже моя.
обе на D2007 написаны
...
Рейтинг: 0 / 0
cannot open clipboard
    #39208276
Zelius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11,

была недавно такая же ситуация, что-то блокировало клипбоард, сделал свой клипборад
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
type
  TClipboardExt = class(TClipboard)
  public
    procedure Open; override;
  end;

  TClipboardHelper = class helper for TClipboard
  public
    class function GetLockInfo: String;
  end;

procedure InstallExtClipboard;
begin
  SetClipboard(TClipboardExt.Create).Free;
end;

procedure TClipboardExt.Open;
var
  LockInfo: String;
begin
  try
    inherited Open;
  except
    on E: Exception do
    begin
      LockInfo := GetLockInfo;
      if LockInfo <> '' then
        E.Message := E.Message + Format( ' (locked by %s)', [LockInfo]);
      raise;
    end;
  end;
end;

class function TClipboardHelper.GetLockInfo: String;
var
  i: Integer;
  Buffer: array[0..1024] of Char;
  Wnd: HWND;
begin
  Result := '';
  Wnd := GetOpenClipboardWindow();
  if Wnd = 0 then Exit;

  Result := Format('HWND=%x', [Wnd]);

  i := GetWindowText( Wnd, Buffer, Length(Buffer));
  if i > 0 then
    Result := Result + '; Caption=' + Buffer;

  i := GetClassName( Wnd, Buffer, Length(Buffer));
  if i > 0 then
    Result := Result + '; Class=' + Buffer;

  if GetCurrentThreadId <> MainThreadID then
    Result := Result + '; ThreadID=' + IntToHex( GetCurrentThreadId, 8);
end;

initialization
  InstallExtClipboard;


в результате поймал HWND (остальная информация не помогла), через Spy++ выяснилось, что это сама дельфи (Seattle), наверное какое-то плагин... дальше копать не стал
...
Рейтинг: 0 / 0
cannot open clipboard
    #39208286
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zeliusчерез Spy++ выяснилось, что это сама дельфи (Seattle), наверное какое-то плагин... дальше копать не стал

у пользователя нет дельфи
...
Рейтинг: 0 / 0
cannot open clipboard
    #39208294
Zelius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11,

это все на что ты обратил внимание?
...
Рейтинг: 0 / 0
25 сообщений из 52, страница 1 из 3
Форумы / Delphi [игнор отключен] [закрыт для гостей] / cannot open clipboard
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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