WPF Clipboard Viewer
April 30, 2008
One of the common tasks is to monitor clipboard and perform some actions, when it changes. I encountered such task in WPF. WPF as well as .NET doesn’t have any built in components to solve this task. After some googling i found a great article, which describes how to monitor clipboard in windows form. I am strongly recommended to read this article, because further reading assumes, that you know it.
Why this approach is not possible in WPF? Because WPF Window doesn’t have property Handle and you can’t override WndProc. Seems to be troublesome. First problem can be solved using PresentationSource class. PresentationSource is another wrapper around windows handle. You can get it using PresentationSource.FromVisual method. Actually, you will be working with HwndSource class, which is derived from PresentationSource. HwndSource has property Handle. So, first problem is solved. What about ovveriding WndProc? I don’t know how to do it in WPF, but i suggest another approach. HwndSource has method AddHook, which allows us to receive all window messages. Thanks to these ideas we can implement Clipboard Viewer in WPF. I called my class ClipBoardViewer, it construts from any HwndSource and expose event ClipBoardTextChanged. Feel free to modify it for your needs.
Privet. tut vsjo latinicei, reshil ne narushat’ tradiciju.. vot chego-to nabral domen ot nechego delat’ v brausere.. a tut u tebja celyi site. Dage gljadet’ prijatno bilo bi esli by ty byl by ne vindusjatnikom i||ili projecti ne byli by otkrovenno detskimi.. smena obojev.. luboi uvagaushii sebja DE tak moget is korobki.. i luboi WM posvoljaet realizovat’ funcional za 3 minuty..
a, nu da.. eto ja v svoem repertuare.. voobshe tak, pozdorovat’sja reshil prosto…
site smotritsja nichego.. prijatnet’ko..
Andrey.
ya tak podozrevat’ nachinaju chto tut vse spjat..
Я категорически вас приветствую Андрей.
К сожалению, я не смог понять кто вы именно, поэтому неплохо было бы уточнить.
И не пишите пожалуйста транслитом.
Симметрично, Игорь Олегович.
Прошу прощения за некоторую излишнюю самоуверенность (в том что Вы меня узнаете), с чего бы я это собственно взял – не знаю.
Клаус Андрей Иванович, ФВТ, 2км.
Гы-гы.
Вам, товарищ Клаус, можно не то что без «Выканий» с большой буквы, можно «тыкать» с маленькой, кстати, я не понял, что значит «2км». Собственно по поводу этого блога, тут все обязательно должно быть просто и понятно, по-другому просто не допустимо. Ко всему прочему, тебя не в контакте и прочих зомби-сетях, может у тебя блог есть? Почитал бы ;-)
PS Скоро соберусь с силами и выложу статью связанную с имитационным моделированием. Как там ваш учебник поживает?
Спасибо за позволение тыкать ), пожалуй, воспользуюсь возможностью. Ну и оно, конечно, симметрично, так сказать. В смысле тыкай, тока не острыми предметами и не предметами вообще )
2км – второй курс магистратуры?
Не, блога нет. Я вроде как занят. По шею просто :) Да и не увлекаюсь я этим всем.. может буду взрослей – заведу :) Да и на твой блог почти по воле случая попал.. просто решил как то часа в 3 ночи понабирать в поисковике имена одногрупников, кого помнил.. интересно.. и вспомнил в процессе что у тебя вроде запоминающаяся почта была, вот и зашёл.. это я к тому что блогами не увлекаюсь особо.
Статью по моделированию обязательно прочту на досуге.
Учебник.. да я вот у Свечкарёва не был уже месяца два.. лишь бы он не обиделся.. вроде время пока есть.. Виктор на первом этапе показал ему чего-то, что работало и больше наверное ничего и не было. Я тут почти освободился.. ну не то чтобы освободился, но где-то через неделю должно быть посвободнее со временем, вот пойду искать Виктора да к Свечкарёву схожу, там смогу конкретней сказать что с учебником.. а так я и сам не совсем в курсе )
А смена обоев – всё таки детство, да ).
Вот я думаю информация к размышлению тебе может быть интересна, может ты не знаешь об этом и узнав, заинтересуешься. А может и не заинтересуешься. Это всё таки не совсем то что ты описывал.., просто прочитал у тебя про ролевые игры, а это почти в тему )
Есть такая игрушка ВегаСтрайк (vegastrike, скриншоты здесь http://vegastrike.sourceforge.net/gallery2/main.php).
Это симулятор космического корабля. Во многом напоминает ролевую игру, если я верно себе представляю.. ну то есть это не просто симулятор (как например, миг-КАКОЙ-ТО), а игровая вселенная.. такая, что вот ты летаешь, выполняешь задания(перевозишь грузы или дерёшся с пиратами.. или не выполняешь задания.. что тоже неплохо) и в результате этого “прокачиваешь” свой корабль, или покупаешь новый корабль.. или не покупаешь. в обшем, по-моему походит на прокачку скилов персонажа в ролевых играх. Для вас (виндусятнков) там инсталятор привычный есть.
Основной интерес (на мой взгляд) представляет то, что этот проект – свободный (GPL), и ты можешь принять участие в разработке. Игра вроде начиналась как проект лишь для удовольствия. Сейчас это выросло в довольно солидную игру с неплохой графикой, различными моделями корабля и довольно интересным и большим игровым миром. В одиночку и без финансирования, как ты заметил, сколь нибудь серьёзную игру не потянуть, а вот в команде и для собственного удовольствия – почему бы и нет. Сам я этим (играми) не очень увлекаюсь со времён моей сеги по большому счёту, но если бы увлекался, наверное заинтересовался бы.. хотя кто его знает. В общем, полагая, что ты не знаком с подобными проектами, решил, на правах знакомого (твоего и с подобными проектами:) ), запостить ссылку. Даже если тебе совсем не интересно это (разработка игр), думаю сама идея такой разработки может быть полезна… Вдруг почерпнёшь для себя чего. Прошу прощения за спам ежели совсем не в тему попал ).
Неплохое описание vegastrike на русском
http://knoppix.ru/vegastrike.shtml
я как никак ни с какой стороны не мастер слова, а тут даже читать вполне приятно.
Thanks so much ! This was exactly what I needed, and in VB.NET too !! :-)