"kliknięcie" i zmiana tekstu przycisku aplikacji zewnętrznej,

0

Witam.

Próbuję "kliknąć" przycisk w innej aplikacji.
Kopiąć w necie naklepałem coś takiego:


static List<IntPtr> GetAllChildrenWindowHandles(IntPtr hParent,   int maxCount)
{
    List< IntPtr> result = new List<IntPtr>();
    int ct = 0;
    IntPtr prevChild = IntPtr.Zero;
    IntPtr currChild = IntPtr.Zero;
    while (true && ct < maxCount)
    {
            currChild = FindWindowEx(hParent, prevChild, null, null);
                if (currChild == IntPtr.Zero) break;
                result.Add(currChild);
                prevChild = currChild;
                ++ct;
            }
            return result;
}

private void button_Click(object sender, System.EventArgs e)
{
            Process[] processes = Process.GetProcessesByName("MONITOR_BAZY_DANYCH");
            List <IntPtr> children = GetAllChildrenWindowHandles(processes[0].Handle, 100);
}

Uchwyt do okna jest łapany prawidłowo ale metoda GetAllChildrenWindowHandles nic nie zwraca.
Co zrobiłem, źle albo jaki jest inny prostszy sposób na "kliknięcie" przycisku na formie innego programu?

1

Proces to nie okno.
Próbujesz szukać okien potomnych procesu, zamiast okien potomnych głównego okna.

0

Dziękuję za naprowadzenie.

Zmieniłem

   List <IntPtr> children = GetAllChildrenWindowHandles(processes[0].Handle, 100);

na

   List <IntPtr> children = GetAllChildrenWindowHandles(processes[0].MainWindowHandle, 100);

i coś ruszyło.

Kombinuje dalej :).

0

Drugie pytanie:
w jaki sposób można zmienić tekst przycisku?

Mając uchwyt przycisku ("klikanie" działa) próbowałem:

   HandleRef hrefHWndTarget = new HandleRef(null, handle);
   SendMessage(hrefHWndTarget, WM_SETTEXT, IntPtr.Zero, "newButtonText");

oraz

    [DllImport("user32.dll", CharSet = CharSet.Auto)]
    private static extern bool SetWindowText(IntPtr hWnd, string txt);

   SetWindowText(parent, "test");

Podglądając właściwości przez Spy++ widzę że wartość się zapisała

screenshot-20170116161532.png

Jednak tekst przycisku na formatce się nie zmienia.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0