Problems with user32.dll - C#
Формулировка задачи:
Помогите, пожалуйста. Мне нужно программно переключиться на открытое приложение и нажать на нем в нужную область левой кнопкой мыши.
Делал так:
Но мне выскакивает сообщение об ошибке:
Что я делаю не так?
[DllImportAttribute("User32.dll")] private static extern int FindWindow(String ClassName, String WindowName); [DllImportAttribute("User32.dll")] private static extern IntPtr SetForegroundWindow(int hWnd); [DllImport("user32.dll")] public static extern void SetCursorPos(int x, int y); [DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)] public static extern void mouse_event(MouseEvent dwFlags, long dx, long dy, long cButtons, long dwExtraInfo); public enum MouseEvent { MOUSEEVENTF_LEFTDOWN = 0x02, MOUSEEVENTF_LEFTUP = 0x04, MOUSEEVENTF_RIGHTDOWN = 0x08, MOUSEEVENTF_RIGHTUP = 0x10, } private void Check(string apps) { //поиск окна по заголовку int hWnd = FindWindow(null, apps); if (hWnd > 0) //нашли { SetForegroundWindow(hWnd); //активировали } else//не нашли { MessageBox.Show("Прога не запущена"); } } private void button1_Click(object sender, EventArgs e) { Process[] p = Process.GetProcessesByName("notepad"); foreach (Process s in p) { Check(s.MainWindowTitle); } SetCursorPos(500, 500); mouse_event(MouseEvent.MOUSEEVENTF_LEFTDOWN, System.Windows.Forms.Cursor.Position.X, System.Windows.Forms.Cursor.Position.Y, 0, 0); mouse_event(MouseEvent.MOUSEEVENTF_LEFTUP, System.Windows.Forms.Cursor.Position.X, System.Windows.Forms.Cursor.Position.Y, 0, 0); }
Вызов функции PInvoke "FormApps1!FormApps1.Form1::mouse_event" разбалансировал стек. Вероятно, это вызвано тем, что управляемая сигнатура PInvoke не совпадает с неуправляемой целевой сигнатурой. Убедитесь, что соглашение о вызовах и параметры сигнатуры PInvoke совпадают с неуправляемой целевой сигнатурой.
Решение задачи: «Problems with user32.dll»
textual
Листинг программы
[DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)] public static extern void mouse_event(MouseEvent dwFlags, int dx, int dy, int cButtons, int dwExtraInfo);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д