현재 프로세스 인 뷰어를 설정했으며 메시지를 수신하려고합니다. WM_DRAWCLIPBOARD
.WinApi C#에서 클립 보드 이벤트를 구독하는 방법?
[DllImport("User32.dll", CharSet = CharSet.Auto)]
public static extern IntPtr SetClipboardViewer(IntPtr hWndNewViewer);
var result = WinapiClipboard.SetClipboardViewer(Process.GetCurrentProcess().Handle);
그것은 내가 그 메시지를 구문 분석하는 애플리케이션 정의 함수를 사용해야하는 right here 말한다. 그러나 결코 함수/메소드에 영향을 미치지 않습니다.
private static IntPtr WndProc(IntPtr hWnd, uint message, IntPtr wParam, IntPtr lParam)
{
var hdc = Process.GetCurrentProcess().Handle;
var clipboard = new WinClipboard();
switch (message)
{
case WinapiClipboard.WM_DRAWCLIPBOARD:
var result = clipboard.GetUnicodeTextAsync().Result;
return IntPtr.Zero;
default:
break;
}
return WinapiClipboard.DefWindowProc(hWnd, message, wParam, lParam);
}
어떻게해야합니까? 나는 심지어 정확하게 구독하고 있는가?
UPDATE :
내가 윈폼/WPF 또는 그 .NET 고전적인 프레임 워크의 기능 중 하나를 사용하고 있지 않다. 내가 가진 모든 .net 표준 2.0 또는 .net 코어.
는 [SetClipboardViewer] (https://msdn.microsoft.com/en-us/library/windows/desktop/ms649052.aspx)는 ** 창 ** 핸들,하지를 기대 ** 프로세스 ** 처리. 창 핸들이없는 경우 유일한 목적으로 [메시지 전용 창] (https://msdn.microsoft.com/en-us/library/windows/desktop/ms632599.aspx#message_only)을 만듭니다. 클립 보드 메시지를 수신 중입니다. – IInspectable
이것은 항상 전체 프레임 워크를 사용할 수있는 종류의 기계에서만 작동합니다. 따라서 .netcore/standard를 목표로하는 것은 무의미한 방법으로 여러분의 삶을 복잡하게 만듭니다. 음, 우리. –