Я пытаюсь написать небольшую программу C#, которая посылает Mouseclicks и напорированные в окно браузера, чтобы моделировать правое щелчок пользователя на изображениях, их сохранение и закрыть вкладку браузера. Диск. После этого меню контекста щелкает правой кнопкой мыши, вкладка «После закрытия» вкладка закроется, но другие изображения не сохраняются. Я замечаю странное поведение при вручную: вручную выбирается или выделяется, что является еще одним признаком того, что я посылаю CTRL ошибочным образом. < /P>
Вот мой код: < /p>
using System;
using System.Runtime.InteropServices; // For the P/Invoke signatures.
using System.Threading;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace AutoImageSaver
{
class Program
{
[Flags]
public enum MouseEventFlags
{
LeftDown = 0x00000002,
LeftUp = 0x00000004,
MiddleDown = 0x00000020,
MiddleUp = 0x00000040,
Move = 0x00000001,
Absolute = 0x00008000,
RightDown = 0x00000008,
RightUp = 0x00000010
}
// Import the user32.dll
[DllImport("user32.dll", SetLastError = true)]
static extern void keybd_event(byte bVk, byte bScan, int dwFlags, int dwExtraInfo);
// Declare some keyboard keys as constants with its respective code
// See Virtual Code Keys: https://msdn.microsoft.com/en-us/librar ... s.85).aspx
public const int KEYEVENTF_EXTENDEDKEY = 0x0001; //Key down flag
public const int KEYEVENTF_KEYUP = 0x0002; //Key up flag
public const int VK_LCONTROL = 0xA2; //Right Control key code
public const int VK_F4 = 0x73; //Right Control key code
public const int VK_N = 0x4E; //Right Control key code
public const int VK_ENTER = 0x0D; //Right Control key code
[DllImport("user32.dll", EntryPoint = "SetCursorPos")]
[return: MarshalAs(UnmanagedType.Bool)]
private static extern bool SetCursorPos(int x, int y);
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
private static extern bool GetCursorPos(out MousePoint lpMousePoint);
[DllImport("user32.dll")]
private static extern void mouse_event(int dwFlags, int dx, int dy, int dwData, int dwExtraInfo);
public static void SetCursorPosition(int x, int y)
{
SetCursorPos(x, y);
}
public static void SetCursorPosition(MousePoint point)
{
SetCursorPos(point.X, point.Y);
}
public static MousePoint GetCursorPosition()
{
MousePoint currentMousePoint;
var gotPoint = GetCursorPos(out currentMousePoint);
if (!gotPoint) { currentMousePoint = new MousePoint(0, 0); }
return currentMousePoint;
}
public static void MouseEvent(MouseEventFlags value)
{
MousePoint position = GetCursorPosition();
mouse_event
((int)value,
position.X,
position.Y,
0,
0)
;
}
[StructLayout(LayoutKind.Sequential)]
public struct MousePoint
{
public int X;
public int Y;
public MousePoint(int x, int y)
{
X = x;
Y = y;
}
}
static void Main(string[] args)
{
if (args.Length == 1)
{
int count = -1;
if (Int32.TryParse(args[0], out count))
{
Random rnd = new Random();
for (int i = 0; i < count; i++)
{
SetCursorPosition(new MousePoint(960, 540));
MouseEvent(MouseEventFlags.RightDown);
Thread.Sleep(100);
MouseEvent(MouseEventFlags.RightUp);
Thread.Sleep(100);
keybd_event(VK_N, 0, KEYEVENTF_EXTENDEDKEY, 0);
keybd_event(VK_N, 0, KEYEVENTF_KEYUP, 0);
Thread.Sleep(1000 + rnd.Next(1000));
keybd_event(VK_ENTER, 0, KEYEVENTF_EXTENDEDKEY, 0);
keybd_event(VK_ENTER, 0, KEYEVENTF_KEYUP, 0);
Thread.Sleep(500 + rnd.Next(500));
keybd_event(VK_LCONTROL, 0, KEYEVENTF_EXTENDEDKEY, 0);
keybd_event(VK_LCONTROL, 0, KEYEVENTF_KEYUP, 0);
keybd_event(VK_F4, 0, KEYEVENTF_EXTENDEDKEY, 0);
keybd_event(VK_F4, 0, KEYEVENTF_KEYUP, 0);
Thread.Sleep(500 + rnd.Next(500));
SetCursorPosition(new MousePoint(965, 545));
MouseEvent(MouseEventFlags.LeftDown);
Thread.Sleep(100);
MouseEvent(MouseEventFlags.LeftUp);
Thread.Sleep(100);
}
}
}
}
}
}
< /code>
Я знаю, что есть способы автоматизировать загрузку изображений, но это не моя цель. Я специально хочу смоделировать поведение пользователя в окне браузера, отсюда эта программа.>
Подробнее здесь: https://stackoverflow.com/questions/796 ... quent-keys
Отправка Ctrl+F4 в браузер беспорядочно с последующими ключами ⇐ C#
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Я хочу добавить текст в div с последующими отступами, как мне это сделать? [дубликат]
Anonymous » » в форуме CSS - 0 Ответы
- 8 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Регулярные выражения для плавучих и некарящих номеров точек с последующими словами
Anonymous » » в форуме JAVA - 0 Ответы
- 2 Просмотры
-
Последнее сообщение Anonymous
-