Ich habe eine Winforms-Anwendung erstellt und eine Drag&Drop-Funktionalität implementiert. Diese Funktionalität funktioniert hervorragend in WinXP oder in Win7 von Run-As-Administrator-Anwendungen.
Das Problem ist, dass es nicht funktioniert, wenn ich von einer Nicht-Admin-Anwendung in Win7 auf mein Programm ziehen will.
Ich verstehe dies, weil das Betriebssystem die Nachrichten filtert. Ich fand eine Lösung für das hier: http://blog.helgeklein.com/2010/03/how-to-enable-drag-and-drop-for.html aber es scheint nicht zu funktionieren.
Hier ist der Code zur Umgehung des Problems:
[DllImport("user32.dll", SetLastError = true)]
static extern bool ChangeWindowMessageFilter(uint message, uint dwFlag);
private const uint WM_DROPFILES = 0x233;
private const uint WM_COPYDATA = 0x004A;
private const uint WM_COPYGLOBALDATA = 0x0049;
private const uint MSGFLT_ADD = 1;
ChangeWindowMessageFilter(WM_DROPFILES, MSGFLT_ADD);
ChangeWindowMessageFilter(WM_COPYDATA, MSGFLT_ADD);
ChangeWindowMessageFilter(WM_COPYGLOBALDATA, MSGFLT_ADD);
Wie kann das funktionieren?