Avatar billede ullesan Nybegynder
08. marts 2004 - 15:56 Der er 8 kommentarer og
1 løsning

Opfange muse tast

Heysa

Jeg er stolt :P ejer af en logitech MX 500 mus... På denne er der på venstre side 2 knapper, der kan virke som tilbage/frem knapper med iexplorer mm...

Det jeg godt kunne tænke mig var at kunne opfange om der bliver trykket på disse taster og afhængig af hvilket udføre noget bestemt

Nogle der kan hjælpe?

På forhånd tak
Avatar billede athlon-pascal Juniormester
08. marts 2004 - 16:08 #1
Kører der et program til din mus i baggrunden hele tiden?
Avatar billede ullesan Nybegynder
08. marts 2004 - 16:11 #2
hvad jeg kan specificere frem til, via task manager og mscongif, er at programmerne

EM_EXEC
og
Logi_MwX

tilknyttet til musen
Avatar billede athlon-pascal Juniormester
08. marts 2004 - 16:22 #3
Prøv at oprette et nyt Delphi-projekt, og skriv følgende i formens OnKeyDown-event:

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  case Key of
    167:
      begin
        ShowMessage('Frem');
        Key := 0;
      end;
    166:
      begin
        ShowMessage('Tilbage');
        Key := 0;
      end;
  end;
end;

Jeg ved, at browsere i hvert fald opfatter disse taster (167 og 166) som frem og tilbage.
Det ville ikke undre mig, hvis din mus (evt. gennem et af de programmer der kører i baggrunden) sender samme tastekoder :o)
Avatar billede ullesan Nybegynder
08. marts 2004 - 16:26 #4
desværre, men jeg må skuffe dig og meddele at det ikke virker
Avatar billede ullesan Nybegynder
08. marts 2004 - 16:31 #5
jeg har experimenreret lidt med følgende

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
ShowMessage(IntToStr(key));
end;


når jeg trykker på de knapper jeg ønsker viser den "18", lige meget hvilket af de 2 jeg trykker på... formen reagerer derimod ikke hvis jeg trykker på de normale højre/venstre knapper
Avatar billede ullesan Nybegynder
08. marts 2004 - 16:45 #6
okay... mystisk... har experimenteret lidt videre og har vidst løst det

med

ShowMessage(IntToStr(key));
fik jeg hele tiden 18

nu da hvor jeg har sat følgende op

Edit1.Text := IntToStr(key);

så får jeg værdierne 37 og 39, hvilket er dem jeg skal bruge



anyways... tak for hjælpen og det tid du brugte på at hjælpe mig athlon-pascal...
du fortjener pointene alligevel
Avatar billede athlon-pascal Juniormester
08. marts 2004 - 17:34 #7
Jeg kan oplyse dig om, at 37 og 39 er henholdsvis venstre og højre piltast.
De er ikke nok i sig selv til at få browseren til at navigere frem og tilbage - alt-tasten skal være holdt nede.
Alt-tasten har værdien 18, derfor fik du den værdi :o)

Man kan tjekke om alt-tasten er hold nede på følgende måde:

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if (ssAlt in Shift) then
    // Gør et eller andet...
    ShowMessage('Alt-tasten holdes nede');
end;

Et fuldt eksempel kan derfor se ud som følgende:

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if (ssAlt in Shift) then
    case Key of
      37:
        ShowMessage('Tilbage');
      39:
        ShowMessage('Frem');
    end;
end;

Held og lykke :o)
Avatar billede athlon-pascal Juniormester
08. marts 2004 - 17:43 #8
Man kan evt. med fordel bruge de faste konstanter for piltasterne, for et bedre overblik over koden:

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if (ssAlt in Shift) then
    case Key of
      VK_LEFT:
        ShowMessage('Tilbage');
      VK_RIGHT:
        ShowMessage('Frem');
    end;
end;

Konstanterne er fastsat i Windows.pas:

const
  {$EXTERNALSYM VK_LEFT}
  VK_LEFT = 37;
  {$EXTERNALSYM VK_RIGHT}
  VK_RIGHT = 39;
Avatar billede ullesan Nybegynder
08. marts 2004 - 18:03 #9
Ok... tak for kode og hjælp :)
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