Ovladani „druhe” win aplikace   zodpovězená otázka

VB.NET

Potrebuji z me vb.netove aplikace ovladat jinou spustenou aplikaci.

Napr.: potrebuji, aby ma aplikace v me nepritomnosti v urcitem okamziku (case) se 'prepla' do jine aplikace spustene ve windows a tam napr. na urcite pozici klepla levym tlacitkem mysi a pak se vratila k provadeni kodu v me aplikaci...

1. je toto vubec ve vb.net mozne?

2. kde bych, pokud to mozne je, nasel nejlepe nejake ukazkove priklady?

Dik za jakoukoli odpoved.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Možné to je, pokud znáte přesné souřadnice, kam chcete kliknout. Souřadnice se ale mohou měnit, například posunutím okna. V tom případě budete potřebovat zjistit pozici okna, abyste mohl dopočítat hledané souřadnice.

Pro manipulaci s okny je potřeba volat funkce z Win API, například tyto: FindWindowByCaption, SetForegroundWindow, GetWindowRect.

http://www.vbnet.cz/clanek--94-skodorado...

Zde na webu najdete článek o simulaci stisku kláves a přikládám kód na ovládání kurzoru myši.

Class MouseAndKeyboard
#Region "API"
    <DllImport("user32.dll", SetLastError:=True)> _
    Private Shared Function SetCursorPos(ByVal X As Integer, ByVal Y As Integer) As Boolean
    End Function
    <DllImport("user32.dll", SetLastError:=True)>
    Private Shared Function GetCursorPos(ByRef point As System.Drawing.Point) As Boolean
    End Function

    <DllImport("user32.dll", setlasterror:=True)>
    Private Shared Sub mouse_event(ByVal dwFlags As Integer, ByVal dx As Integer, ByVal dy As Integer, ByVal cButtons As Integer, ByVal dwExtraInfo As Integer)
    End Sub

#End Region
    Private Const MouseLeftButtonDown As Integer = &H2
    Private Const MouseLeftButtonUp As Integer = &H4
    Private Const MouseRightButtonDown As Integer = &H8
    Private Const MOuseRightButtonUp As Integer = &H10

    ''' <summary>
    ''' Simuluje stisk levého tlačítka myši
    ''' </summary>
    Public Shared Sub MouseLeftButton()
        mouse_event(MouseLeftButtonDown, 0, 0, 0, 0)
        mouse_event(MouseLeftButtonUp, 0, 0, 0, 0)
    End Sub

    ''' <summary>
    ''' Simuluje stisk pravého tlačítka myši
    ''' </summary>
    Public Shared Sub MouseRightButton()
        mouse_event(MouseRightButtonDown, 0, 0, 0, 0)
        mouse_event(MOuseRightButtonUp, 0, 0, 0, 0)
    End Sub
    ''' <summary>
    ''' Simuluje stisk klávesy
    ''' </summary>
    ''' <param name="keys">ctrl ^, shift +, alt % (příklad: "^{c}" - kopírovat)</param>
    ''' <remarks></remarks>
    Public Shared Sub PressKey(ByVal keys As String)
        System.Windows.Forms.SendKeys.SendWait(keys)
    End Sub

    Public Shared Sub SetCursorPosition(ByVal X As Integer, ByVal Y As Integer)
        SetCursorPos(X, Y)
    End Sub

    Public Shared Sub SetCursorPosition(ByVal Point As System.Drawing.Point)
        SetCursorPos(Point.X, Point.Y)
    End Sub

    Public Shared Function GetCursorPosition() As Point
        Dim p As New Point
        GetCursorPos(p)
        Return p
    End Function
End Class
nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Super, to je přesně ono!

Vyzkoušeno a pracuje to přesně tak, jak chci...

Díky.

Nicméně bych se ještě zkusil na něco zeptat:

Je možné spustit externí aplikaci do formu mé aplikace, něco na způsob vložení obrázku do PictureBoxu, prostě v nějakém "aplikačním" boxu na formu mé aplikace spustit cizí aplikaci (aby okno cizí aplikace běželo v okně mé aplikace).

Je něco takového možné?

(předpokládám, že to už bych asi po vb.netu chtěl moc, že?)

nahlásit spamnahlásit spam 0 odpovědětodpovědět

I s tímto si .net (a Win Forms) docela obstojně poradí.

http://www.codeproject.com/Articles/9123...

Článek sice popisuje hostování aplikace v jiném formu, ale obdobně lze hostovat například v panelu, stačí volat např. SetParent(app, panel1.Handle).

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback