Elin Decompiled Documentation EA 23.102 Nightly
Loading...
Searching...
No Matches
B83.Win32.UnityDragAndDropHook Class Reference

Public Member Functions

delegate void DroppedFilesEvent (List< string > aPathNames, POINT aDropPoint)
 

Static Public Member Functions

static void InstallHook ()
 
static void UninstallHook ()
 

Events

static DroppedFilesEvent OnDroppedFiles
 

Static Private Member Functions

static bool EnumCallback (IntPtr W, IntPtr _)
 
static IntPtr Callback (int code, IntPtr wParam, ref MSG lParam)
 

Static Private Attributes

static uint threadId
 
static IntPtr mainWindow = IntPtr.Zero
 
static IntPtr m_Hook
 
static string m_ClassName = "UnityWndClass"
 

Detailed Description

Definition at line 8 of file UnityDragAndDropHook.cs.

Member Function Documentation

◆ Callback()

static IntPtr B83.Win32.UnityDragAndDropHook.Callback ( int  code,
IntPtr  wParam,
ref MSG  lParam 
)
inlinestaticprivate

Definition at line 52 of file UnityDragAndDropHook.cs.

53 {
54 if (code == 0 && lParam.message == WM.DROPFILES)
55 {
56 WinAPI.DragQueryPoint(lParam.wParam, out var pos);
57 uint num = WinAPI.DragQueryFile(lParam.wParam, uint.MaxValue, null, 0u);
58 StringBuilder stringBuilder = new StringBuilder(1024);
59 List<string> list = new List<string>();
60 for (uint num2 = 0u; num2 < num; num2++)
61 {
62 int num3 = (int)WinAPI.DragQueryFile(lParam.wParam, num2, stringBuilder, 1024u);
63 list.Add(stringBuilder.ToString(0, num3));
64 stringBuilder.Length = 0;
65 }
66 WinAPI.DragFinish(lParam.wParam);
67 if (UnityDragAndDropHook.OnDroppedFiles != null)
68 {
69 UnityDragAndDropHook.OnDroppedFiles(list, pos);
70 }
71 }
72 return WinAPI.CallNextHookEx(m_Hook, code, wParam, ref lParam);
73 }
WM
Definition: WM.cs:6

References B83.Win32.WinAPI.CallNextHookEx(), B83.Win32.WinAPI.DragFinish(), B83.Win32.WinAPI.DragQueryFile(), B83.Win32.WinAPI.DragQueryPoint(), B83.Win32.UnityDragAndDropHook.m_Hook, and B83.Win32.UnityDragAndDropHook.OnDroppedFiles.

Referenced by B83.Win32.UnityDragAndDropHook.InstallHook().

◆ DroppedFilesEvent()

delegate void B83.Win32.UnityDragAndDropHook.DroppedFilesEvent ( List< string >  aPathNames,
POINT  aDropPoint 
)

◆ EnumCallback()

static bool B83.Win32.UnityDragAndDropHook.EnumCallback ( IntPtr  W,
IntPtr  _ 
)
inlinestaticprivate

Definition at line 23 of file UnityDragAndDropHook.cs.

24 {
25 if (Window.IsWindowVisible(W) && (mainWindow == IntPtr.Zero || (m_ClassName != null && Window.GetClassName(W) == m_ClassName)))
26 {
27 mainWindow = W;
28 }
29 return true;
30 }
Definition: Window.cs:13

References B83.Win32.Window.GetClassName(), B83.Win32.Window.IsWindowVisible(), B83.Win32.UnityDragAndDropHook.m_ClassName, and B83.Win32.UnityDragAndDropHook.mainWindow.

Referenced by B83.Win32.UnityDragAndDropHook.InstallHook().

◆ InstallHook()

static void B83.Win32.UnityDragAndDropHook.InstallHook ( )
inlinestatic

Definition at line 32 of file UnityDragAndDropHook.cs.

33 {
34 threadId = WinAPI.GetCurrentThreadId();
35 if (threadId != 0)
36 {
37 Window.EnumThreadWindows(threadId, EnumCallback, IntPtr.Zero);
38 }
39 IntPtr moduleHandle = WinAPI.GetModuleHandle(null);
40 m_Hook = WinAPI.SetWindowsHookEx(HookType.WH_GETMESSAGE, Callback, moduleHandle, threadId);
41 WinAPI.DragAcceptFiles(mainWindow, fAccept: true);
42 }
static IntPtr Callback(int code, IntPtr wParam, ref MSG lParam)
static bool EnumCallback(IntPtr W, IntPtr _)

References B83.Win32.UnityDragAndDropHook.Callback(), B83.Win32.WinAPI.DragAcceptFiles(), B83.Win32.UnityDragAndDropHook.EnumCallback(), B83.Win32.Window.EnumThreadWindows(), B83.Win32.WinAPI.GetCurrentThreadId(), B83.Win32.WinAPI.GetModuleHandle(), B83.Win32.UnityDragAndDropHook.m_Hook, B83.Win32.UnityDragAndDropHook.mainWindow, B83.Win32.WinAPI.SetWindowsHookEx(), and B83.Win32.UnityDragAndDropHook.threadId.

Referenced by FileDragAndDrop.OnEnable(), and ImageExample.OnEnable().

◆ UninstallHook()

static void B83.Win32.UnityDragAndDropHook.UninstallHook ( )
inlinestatic

Definition at line 44 of file UnityDragAndDropHook.cs.

45 {
46 WinAPI.UnhookWindowsHookEx(m_Hook);
47 WinAPI.DragAcceptFiles(mainWindow, fAccept: false);
48 m_Hook = IntPtr.Zero;
49 }

References B83.Win32.WinAPI.DragAcceptFiles(), B83.Win32.UnityDragAndDropHook.m_Hook, B83.Win32.UnityDragAndDropHook.mainWindow, and B83.Win32.WinAPI.UnhookWindowsHookEx().

Referenced by FileDragAndDrop.OnDisable(), and ImageExample.OnDisable().

Member Data Documentation

◆ m_ClassName

string B83.Win32.UnityDragAndDropHook.m_ClassName = "UnityWndClass"
staticprivate

Definition at line 18 of file UnityDragAndDropHook.cs.

Referenced by B83.Win32.UnityDragAndDropHook.EnumCallback().

◆ m_Hook

IntPtr B83.Win32.UnityDragAndDropHook.m_Hook
staticprivate

◆ mainWindow

IntPtr B83.Win32.UnityDragAndDropHook.mainWindow = IntPtr.Zero
staticprivate

◆ threadId

uint B83.Win32.UnityDragAndDropHook.threadId
staticprivate

Definition at line 12 of file UnityDragAndDropHook.cs.

Referenced by B83.Win32.UnityDragAndDropHook.InstallHook().

Event Documentation

◆ OnDroppedFiles

DroppedFilesEvent B83.Win32.UnityDragAndDropHook.OnDroppedFiles
static

Definition at line 20 of file UnityDragAndDropHook.cs.

Referenced by B83.Win32.UnityDragAndDropHook.Callback().


The documentation for this class was generated from the following file: