GetClipboardOwner() и UWP-приложения
От: Basil2 Россия https://starostin.msk.ru
Дата: 12.06.20 16:07
Оценка:
Внезапно оказалось, что для UWP-приложений функция GetClipboardOwner() возвращает одно и тоже значение!

Не важно, копирую ли я в буфер через Калькулятор или Paint 3D, HWND приходит одинаковый

А надо в итоге узнать, какое именно приложение добавило содержимое в буфер. Делаю через обработку WM_CLIPBOARDUPDATE.

Кто-нибудь с этим сталкивался?
Куда вообще можно копать?
Проект Ребенок8020 — пошаговый гайд как сделать, вырастить и воспитать ребенка.
Re: GetClipboardOwner() и UWP-приложения
От: flаt  
Дата: 12.06.20 17:23
Оценка:
Здравствуйте, Basil2, Вы писали:

B>Внезапно оказалось, что для UWP-приложений функция GetClipboardOwner() возвращает одно и тоже значение!


Какое?
Re[2]: GetClipboardOwner() и UWP-приложения
От: Basil2 Россия https://starostin.msk.ru
Дата: 16.06.20 12:04
Оценка:
Здравствуйте, flаt, Вы писали:

B>>Внезапно оказалось, что для UWP-приложений функция GetClipboardOwner() возвращает одно и тоже значение!


F>Какое?


Ну это же HWND. Какое винда при старте назначит, такое и возвращает Сейчас вот hWnd = 0x000104a8. Принадлежит оно svchost.exe.

Проблема в том, что и для Calculator, и для Paint3D возвращается одно и тоже значение. Что принципиально противоречит смыслу GetClipboardOwner() — как же теперь понять, какое приложение записало в буфер обмена?
Проект Ребенок8020 — пошаговый гайд как сделать, вырастить и воспитать ребенка.
Re[3]: GetClipboardOwner() и UWP-приложения
От: Pavel Dvorkin Россия  
Дата: 19.06.20 15:35
Оценка:
Здравствуйте, Basil2, Вы писали:

B>Ну это же HWND. Какое винда при старте назначит, такое и возвращает Сейчас вот hWnd = 0x000104a8. Принадлежит оно svchost.exe.


B>Проблема в том, что и для Calculator, и для Paint3D возвращается одно и тоже значение. Что принципиально противоречит смыслу GetClipboardOwner() — как же теперь понять, какое приложение записало в буфер обмена?


Выскажу гипотезу — UWP приложение обращается к svchost для того, чтобы поместить в Clipboard, а он это делает.
От этого тебе, конечно, не легче.
With best regards
Pavel Dvorkin
Re[4]: GetClipboardOwner() и UWP-приложения
От: Basil2 Россия https://starostin.msk.ru
Дата: 22.06.20 09:03
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

B>>Проблема в том, что и для Calculator, и для Paint3D возвращается одно и тоже значение. Что принципиально противоречит смыслу GetClipboardOwner() — как же теперь понять, какое приложение записало в буфер обмена?


PD>Выскажу гипотезу — UWP приложение обращается к svchost для того, чтобы поместить в Clipboard, а он это делает.

PD>От этого тебе, конечно, не легче.

Не легче Но я нашел способ — GetForegroundWindow(). Не 100% точно, но приемлимо.
Проект Ребенок8020 — пошаговый гайд как сделать, вырастить и воспитать ребенка.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.