zdravim..Měl bych dotaz jak, tedy jestli to vubec jde pohybovat myši. Jedna se o to ze po seriove lince by me prisli dadat a ja bych potreboval podle nich pohybovat myší. Dělam ve VS c# 2008 a jsem docela zacatečník.
Moc děkuju za rady.
Fórum › .NET
Pohyb s myší
Událost?
private void TvujFormular_MouseMove(object sender, MouseEventArgs e)
{
labelPoziceX.Text = e.X.ToString();
labelPoziceY.Text = e.Y.ToString();
}
To RePRO : tak ten dotaz asi nebyl myšlen. tazatel asi hledá toto http://swigartconsulting.blogs.com/tech_blender/2005/08/how_to_move_the.html
Tohle me ale vypisuje asi souradnice mysi kde je na tom programu. Ale ja ych potreboval uplnej opak aby se me mys presunula tam kam chci..kamkoli na celej ploše a nejlip aby to fungovalo i kdys pak ten program budu mit shozenej treba na liste a budu nekde jinde.
Zatim moc dik:)
jestě bych mel jednu otazecku, ale z jinyho soudku.
Kam mam zapsat promeny abych s nema moh kdekoli pak jinde pracovat.
Potrebuju tohle, zapnu program a kurzor me skoci na stred oprazovky. A po prijmu teh dat s nim budu pohybovat.
Proste aby me vzdycky znova nenacet tu hodnotu toho stredu? :)
no me to bylo jasny ze to pujde težko pochopit:D...proste dam priklad kterej je uplne nesmyslnej ale to nevadi.
dam si na plochu tlacitko kliknu na nej vytvori se me asi ta trida(jestli se to tak jmenuje) a ja do ni napisu
int x = 500;
x += 10;
Cursor.Position = new Point(x, 500);
tak a vlastne to je takhle napr...pokazdy se me do toho x nacte tech 500..takze mys bude na 510.
Ale ja potrebuju jen pri prvnim spusteni ji dat na 500.
Tak jsem zkusil napsat tu promenou do tridy load(jsem vydedukoval ze tohle to udela pri nacteni programu)..
no ale kdys do toho dam int x = 500; a do toho kliku uz ne tak to hodi chybu.
Snad uz to bude k pochopeni:)
Moc diky:)
public class TvujFormular : Form
{
// třídní složka
private int x;
// konstruktor
public TvujFormular()
{
InitializeComponent();
}
// nastavíme hodnotu X (dokonce by to šlo hodit i do konstruktoru)
private void TvujFormular_Load(object sender, EventArgs e)
{
x = 500;
}
// no a budeme měnit hodnotu souřadnice X při každém stisku tlačítka
private void btn_Click(object sender, EventArgs e)
{
Cursor.Position = new Point(x, 500);
x += 10;
}
}
Tak jsme nasel tenhle kod co by mel simulovat to kliknuti, atd.
Ale bohužel si s nim nemůžu poradit.
Pomohl by me nekdo?prosím:)
Stacilo by ho dat do malej aplikace kde pri kliknuti na tlacitko mys klikne na nejake souradnice:)dekuji mooooc
using System.Runtime.InteropServices;
using System.Windows.Forms;
namespace YourNamespaceHere
{
public static class VirtualMouse
{
// import the necessary API function so .NET can
// marshall parameters appropriately
[DllImport("user32.dll")]
static extern void mouse_event(int dwFlags, int dx, int dy, int dwData, int dwExtraInfo);
// constants for the mouse_input() API function
private const int MOUSEEVENTF_MOVE = 0x0001;
private const int MOUSEEVENTF_LEFTDOWN = 0x0002;
private const int MOUSEEVENTF_LEFTUP = 0x0004;
private const int MOUSEEVENTF_RIGHTDOWN = 0x0008;
private const int MOUSEEVENTF_RIGHTUP = 0x0010;
private const int MOUSEEVENTF_MIDDLEDOWN = 0x0020;
private const int MOUSEEVENTF_MIDDLEUP = 0x0040;
private const int MOUSEEVENTF_ABSOLUTE = 0x8000;
// simulates movement of the mouse. parameters specify changes
// in relative position. positive values indicate movement
// right or down
public static void Move(int xDelta, int yDelta)
{
mouse_event(MOUSEEVENTF_MOVE, xDelta, yDelta, 0, 0);
}
// simulates movement of the mouse. parameters specify an
// absolute location, with the top left corner being the
// origin
public static void MoveTo(int x, int y)
{
mouse_event(MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE, x, y, 0, 0);
}
// simulates a click-and-release action of the left mouse
// button at its current position
public static void LeftClick()
{
mouse_event(MOUSEEVENTF_LEFTDOWN, Control.MousePosition.X, Control.MousePosition.Y, 0, 0);
mouse_event(MOUSEEVENTF_LEFTUP, Control.MousePosition.X, Control.MousePosition.Y, 0, 0);
}
}
}
Místo mouse_event používej SendInput (http://msdn.microsoft.com/en-us/library/ms646310(v=VS.85).aspx):
[DllImport("User32.dll")]
public static extern uint SendInput(uint numberOfInputs, [MarshalAs(UnmanagedType.LPArray, SizeConst = 1)] INPUT[] input, int structSize);
[StructLayout(LayoutKind.Explicit)]
public struct INPUT
{
[FieldOffset(0)]
public int type;
[FieldOffset(4)] //*
public MOUSEINPUT mi;
[FieldOffset(4)] //*
public KEYBDINPUT ki;
[FieldOffset(4)] //*
public HARDWAREINPUT hi;
}
[StructLayout(LayoutKind.Sequential)]
public struct MOUSEINPUT
{
public int dx;
public int dy;
public uint mouseData;
public uint dwFlags;
public uint time;
public IntPtr dwExtraInfo;
}
[StructLayout(LayoutKind.Sequential)]
public struct KEYBDINPUT
{
public ushort wVk;
public ushort wScan;
public uint dwFlags;
public uint time;
public IntPtr dwExtraInfo;
}
[StructLayout(LayoutKind.Sequential)]
public struct HARDWAREINPUT
{
uint uMsg;
ushort wParamL;
ushort wParamH;
}
No a pak máme 2 tlačítka, když na jedno z nich klikneme a bude tam takováto kód:
private void button1_Click(object sender, EventArgs e)
{
INPUT[] mouse = new INPUT[3];
mouse[0].type = 0/*INPUT_MOUSE*/;
mouse[0].mi.dx = -100;
mouse[0].mi.dy = -100;
mouse[0].mi.dwFlags = 0x0001/*MOUSEEVENTF_MOVE */;
mouse[0].mi.time = 0;
mouse[0].mi.dwExtraInfo = (System.IntPtr)0;
mouse[1].type = 0/*INPUT_MOUSE*/;
mouse[1].mi.dx = 0;
mouse[1].mi.dy = 0;
mouse[1].mi.dwFlags = 0x0002/*MOUSEEVENTF_LEFTDOWN */;
mouse[1].mi.time = 0;
mouse[1].mi.dwExtraInfo = (System.IntPtr)0;
mouse[2].type = 0; /*INPUT_MOUSE*/
mouse[2].mi.dx = 0;
mouse[2].mi.dy = 0;
mouse[2].mi.dwFlags = 0x0004; /*MOUSEEVENTF_LEFTUP*/;
mouse[2].mi.time = 0;
mouse[2].mi.dwExtraInfo = (System.IntPtr)0;
uint ret = SendInput((uint)mouse.Length, mouse, Marshal.SizeOf(mouse[0].GetType()));
}
tak se pohne myš relativně o -100, -100 a "klikne" na tomto novém místě, takže pokud je na tom místě jiné tlačítko, tak se ti to dostaneme zase do OnClick toho tlačítka.
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
C# - WPF: Pohyb image za myší — založil Yimo
Kliknutí myši — založil tonez
Posunutí myši — založil DV
Událost myši — založil pidgin
Moderátoři diskuze