/ Forside / Teknologi / Udvikling / Delphi/Pascal / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Delphi/Pascal
#NavnPoint
oldwiking 603
jrossing 525
rpje 520
EXTERMINA.. 500
gandalf 460
gubi 270
DJ_Puden 250
PARKENSS 230
technet 210
10  jdjespers.. 200
Hook til keyboard
Fra : Lars HT


Dato : 25-04-07 13:28

Hej

Er der nogen, som ved, hvordan jeg laver en global keyboard-hook, som kan
opsnappe følgende tastetryk:

Tryk på V når Ctrl er trykket ned
Tryk på G når Ctrl er trykket ned

samt når Ctrl slippes igen

Bruger Delphi 7, hvis det er vigtigt

Lars



 
 
Harald (25-04-2007)
Kommentar
Fra : Harald


Dato : 25-04-07 14:14

"Lars HT" <aslaktoke@yaBADABAhoo.dk> skrev i en meddelelse
news:462f4966$0$4152$ba624c82@nntp02.dk.telia.net...
> Hej
>
> Er der nogen, som ved, hvordan jeg laver en global keyboard-hook, som kan
> opsnappe følgende tastetryk:
>
> Tryk på V når Ctrl er trykket ned
> Tryk på G når Ctrl er trykket ned
>
> samt når Ctrl slippes igen
>
> Bruger Delphi 7, hvis det er vigtigt

Og hvis det ikke er vigtigt hvad bruger du så?

/HK



Uffe Kousgaard (25-04-2007)
Kommentar
Fra : Uffe Kousgaard


Dato : 25-04-07 14:25

"Harald" <nomail@noname.dk> wrote in message
news:462f5429$0$15878$edfadb0f@dtext01.news.tele.dk...
>
> Og hvis det ikke er vigtigt hvad bruger du så?

måske vb?



Lars HT (25-04-2007)
Kommentar
Fra : Lars HT


Dato : 25-04-07 14:26


"Harald" <nomail@noname.dk> wrote in message
news:462f5429$0$15878$edfadb0f@dtext01.news.tele.dk...
>> Bruger Delphi 7, hvis det er vigtigt
>
> Og hvis det ikke er vigtigt hvad bruger du så?
>

Papir og blyant!

Lars



Thomas Eg Jørgensen (25-04-2007)
Kommentar
Fra : Thomas Eg Jørgensen


Dato : 25-04-07 14:16

"Lars HT" <aslaktoke@yaBADABAhoo.dk> skrev i en meddelelse
news:462f4966$0$4152$ba624c82@nntp02.dk.telia.net...
> Hej
>
> Er der nogen, som ved, hvordan jeg laver en global keyboard-hook, som
> kan opsnappe følgende tastetryk:
>
> Tryk på V når Ctrl er trykket ned
> Tryk på G når Ctrl er trykket ned
>
> samt når Ctrl slippes igen
>

Hvor "global"? Kun i din applikation eller i hele windows? Der er
forskel...

Hvis det er lokalt i din applikation:
Lav en funktion:
function TForm1.AppHookFunc(var Message : TMessage) : Boolean;
begin
if Message.Msg = WM_KEYDOWN then
begin
//En tast blev trykket...
//Undersøg "Message" for at finde ud af hvad det er for en
tast....eller kombiner dette indlæg med google
//Se evt. de andre message-typer i "messages.pas" i din Delphi...man
kan "fange" mange ting...
end;
end;

Funktionen aktiveres så f.eks. i
procedure TForm1.FormCreate(Sender: TObject);
begin
Application.HookMainWindow(AppHookFunc);
end;

Hvis det skal være globalt bliver det lidt mere klistret, men det er
muligt:
http://www.q3.nu/trucomania/truco.cgi?408&ing

Hjalp det?

MVH
Thomas


Thomas Eg Jørgensen (25-04-2007)
Kommentar
Fra : Thomas Eg Jørgensen


Dato : 25-04-07 14:18


"Thomas Eg Jørgensen" <thomas@hest.notaplan.com> skrev i en meddelelse
news:462f549f$0$90271$14726298@news.sunsite.dk...
> Funktionen aktiveres så f.eks. i
> procedure TForm1.FormCreate(Sender: TObject);
> begin
> Application.HookMainWindow(AppHookFunc);
> end;
>

....og man skal altid huske at rydde op efter sig selv:
procedure TForm1.FormDestroy(Sender: TObject);
begin
Application.UnhookMainWindow(AppHookFunc);
end;

