J'ai un programme qui doit envoyer le message BM_CLICK à un autre bouton d'applications. Je peux obtenir la poignée de fenêtre parente mais lorsque je tente d'obtenir la poignée de bouton si retourne toujours 0Obtention d'un handle de bouton à partir d'une autre application
je suis arrivé sur le bouton nom de la légende et le type de bouton de Spy ++ il semble juste, mais je sais que je dois avoir obtenu quelque chose de mal. ci-dessous est mon code
public const Int BM_CLICK = 0x00F5;
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
private static extern IntPtr SendMessage(IntPtr hwnd, uint Msg, IntPtr wParam, IntPtr lParam);
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpszClass, string lpszWindow);
private void button1_Click(object sender, EventArgs e)
{
Process[] processes = Process.GetProcessesByName("QSXer");
foreach (Process p in processes)
{
////the Button's Caption is "Send" and it is a "Button".
IntPtr ButtonHandle = FindWindowEx(p.MainWindowHandle, IntPtr.Zero, "Button", "Send");
//ButtonHandle is always zero thats where I think the problem is
SendMessage(ButtonHandle, BM_CLICK, IntPtr.Zero, IntPtr.Zero);
}
}
écran Spy tourné
salut Brian, à moins que j'aie mal compris ce que tu demandes je crois que le nom de classe doit toujours être une chaîne non? – Mike
Corrigé ma réponse. –
Salut Brian, Ok donne un essai et toujours rien :-) – Mike