Всегда на высоте, даже в полноэкранных играх

Как разместить приложение Windows Form поверх всего на экране?

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

Если у кого-то есть решение для старых добрых форм, я тоже буду рад

Я видел много сообщений на этом форуме, в которых говорилось, что это невозможно, но я знаю, что это не так, потому что я видел много приложений (fraps, teampeak overlay, xfire и т. д.), которые делают это.


person Community    schedule 25.02.2014    source источник
comment
Представьте, если бы два приложения попытались сделать это одновременно blogs.msdn.com/b/oldnewthing/archive/2011/03/10/10138969.aspx   -  person Pete Baughman    schedule 26.02.2014
comment
Fraps делает это через DirectX/OpenGL. Если вы хотите использовать низкоуровневый графический API, это возможно, но не в обычной форме окна (за исключением Form.TopMost).   -  person Nathan    schedule 26.02.2014
comment
Вы используете MS-Windows?   -  person ctrl-alt-delor    schedule 26.02.2014
comment
Комедийный вариант: сделайте скриншот приложения Windows Form, распечатайте его, приклейте на экран. Серьезный комментарий. Натан прав, но замалчивает тот факт, что это может быть намного проще на неуправляемом языке, отличном от C#, где у вас гораздо больше контроля над рисованием. Я сомневаюсь, что TeamSpeak использует Winforms для своих целей — вероятно, им пришлось перевернуть много собственной логики рисования.   -  person Pete Baughman    schedule 26.02.2014
comment
@PeteBaughman Это определенно правда, на других языках это может быть гораздо более выполнимо. Я просто говорю в контексте оконных форм, так как об этом спрашивали.   -  person Nathan    schedule 26.02.2014
comment
да, я использую MS Windows, например, игра использует OpenGL, я слышал некоторые вещи, такие как хуки, я много искал о хуках OpenGL, но я действительно не получил ничего полезного. у кого-нибудь есть информация об этом? С#!   -  person    schedule 26.02.2014


Ответы (1)


Если вы хотите использовать графическую библиотеку для постоянного отображения чего-либо на экране, вы можете запустить здесь, на SO. Существуют библиотеки-оболочки, такие как OpenTK для OpenGL. Если вы хотите пойти по маршруту DirectX, вам нужно будет загрузить библиотеки C++ и получить к ним доступ с помощью P/Invoke. Для начала есть хорошее руководство по на msdn< /а>. Оболочки для DirectX также существуют в виде SharpDX.

person Nathan    schedule 26.02.2014