rerremi
Messages postés12Date d'inscriptionsamedi 17 décembre 2005StatutMembreDernière intervention20 septembre 2011
-
20 sept. 2011 à 21:31
BunoCS
Messages postés15370Date d'inscriptionlundi 11 juillet 2005StatutModérateurDernière intervention 1 juin 2023
-
21 sept. 2011 à 10:45
Bonjour,
Je suis en train de développé un petit programme qui me permet de simuler des touches dans des jeux en DirectX. La fonction sendkey ne fonctionne pas , j'utilise donc le SendInput mais le problème lorsque j’exécute mon code est que la touche est sans arrêt appuyée (exemple : mon personnage va continuellement tout droit alors que je voulais qu'il ne fasse qu'un seul pas en avant).
Voici mon code :
using System;
using System.Runtime.InteropServices;
using Microsoft.DirectX.DirectInput;
namespace monProjet
{
public static class PressEnter
{
[DllImport("user32.dll")]
public static extern int MapVirtualKey(uint uCode, uint uMapType);
[StructLayout(LayoutKind.Sequential)]
private struct INPUT
{
public UInt32 type;
public ushort wVk;
public ushort wScan;
public UInt32 dwFlags;
public UInt32 time;
public UIntPtr dwExtraInfo;
public UInt32 uMsg;
public ushort wParamL;
public ushort wParamH;
}
private enum SendInputFlags
{
KEYEVENTF_EXTENDEDKEY = 0x0001,
KEYEVENTF_KEYUP = 0x0002,
KEYEVENTF_UNICODE = 0x0004,
KEYEVENTF_SCANCODE = 0x0008,
}
[DllImport("user32.dll")]
private static extern UInt32 SendInput(UInt32 nInputs,
[MarshalAs(UnmanagedType.LPArray, SizeConst = 1)] INPUT[] pInputs,
Int32 cbSize);
public static void Activate()
{
INPUT[] InputData = new INPUT[1];
InputData[0].type = 1;
InputData[0].wScan = (ushort)Key.A;
InputData[0].dwFlags = (uint)SendInputFlags.KEYEVENTF_SCANCODE;
InputData[0].time = 0;
InputData[0].dwExtraInfo = UIntPtr.Zero;
// send keydown
if (SendInput(1, InputData, Marshal.SizeOf(InputData[0])) == 0)
{
System.Windows.Forms.MessageBox.Show("Erreur lors de l'envoie de la touche - Raison : " +
Marshal.GetLastWin32Error().ToString());
}
}
}
}
Alors quand j'essaye d'utiliser KEYEVENTF_KEYUP comme flag en remplaçant le flag existant par :
J'aimerais bien supprimer ce sujet qui n'ai que du flood au final vu qu'aucun n'échange ne s'est fait, mais je ne sais pas comment supprimer un sujet posté sur code-source ?