....min mor ville være stolt

MVH
Thomas


Lars HT (25-04-2007)
Kommentar
Fra : Lars HT


Dato : 25-04-07 14:25


"Thomas Eg Jørgensen" <thomas@hest.notaplan.com> wrote in message
news:462f549f$0$90271$14726298@news.sunsite.dk...
> Hvor "global"? Kun i din applikation eller i hele windows? Der er
> forskel...
>

Global - skal virker uanset, hvilket progra, som har fokus!

Lars



Thomas Eg Jørgensen (25-04-2007)
Kommentar
Fra : Thomas Eg Jørgensen


Dato : 25-04-07 14:35

"Lars HT" <aslaktoke@yaBADABAhoo.dk> skrev i en meddelelse
news:462f56c9$0$4175$ba624c82@nntp02.dk.telia.net...
>> Hvor "global"? Kun i din applikation eller i hele windows? Der er
>> forskel...
>
> Global - skal virker uanset, hvilket progra, som har fokus!
>

Jamen så skal du kigge på det nederste link jeg sendte:
http://www.q3.nu:80/trucomania/truco.cgi?408&ing

MVH
Thomas


Lars HT (25-04-2007)
Kommentar
Fra : Lars HT


Dato : 25-04-07 15:42


"Thomas Eg Jørgensen" <thomas@hest.notaplan.com> wrote in message
news:462f5913$0$90271$14726298@news.sunsite.dk...
> Jamen så skal du kigge på det nederste link jeg sendte:
> http://www.q3.nu:80/trucomania/truco.cgi?408&ing
>

Åh, Herregud - det havde jeg overset!

Kigger på linket!

Lars



Lars HT (25-04-2007)
Kommentar
Fra : Lars HT


Dato : 25-04-07 15:59


"Thomas Eg Jørgensen" <thomas@hest.notaplan.com> wrote in message
news:462f5913$0$90271$14726298@news.sunsite.dk...
> "Lars HT" <aslaktoke@yaBADABAhoo.dk> skrev i en meddelelse
> news:462f56c9$0$4175$ba624c82@nntp02.dk.telia.net...
>>> Hvor "global"? Kun i din applikation eller i hele windows? Der er
>>> forskel...
>>
>> Global - skal virker uanset, hvilket progra, som har fokus!
>>
>
> Jamen så skal du kigge på det nederste link jeg sendte:
> http://www.q3.nu:80/trucomania/truco.cgi?408&ing
>

Hej Thomas

Det er vist lige, hvad jeg har brug for!

Tak

Lars



Thomas Eg Jørgensen (26-04-2007)
Kommentar
Fra : Thomas Eg Jørgensen


Dato : 26-04-07 11:55

"Lars HT" <aslaktoke@yaBADABAhoo.dk> skrev i en meddelelse
news:462f6cc7$0$4163$ba624c82@nntp02.dk.telia.net...
>>>> Hvor "global"? Kun i din applikation eller i hele windows? Der er
>>>> forskel...
>>>
>>> Global - skal virker uanset, hvilket progra, som har fokus!
>>>
>>
>> Jamen så skal du kigge på det nederste link jeg sendte:
>> http://www.q3.nu:80/trucomania/truco.cgi?408&ing
>>
>
> Det er vist lige, hvad jeg har brug for!
>

Du må gerne skrive her hvordan det går...jeg skal selv bruge det på et
senere tidspunkt...

Jeg har dog en ting jeg ikke har fået testet endnu: 32bit DLL fra delphi
indeholdende en hook....kombineret med et 64bit OS(f.eks. nyeste 64bit
XP og 64bit 2003-server)....en svag knirken i mit venstre knæ siger mig
at jeg på et senere tidspunkt vil få meget hovedpine af netop
dette...nogen der kan bekræfte/afkræfte dette?

MVH
Thomas


Michael Vilhelmsen (26-04-2007)
Kommentar
Fra : Michael Vilhelmsen


Dato : 26-04-07 13:16

Thomas Eg Jørgensen explained on 26-04-2007 :
> "Lars HT" <aslaktoke@yaBADABAhoo.dk> skrev i en meddelelse news:462f6cc7$0$4163$ba624c82@nntp02.dk.telia.net...
>>>>> Hvor "global"? Kun i din applikation eller i hele windows? Der er forskel...
>>>>
>>>> Global - skal virker uanset, hvilket progra, som har fokus!
>>>>
>>>
>>> Jamen så skal du kigge på det nederste link jeg sendte:
>>> http://www.q3.nu:80/trucomania/truco.cgi?408&ing
>>>
>>
>> Det er vist lige, hvad jeg har brug for!
>>
>
> Du må gerne skrive her hvordan det går...jeg skal selv bruge det på et senere tidspunkt...
>
> Jeg har dog en ting jeg ikke har fået testet endnu: 32bit DLL fra delphi indeholdende en hook....kombineret med et 64bit OS(f.eks. nyeste 64bit XP og 64bit 2003-server)....en svag knirken i mit
> venstre knæ siger mig at jeg på et senere tidspunkt vil få meget hovedpine af netop dette...nogen der kan bekræfte/afkræfte dette?

Jo, det er rigtig nok. Dit knæ knirker

Miv


>
> MVH
> Thomas

--

Best Regards / Venlig hilsen
Michael Vilhelmsen
This is an automatic signature of MesNews.
Site : http://www.mesnews.net



Thomas Eg Jørgensen (26-04-2007)
Kommentar
Fra : Thomas Eg Jørgensen


Dato : 26-04-07 13:26


"Michael Vilhelmsen"
<Michael.Vilhelmsen.PLEASEREMOVE@Microcom.PLEASEREMOVE.Dk> skrev i en
meddelelse news:mn.d3587d7410c419c7.11460@Microcom.PLEASEREMOVE.Dk...
>> Jeg har dog en ting jeg ikke har fået testet endnu: 32bit DLL fra
>> delphi indeholdende en hook....kombineret med et 64bit OS(f.eks.
>> nyeste 64bit XP og 64bit 2003-server)....en svag knirken i mit
>> venstre knæ siger mig at jeg på et senere tidspunkt vil få meget
>> hovedpine af netop dette...nogen der kan bekræfte/afkræfte dette?
>
> Jo, det er rigtig nok. Dit knæ knirker
>

ØV! Hvad gør man så? Jeg bruger normalt D7pro til udvikling, men har
D2005 stående på hylden hvis det kan hjælpe mig? (ellers må jeg
opgradere til D2006?) Er der nogen af dem der kan kompilere min DLL til
64bit?

MVH
Thomas


Uffe Kousgaard (26-04-2007)
Kommentar
Fra : Uffe Kousgaard


Dato : 26-04-07 15:08

"Thomas Eg Jørgensen" <thomas@hest.notaplan.com> wrote in message
news:46309a6c$0$90264$14726298@news.sunsite.dk...
>
> ØV! Hvad gør man så? Jeg bruger normalt D7pro til udvikling, men har D2005
> stående på hylden hvis det kan hjælpe mig? (ellers må jeg opgradere til
> D2006?) Er der nogen af dem der kan kompilere min DLL til 64bit?

Nej, og D2007 kan heller ikke. Eller næste Delphi for den sags skyld.
CodeGear er ikke just lige på trapperne med en 64-bit compiler.

Måske freepascal kan. Den har en 64-bit udgave.



Thomas Eg Jørgensen (26-04-2007)
Kommentar
Fra : Thomas Eg Jørgensen


Dato : 26-04-07 15:38


"Uffe Kousgaard" <oh@no.no> skrev i en meddelelse
news:4630b23a$0$2089$edfadb0f@dtext02.news.tele.dk...
>> ØV! Hvad gør man så? Jeg bruger normalt D7pro til udvikling, men har
>> D2005 stående på hylden hvis det kan hjælpe mig? (ellers må jeg
>> opgradere til D2006?) Er der nogen af dem der kan kompilere min DLL
>> til 64bit?
>
> Nej, og D2007 kan heller ikke. Eller næste Delphi for den sags skyld.
> CodeGear er ikke just lige på trapperne med en 64-bit compiler.
>

Det var da kritisk...Hvem/Hvad kan så kompilere 64bit programmer?
Alternativt må jeg jo skifte sprog til den DLL-fil...?

> Måske freepascal kan. Den har en 64-bit udgave.
>

Det ser ud til at det kun er til Linux....?

MVH
Thomas


Uffe Kousgaard (26-04-2007)
Kommentar
Fra : Uffe Kousgaard


Dato : 26-04-07 16:03

"Thomas Eg Jørgensen" <thomas@hest.notaplan.com> wrote in message
news:4630b941$0$90263$14726298@news.sunsite.dk...
>
> Det var da kritisk...Hvem/Hvad kan så kompilere 64bit programmer?

MS Visual Studio C++ og sikkert flere andre.

>> Måske freepascal kan. Den har en 64-bit udgave.
>>
>
> Det ser ud til at det kun er til Linux....?

Så skal du have pudset briller. Det er til MANGE platforme.
http://www.freepascal.org/



Uffe Kousgaard (26-04-2007)
Kommentar
Fra : Uffe Kousgaard


Dato : 26-04-07 16:06

> Så skal du have pudset briller. Det er til MANGE platforme.
> http://www.freepascal.org/

Ups, nej, du har ret. win32 men ikke win64.



Ukendt (26-04-2007)
Kommentar
Fra : Ukendt


Dato : 26-04-07 20:25


"Uffe Kousgaard" <oh@no.no> skrev i en meddelelse
news:4630bfee$0$2108$edfadb0f@dtext02.news.tele.dk...
>> Så skal du have pudset briller. Det er til MANGE platforme.
>> http://www.freepascal.org/
>
> Ups, nej, du har ret. win32 men ikke win64.

Jo den findes

ftp://ftp.freepascal.org/pub/fpc/snapshot/v21/x86_64-win64/fpc-2.1.1.x86_64-win64.zip

Jeg ved dog ikke hvor god den er !

Mvh
Lars G



Lars HT (08-05-2007)
Kommentar
Fra : Lars HT


Dato : 08-05-07 21:12


"Thomas Eg Jørgensen" <thomas@hest.notaplan.com> wrote in message
news:46308511$0$90262$14726298@news.sunsite.dk...
> "Lars HT" <aslaktoke@yaBADABAhoo.dk> skrev i en meddelelse
> news:462f6cc7$0$4163$ba624c82@nntp02.dk.telia.net...
>>>>> Hvor "global"? Kun i din applikation eller i hele windows? Der er
>>>>> forskel...
>>>>
>>>> Global - skal virker uanset, hvilket progra, som har fokus!
>>>>
>>>
>>> Jamen så skal du kigge på det nederste link jeg sendte:
>>> http://www.q3.nu:80/trucomania/truco.cgi?408&ing
>>>
>>
>> Det er vist lige, hvad jeg har brug for!
>>
>
> Du må gerne skrive her hvordan det går...jeg skal selv bruge det på et
> senere tidspunkt...
>

Jeg har nu lavet nogle forsøg, og det fungerer fint!
Der er dog et problem, som jeg ikke har kunnet løse:
DLL'en fanger jo alle tastetryk og meddeler hovedprogrammet, hvilken tast,
som bliver trykke/sluppet. Herefter sender DLL'en tastetrykket videre til
andre programmer, som evt. også skal reagere på tastaturet.
Det er også som det skal være - i de fleste tilfælde! Der er dog enkelte
tastekombinationer, som jeg selv ønsker at behandle, og som ikke skal sendes
videre.
F.eks. skal trykken op og ned på tasten "V" behandles af mit program og ikke
sendes videre, hvis Ctrl er trykket ned! Hvordan gør jeg det?

Ligeså vil jeg - efter at have "behandlet" visse tastetryk - kunne sende dem
videre i rækken af Hooks. Hvordan sender jeg. f.eks. "Ctrl-V" videre i
PC-æteren, så windows kan paste text ned i den til enhver tid aktive
applikation?

Lars



Thomas Eg Jørgensen (09-05-2007)
Kommentar
Fra : Thomas Eg Jørgensen


Dato : 09-05-07 12:06

"Lars HT" <aslaktoke@yaBADABAhoo.dk> skrev i en meddelelse
news:4640d99f$0$4167$ba624c82@nntp02.dk.telia.net...
>>>>>> Hvor "global"? Kun i din applikation eller i hele windows? Der er
>>>>>> forskel...
>>>>>
>>>>> Global - skal virker uanset, hvilket progra, som har fokus!
>>>>>
>>>>
>>>> Jamen så skal du kigge på det nederste link jeg sendte:
>>>> http://www.q3.nu:80/trucomania/truco.cgi?408&ing
>>>>

Crap....så er linket selvfølgelig dødt...


>> Du må gerne skrive her hvordan det går...jeg skal selv bruge det på
>> et senere tidspunkt...
>
> Jeg har nu lavet nogle forsøg, og det fungerer fint!
> Der er dog et problem, som jeg ikke har kunnet løse:
> DLL'en fanger jo alle tastetryk og meddeler hovedprogrammet, hvilken
> tast, som bliver trykke/sluppet. Herefter sender DLL'en tastetrykket
> videre til andre programmer, som evt. også skal reagere på tastaturet.
> Det er også som det skal være - i de fleste tilfælde! Der er dog
> enkelte tastekombinationer, som jeg selv ønsker at behandle, og som
> ikke skal sendes videre.
> F.eks. skal trykken op og ned på tasten "V" behandles af mit program
> og ikke sendes videre, hvis Ctrl er trykket ned! Hvordan gør jeg det?
>

