Avatar billede mikker Nybegynder
14. oktober 2003 - 20:50 Der er 15 kommentarer og
1 løsning

sendkeys fungerer men hvad med den anden vej

Så er den gal igen...

Jeg kan sende tastetryk til diverse programmer.
Fantastisk! men det er bare ikke nok, vel?

Hvad nu hvis jeg gerne vil læse fra et program?

Lad os sige, at vi har et vindue med 40 * 20 tegn og jeg gerne vil vide hvad der står i feltet 20,10 - hvordan gør man lige det?

- Mikker
Avatar billede terry Ekspert
14. oktober 2003 - 20:57 #1
KeyPress event?
Avatar billede terry Ekspert
14. oktober 2003 - 21:02 #2
mikker> what has sendkeys to do with what characters are at pos 20,10? Or am I missing something?
Avatar billede mikker Nybegynder
14. oktober 2003 - 21:02 #3
Udemærket bud terry, men jeg forklarer mig måske ikke godt nok :o)

Det er bare svært at forklare...
Avatar billede terry Ekspert
14. oktober 2003 - 21:04 #4
well its hard to help then :o)
Avatar billede mikker Nybegynder
14. oktober 2003 - 21:06 #5
with sendkeys, you can activate a window, and then send keys to that window, correct?

Well - all i need is to extract data directly from a window, active or not...
Problem is that it is possible to do with a macro in an emulator of some sort, called 'EXTRA! Office client'. However this program is not available to me at work.
Avatar billede mikker Nybegynder
14. oktober 2003 - 21:10 #6
example from the sourcecode that does some of this...

Set MyScreen = Sess0.Screen
Set Myarea = Myscreen.Area(9,5,9,12,,)

Actually... If i could just make a cut'n paste kind of thing...
Avatar billede mikker Nybegynder
14. oktober 2003 - 21:15 #7
Just to make things worse...
The sourcecode is written by a German, so there is not alot in english nor in danish...
Avatar billede terry Ekspert
14. oktober 2003 - 21:21 #8
mikker>I dont think I can help here, not because its in Germany but because I just wouldnt know where to start and I could end up using hours on it!

Sorry :o)
Avatar billede mikker Nybegynder
14. oktober 2003 - 21:22 #9
That's okay. THX for the effort :o)

I don't really think that it is possible, but it was worth a try..

- Mikker
Avatar billede michaelemanuel Nybegynder
17. oktober 2003 - 11:43 #10
Du skal have fat i hWnd for den TekstBox som du vil aflæse indholdet af.
Herefter kan du bruge GetWindowText til at aflæse teksten.

Her et eksempel :
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wCmd As Long) As Long
Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Private Declare Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hwnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long
Private Const GW_HWNDFIRST = 0
Private Const GW_HWNDNEXT = 2
Private Const GW_CHILD = 5

'Find hWnd på det window (Form) der indeholder tekstboksen
'I dette eksempel er teksten i titellinien : WindowCaption
hwnd = FindWindow(vbNullString, "WindowCaption")

'Kig alle Controls efter for at finde tekstboksen
hWndChild = GetWindow(hwnd, GW_CHILD)
Do
    DoEvents
    Class = String(1024, 0)
    Retn = GetClassName(hWndChild, Class, 1024)
    If Retn > 0 Then Class = Left(Class, Retn) Else Class = ""
    If Class = "ThunderTextBox" Then
      Caption = String(1024, 0)
      Retn = GetWindowText(hWndChild, Caption, 1024)
      If Retn > 0 Then Caption = Left(Caption, Retn) Else Caption = ""
      MsgBox "Tekst i tekstbox:" & Caption
    End If
    hWndChild = GetWindow(hWndChild, GW_HWNDNEXT)
Loop Until hWndChild = 0
Avatar billede mikker Nybegynder
17. oktober 2003 - 23:24 #11
Jeg kigger på det hurtigst muligt :o)

- Mikker
Avatar billede mikker Nybegynder
28. oktober 2003 - 18:38 #12
Desværre ikke lige noget jeg kunne bruge.

Jeg er kommet så langt, at jeg nok må kombinere et hotlink mellem 5250 emulatoren og Excel - og så sendkeys.

Dette vil give mig mulighed for at aflæse data fra en position på skærmen og gemme dette i et excel felt. Ganske som Copy'n Paste. Derefter kan jeg så skifte skærmbillede og via sendkeys indsætte værdien på dne rigtige plads.

Dog er dette en langsom løsning og man skal opdatere sine hotlinks hver gang man loader sit regneark...

Tak for forsøgene :o)

- Mikker
Avatar billede michaelemanuel Nybegynder
30. oktober 2003 - 08:54 #13
Hvis det er en celle i et regneark, så skal du ikke bruge Class = "ThunderTextBox"

Jeg vil foreslå at du bruger spy.exe (fra msdn.microsoft.com) til at aflæse klassenavnene og derefter tilpasser programkoden til dit behov.
Avatar billede mikker Nybegynder
10. november 2003 - 20:30 #14
Desværre heller ikke lige noget jeg kan bruge.
Lige i øjeblikket bruger jeg AutoIt fra Hiddensoft.com - fantastisk stykke software.
Dog tror jeg at jeg går tilbage til sendkeys når jeg engang får ordentlig styr på de DDE links jeg bruger i øjeblikket.

Jeg tror jeg har trukket tiden længe nok med dette spørgsmål. Det er på tide at stille et nyt :o)

- Mikker
Avatar billede schollert Nybegynder
28. januar 2004 - 12:16 #15
Hej Mikker!

Jeg ved, at det er et "gammelt" spørgsmål nu, men jeg fandt lige dette, og tænkte at du - eller andre - måske kunne bruge det.

Link til forklaring:
http://www.mentalis.org/apilist/GetAsyncKeyState.shtml

Link til eksempel (udvikleren skriver: "Start this project, go to another application, type something, switch back to this application and unload the form. If you unload the form, a messagebox with all the typed keys will be shown."): http://www.mentalis.org/apilist/64BED1F862145FDD4477424686646320.html

Venligst

/Mich
Avatar billede mikker Nybegynder
28. januar 2004 - 18:02 #16
Jamen jeg er da altid åben for nye idéer.

Vi takker, jeg kigger på det lidt senere :o)

- Mikker
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester