WinForms 응용 프로그램을 "Always on Top"으로 만들려고했지만 "TopMost"를 설정해도 아무런 효과가 없었습니다. WinAmp가이 작업을 수행하기 때문에 가능하다는 것을 알고있었습니다 (다른 여러 응용 프로그램과 함께).
내가 한 것은 "user32.dll"을 호출하는 것이 었습니다. 나는 그렇게하는 것에 대해 아무런 불만이 없었고 훌륭하게 작동합니다. 어쨌든 옵션입니다.
먼저 다음 네임 스페이스를 가져옵니다.
using System.Runtime.InteropServices;
클래스 선언에 몇 가지 변수를 추가합니다.
private static readonly IntPtr HWND_TOPMOST = new IntPtr(-1);
private const UInt32 SWP_NOSIZE = 0x0001;
private const UInt32 SWP_NOMOVE = 0x0002;
private const UInt32 TOPMOST_FLAGS = SWP_NOMOVE | SWP_NOSIZE;
user32.dll 함수에 대한 프로토 타입을 추가합니다.
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int X, int Y, int cx, int cy, uint uFlags);
그런 다음 코드에서 (Form_Load ()에 호출을 추가했습니다) 호출을 추가하십시오.
SetWindowPos(this.Handle, HWND_TOPMOST, 0, 0, 0, 0, TOPMOST_FLAGS);
도움이 되었기를 바랍니다. 참고