[VB.NET] Raar Sendkeys naar MFC app probleem

Pagina: 1
Acties:

  • Jay-P
  • Registratie: Oktober 2003
  • Laatst online: 04-06 00:39
Ik probeer via VB.NET dmv sendkeys een MFC applicatie aan te sturen. De betreffende applicatie is een simpele import/export tool voor een custom DB formaat. Het rare is dat ik wel gewoon het pad/bestandsnaam kan intikken via sendkeys, ik kan hem afsluiten door te tabben naar de exit knop en een {ENTER} door te geven maar de export knop wil gewoon niet werken om een of andere reden. Heb al van alles geprobeerd, nog raarder is dat als ik gewoon de applicatie start via Process.Start, en dan mn eigen VB.NET applicatie afsluit, ik zelfs handmatig via de muis/keyboard de export knop niet aan het werk krijgt :? . Als ik dezelfde applicatie gewoon via windows start en hem 'normaal' gebruik werkt alles gewoon. Ook kan ik als ik hem via VB.NET start gewoon de import knop gebruiken, enkel de export werkt om een of andere vage reden niet.

Iemand die hier een idee over heeft, ben er al vanaf vanochtend mee bezig en het begint aardig op mn zenuwen te werken 8)7 .

[edit]
de betreffende applicatie (ong. 350kb):
http://www.vennik.speedxs.nl/DYN_cyclist.exe

Deel van de code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
    Public Sub Export(ByVal ProcessPath As String)
        Dim objProcess As System.Diagnostics.Process


        Try
            objProcess = New System.Diagnostics.Process()
            objProcess.StartInfo.FileName = ProcessPath
            objProcess.StartInfo.WindowStyle = ProcessWindowStyle.Normal
            objProcess.Start()

            objProcess.WaitForInputIdle(9000)

            If objProcess.Responding = True Then
                System.Windows.Forms.SendKeys.SendWait("{TAB}")
                System.Windows.Forms.SendKeys.SendWait("{TAB}")
                System.Windows.Forms.SendKeys.SendWait("{TAB}")
                System.Windows.Forms.SendKeys.SendWait("D:\PCMedit\rabo2.cdb")
                System.Windows.Forms.SendKeys.SendWait("{TAB}")
                System.Windows.Forms.SendKeys.SendWait("{TAB}")
                System.Windows.Forms.SendKeys.SendWait("{TAB}")
                System.Windows.Forms.SendKeys.SendWait("{TAB}")

                'Deze werkt dus niet
                System.Windows.Forms.SendKeys.SendWait("{ENTER}")

  • roy-t
  • Registratie: Oktober 2004
  • Laatst online: 17-10 16:43
ehm, een knop drukken kun je misschien beter sendkey "space" doen, soms werkt enter niet, maar dit verklaart niet waarom je prog niet werkt vanuit vb, misschien heeft het programma admin rechten nodig (onder welk OS draai je?)

~ Mijn prog blog!


  • Korben
  • Registratie: Januari 2001
  • Laatst online: 14-11 13:15

Korben

() => {};

Niet alle programma's gaan even netjes om met toetsen en dergelijke. Mocht het met SendKeys niet lukken, dan zou je als laatste redmiddel de Windows messaging API's kunnen gaan gebruiken, d.w.z. SendMessage en PostMessage.

In jouw geval zou je dan met EnumWindows en EnumChildWindows de juiste textbox en button op moeten zoeken en respectievelijk een WM_SETTEXT en BN_CLICK message moeten sturen. Zoek maar eens op die termen in de Bijbel, daar zou je een eind mee moeten komen ;)

.oisyn: Échte programmeurs haten PHP met een passie. Ben jij soms geen echte programmeur?


  • Jay-P
  • Registratie: Oktober 2003
  • Laatst online: 04-06 00:39
Ik draai Xp pro, ingelogd met admin, spatie heb ik idd ook al geprobeerd. Werk helaas ook niet op die ene button (andere vreemd genoeg natuurlijk weer wel :| )

Ik zal de suggestie van Korben even proberen, weinig ervaring met programeren via de API maar dat moet me wel lukken, is kijken hoever ik daarmee kom, bedankt iig.