Как я упоминал в this вопрос, я пытаюсь реализовать функцию в своем приложении, в результате чего курсор над некоторой точкой на некоторое время (например, 3-5 секунд) вызывает событие двойного щелчка. Основываясь на ответах, представленных в этом потоке, я написал следующее. Этот код работает не так, как ожидалось. Кто-то может помочь?Выполнение события двойного щелчка с помощью таймера
#region Timer Mouse Double Click event
timer.Elapsed += new ElapsedEventHandler(timer_Elapsed);
//Here, the timer for Timer click event will start when mouse hovers over an area
private void form_MouseHover(object sender, System.EventArgs e)
{
timer.Start();
}
private void form_MouseLeave(object sender, System.EventArgs e)
{
timer.Stop();
}
void timer_Elapsed(object sender, ElapsedEventArgs e)
{
timer.Stop();
DoubleClickEvent();
}
//This method allows the user to click a file/folder by hovering/keeping still the mouse for specified time
void DoubleClickEvent()
{
DoClickMouse(0x2); // Left mouse button down
DoClickMouse(0x4); // Left mouse button up
}
static void DoClickMouse(int mouseButton)
{
var input = new INPUT()
{
dwType = 0, // Mouse input
mi = new MOUSEINPUT() { dwFlags = mouseButton }
};
if (SendInput(1, input, Marshal.SizeOf(input)) == 0)
{
throw new Exception();
}
}
[StructLayout(LayoutKind.Sequential)]
struct MOUSEINPUT
{
int dx;
int dy;
int mouseData;
public int dwFlags;
int time;
IntPtr dwExtraInfo;
}
struct INPUT
{
public uint dwType;
public MOUSEINPUT mi;
}
[DllImport("user32.dll", SetLastError = true)]
static extern uint SendInput(uint cInputs, INPUT input, int size);
#endregion
что здесь не работает? – Tigran
Событие двойного щелчка не происходит вообще! – ykombinator
Я бы предложил вам использовать [Reactive Extensions] (http://stackoverflow.com/questions/5228364/reactive-framework-doubleclick), чтобы это сделать. –