survcopt
Messages postés224Date d'inscriptionmardi 27 mai 2003StatutMembreDernière intervention13 mai 2022
-
25 août 2009 à 16:16
survcopt
Messages postés224Date d'inscriptionmardi 27 mai 2003StatutMembreDernière intervention13 mai 2022
-
7 sept. 2009 à 15:04
Bonjour,
J'ai un jeu qui fonctionne avec directx, je voudrais lui envoyer un code clavier pour simuler un appui .
j'ai essayé les fonctions sendkeys sendinput et je sèche .
Je passe l'appli en premier plan je lui donne le focus mais la commande n'est pas réalisée lorsque le code clavier est envoyé .
quelqu'un aurait'il déja bosser la dessus?
Merci,
survcopt
Messages postés224Date d'inscriptionmardi 27 mai 2003StatutMembreDernière intervention13 mai 20223 26 août 2009 à 09:29
Je suis en train d'essayer sendinput sans succès pour valider mes essais j'utilise le sample directinpunt keyboard de directx SDK 9.0.
voici mon code
Déclarations
public const int INPUT_MOUSE = 0;
public const int INPUT_KEYBOARD = 1;
public const int INPUT_HARDWARE = 2;
[DllImport("user32.dll")]
public static extern bool SetForegroundWindow(IntPtr hWnd);
[DllImport("user32.dll")]
public static extern IntPtr GetForegroundWindow();
[DllImport("user32.dll")]
public static extern IntPtr GetMessageExtraInfo();
[DllImport("user32.dll", SetLastError = true)]
public static extern uint SendInput(uint nInputs, ref INPUT pInputs, int cbSize);
[DllImport("user32.dll")]
static extern short VkKeyScan(char ch);
[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
{
public uint uMsg;
public ushort wParamL;
public ushort wParamH;
}
Lutinore
Messages postés3246Date d'inscriptionlundi 25 avril 2005StatutMembreDernière intervention27 octobre 201241 26 août 2009 à 23:00
Sous Vista je sais que les inputs peuvent être bloqués selon les privilèges de l'application, il peut être intéressant de tester avec une application éxecutée en tant qu'admin..
Sinon SendInput ne renvoi pas un code d'érreur mais le nombre d'inputs réussis.
survcopt
Messages postés224Date d'inscriptionmardi 27 mai 2003StatutMembreDernière intervention13 mai 20223 27 août 2009 à 10:19
En effet je suis sous Vista.
Sais-tu comment lancer un programme avec shellexecute avec les droits d'admin.
En fait j'ai un client sur un PC qui lance des commandes dont le lancement du jeu et l'envoi de commande clavier.
voici le code pour lancer le jeu comment lui passer en paramètres le fait de se lancer mode administrateur