L'obtention d'un Bouton de la poignée à partir d'une autre application
J'ai un programme qui doit envoyer le BM_CLICK message à un autre bouton applications.
Je peux obtenir le handle de fenêtre parent mais quand j'essaie d'obtenir le bouton de la poignée si elle retourne toujours 0
J'ai eu le libellé du bouton nom et le type de bouton de Spy++ il me semble bon mais je sais que je dois avoir quelque chose de mal. ci-dessous 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);
}
}
Espion capture d'écran
InformationsquelleAutor Mike | 2010-09-23
Vous devez vous connecter pour publier un commentaire.
Essayer de passer la valeur null pour le texte de la fenêtre et, au lieu d'essayer de trouver n'importe quel bouton:
Après cela, vous pouvez utiliser le deuxième paramètre et un nouvel appel pour obtenir le prochain bouton de la poignée deux ou trois fois plus.
Aussi pourriez-vous s'il vous plaît essayer de vérifier
Marshal.GetLastWin32Error
pour voir ce que le résultat de l'erreur est?Essayez ceci:
Vous pouvez faire quelque chose comme ceci:
Cela devrait faire l'affaire.
Essayer de construire le projet que x86. Je tente et reussi!