[C#] Windows forms alle controls ophalen(Automation/Win32)

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Mister_W
  • Registratie: December 2009
  • Laatst online: 23-07 19:23
Hallo,

Ik ben bezig om een applicatie te schrijven om daarmee een andere applicatie te besturen. Een button ophalen en besturen gaat prima via deze code hieronder, maar nu wil ik alle buttons/controls op het form ophalen. Het probleem is dat sommige buttons dezelfde namen hebben en dus niet aan de hand van de title op kan halen. Ik loop al een 1,5 dag hier naar te zoeken en proberen maar ik kom er niet uit. Dus mijn vraag is hoe kan ik alle buttons/controls ophalen en doorheen loepen?


code:
1
2
3
4
5
6
7
8
9
10
11
[DllImport("user32.dll", SetLastError = true)]
private static extern IntPtr FindWindowEx(IntPtr parentHandle, IntPtr childAfter, string className, string windowTitle);

private IntPtr GetButtonHandle(int hWnd)
{
   IntPtr i = new IntPtr(hWnd);

   IntPtr HandleButton = FindWindowEx(i, IntPtr.Zero, null, "button");

   return HandleButton;
}

Acties:
  • 0 Henk 'm!

  • Reptile209
  • Registratie: Juni 2001
  • Laatst online: 13:22

Reptile209

- gers -

Even een wilde gok: als je de eerste hebt gevonden en dan
code:
1
HandleButton = FindWindowEx(i, HandleButton, null, "button");

gebruikt, kom je dan niet op de volgende uit? De naam childAfter suggereert zoiets. De MSDN kan je er vast alle ins en outs van vertellen. ;)

Zo scherp als een voetbal!


Acties:
  • 0 Henk 'm!

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 11-09 12:01
Volgens mij is het handiger om met EnumWindows/EnumChildWindows te werken.

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.