Jeg ville gerne have glo'et linket jeg sendte dig tidligere...men...det
bliver så frit fra hukommelsen i stedet: Så vidt jeg husker skal du blot
sætte result-værdien til enten 0 eller !=0...afhængig af om du vil
"stoppe" trykket eller om du vil lade det fortsætte...? Prøv om det ikke
hjælper hvis du sætter resultatet til f.eks. 1....?

OBS: Så du fortsættelsen af den her tråd omkring "64bit problematikken"?
Såfremt du udvikler software til andre end dig selv så løber du nok
snart panden imod muren her....(Sig endelig til hvis du finder et
trick)

> Ligeså vil jeg - efter at have "behandlet" visse tastetryk - kunne
> sende dem videre i rækken af Hooks. Hvordan sender jeg. f.eks.
> "Ctrl-V" videre i PC-æteren, så windows kan paste text ned i den til
> enhver tid aktive applikation?
>

Prøv at google lidt på "SendKey"...Mener der findes sådan en fætter i
windows api'et...

MVH
Thomas


Lars HT (09-05-2007)
Kommentar
Fra : Lars HT


Dato : 09-05-07 22:46


"Thomas Eg Jørgensen" <thomas@hest.notaplan.com> wrote in message
news:4641ab29$0$90269$14726298@news.sunsite.dk...
> "Lars HT" <aslaktoke@yaBADABAhoo.dk> skrev i en meddelelse
> news:4640d99f$0$4167$ba624c82@nntp02.dk.telia.net...
>>>>>>> Hvor "global"? Kun i din applikation eller i hele windows? Der er
>>>>>>> forskel...
>>>>>>
>>>>>> Global - skal virker uanset, hvilket progra, som har fokus!
>>>>>>
>>>>>
>>>>> Jamen så skal du kigge på det nederste link jeg sendte:
>>>>> http://www.q3.nu:80/trucomania/truco.cgi?408&ing
>>>>>
>
> Crap....så er linket selvfølgelig dødt...
>
>
>>> Du må gerne skrive her hvordan det går...jeg skal selv bruge det på et
>>> senere tidspunkt...
>>
>> Jeg har nu lavet nogle forsøg, og det fungerer fint!
>> Der er dog et problem, som jeg ikke har kunnet løse:
>> DLL'en fanger jo alle tastetryk og meddeler hovedprogrammet, hvilken
>> tast, som bliver trykke/sluppet. Herefter sender DLL'en tastetrykket
>> videre til andre programmer, som evt. også skal reagere på tastaturet.
>> Det er også som det skal være - i de fleste tilfælde! Der er dog enkelte
>> tastekombinationer, som jeg selv ønsker at behandle, og som ikke skal
>> sendes videre.
>> F.eks. skal trykken op og ned på tasten "V" behandles af mit program og
>> ikke sendes videre, hvis Ctrl er trykket ned! Hvordan gør jeg det?
>>
>
> Jeg ville gerne have glo'et linket jeg sendte dig tidligere...men...det
> bliver så frit fra hukommelsen i stedet: Så vidt jeg husker skal du blot
> sætte result-værdien til enten 0 eller !=0...afhængig af om du vil
> "stoppe" trykket eller om du vil lade det fortsætte...? Prøv om det ikke
> hjælper hvis du sætter resultatet til f.eks. 1....?
>
> OBS: Så du fortsættelsen af den her tråd omkring "64bit problematikken"?
> Såfremt du udvikler software til andre end dig selv så løber du nok snart
> panden imod muren her....(Sig endelig til hvis du finder et trick)
>
>> Ligeså vil jeg - efter at have "behandlet" visse tastetryk - kunne sende
>> dem videre i rækken af Hooks. Hvordan sender jeg. f.eks. "Ctrl-V" videre
>> i PC-æteren, så windows kan paste text ned i den til enhver tid aktive
>> applikation?
>>
>
> Prøv at google lidt på "SendKey"...Mener der findes sådan en fætter i
> windows api'et...
>
> MVH
> Thomas

Tak for svaret, jeg kigger på det og vender tilbage!

Lars



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408914
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste