|
| Simulering af tastetryk under Win32. Fra : John Ekblom |
Dato : 24-10-02 23:44 |
|
Er der nogen der ved hvorledes man simulerer tastetryk i windows ?
Jeg er blevet bedt om at sørge for nem input af data til et gammelt program
(som jeg ikke har kildetekst til) og min eneste mulighed er at simulere de
tastetryk brugeren ville have tastet.
Programmet der simulerer tastetryk skal således køre i baggrunden, mens det
andet program (som jeg ikke har kildetekst til) skal have fokus.
Er der nogen der har prøvet noget tilsvarende og evt. har hints og/eller
noget kode ?
På forhånd tak for hjælpen.
M.v.h.
John Ekblom
| |
Morten F. Hansen (25-10-2002)
| Kommentar Fra : Morten F. Hansen |
Dato : 25-10-02 09:57 |
|
"John Ekblom" <ekblom@image.dk> wrote:
> Er der nogen der ved hvorledes man simulerer tastetryk i windows ?
> Jeg er blevet bedt om at sørge for nem input af data til et gammelt program
> (som jeg ikke har kildetekst til) og min eneste mulighed er at simulere de
> tastetryk brugeren ville have tastet.
Jeg har brugt keybd_event() til dette med stor success. Alle tastetryk
kan simuleres og det virker fint. Det problem, der måske kan opstå er at
synkronisere med modtager-applikationen, så man er sikker på at
input-kontrollen man ønsker at sende tastetryk til er synlig og aktiv. Det
er en god ide også at bruge EnumWindows(), EnumChildWindows() og
SetForegroundWindow() til dette sammen med lidt kode, som tit kontrollere
om modtager-applikationen opfører sig som man regner med, eller om et
tastetryk evt er gået tabt.
En anden mulighed kan være at købe SQA Robot (lavet af Rational Software
Corporation). Dette er en slags testværktøj som tillader at kommunikere
med en win32-applikations input-kontroller. Logikken laves som VBA scripts.
Dette har vi også brugt med stor success på mit arbejde. Dette er godt hvis
det drejer sig om et stort projekt.
| |
John Ekblom (30-10-2002)
| Kommentar Fra : John Ekblom |
Dato : 30-10-02 21:35 |
|
Mange tak for hjælpen. Det var lige det jeg skulle bruge ...
M.v.h.
John Ekblom
"Morten F. Hansen" <info@127.0.0.1> skrev i en meddelelse
news:apb11h$o7k$1@sunsite.dk...
> "John Ekblom" <ekblom@image.dk> wrote:
> > Er der nogen der ved hvorledes man simulerer tastetryk i windows ?
> > Jeg er blevet bedt om at sørge for nem input af data til et gammelt
program
> > (som jeg ikke har kildetekst til) og min eneste mulighed er at simulere
de
> > tastetryk brugeren ville have tastet.
>
> Jeg har brugt keybd_event() til dette med stor success. Alle tastetryk
> kan simuleres og det virker fint. Det problem, der måske kan opstå er at
> synkronisere med modtager-applikationen, så man er sikker på at
> input-kontrollen man ønsker at sende tastetryk til er synlig og aktiv. Det
> er en god ide også at bruge EnumWindows(), EnumChildWindows() og
> SetForegroundWindow() til dette sammen med lidt kode, som tit kontrollere
> om modtager-applikationen opfører sig som man regner med, eller om et
> tastetryk evt er gået tabt.
>
> En anden mulighed kan være at købe SQA Robot (lavet af Rational Software
> Corporation). Dette er en slags testværktøj som tillader at kommunikere
> med en win32-applikations input-kontroller. Logikken laves som VBA
scripts.
> Dette har vi også brugt med stor success på mit arbejde. Dette er godt
hvis
> det drejer sig om et stort projekt.
>
>
| |
Ivan Johansen (25-10-2002)
| Kommentar Fra : Ivan Johansen |
Dato : 25-10-02 15:00 |
|
John Ekblom wrote:
> Er der nogen der ved hvorledes man simulerer tastetryk i windows ?
>
> Jeg er blevet bedt om at sørge for nem input af data til et gammelt program
> (som jeg ikke har kildetekst til) og min eneste mulighed er at simulere de
> tastetryk brugeren ville have tastet.
>
> Programmet der simulerer tastetryk skal således køre i baggrunden, mens det
> andet program (som jeg ikke har kildetekst til) skal have fokus.
>
> Er der nogen der har prøvet noget tilsvarende og evt. har hints og/eller
> noget kode ?
Jeg har ikke selv prøvet det, men umiddelbart ville jeg sende
WM_KEYDOWN, WM_KEYUP og lignende beskeder direkte til programmet. Så
behøver programmet ikke engang have fokus.
Ivan Johansen
| |
|
|