Avatar billede angelenglen Nybegynder
12. september 2004 - 20:31 Der er 14 kommentarer og
1 løsning

hurtigere timer.

jeg sidder og laver et program, der udfører en handling, hvis musen er indenfor et bestemt sæt kooridinater.

derfor bruger jeg en timer til at overvåge om det er tilfældet, og udfører der handlingen.

mit problem er så at standard timeren ikke kan køre hurtigere end 1ms interval - jeg kunne godt bruge noget i stil med 10 gange hurtigere...

nogen der ved hvad jeg kan gøre?
Avatar billede jsc Nybegynder
12. september 2004 - 21:34 #1
tror du skal gå over til at bruge noget med objekt.click() istedet... så undersøger den jo dit input med det samme!

/jsc
Avatar billede angelenglen Nybegynder
12. september 2004 - 21:43 #2
nu er det musens bevægelse jeg vil overvåge, og ikke kliks.
det programmet skal gøre, er at jeg har 4 værdier: Xmax, Xmin, Ymax, Ymin som tilsammen så giver et firkantet område, hvori musen skal være.

så jeg vil overvåge når musen kommer udenfor denne firkant, og hvis det er tilfældet, så flytte den tilbage i midten af området.

det har jeg så gjort med en timer-kontrol og nedenstående kode, og det virker egentligt fint nok, problemet er bare at timerens interval er for langsomt, således at musen egentligt kan nå at flytte sig ret langt udenfor firkanten.

her er den kode jeb benytter i timeren:

Private Sub Timer1_Timer()
  Mouse1.MouseCoordinates X, Y
  Label1.Caption = "X:" & X & " Y:" & Y
 
  If (X <= Form1.txtXmin.Text + 1) Then
    Mouse1.MouseMove CLng(Round((Form1.txtXmax.Text - ((Form1.txtXmax.Text - Form1.txtXmin.Text) / 2)), 0)), CLng(Round((Form1.txtYmax.Text - ((Form1.txtYmax.Text - Form1.txtYmin.Text) / 2)), 0))
  End If

  If (X >= Form1.txtXmax.Text - 1) Then
    Mouse1.MouseMove CLng(Round((Form1.txtXmax.Text - ((Form1.txtXmax.Text - Form1.txtXmin.Text) / 2)), 0)), CLng(Round((Form1.txtYmax.Text - ((Form1.txtYmax.Text - Form1.txtYmin.Text) / 2)), 0))
  End If

  If (Y <= Form1.txtYmin.Text + 1) Then
    Mouse1.MouseMove CLng(Round((Form1.txtXmax.Text - ((Form1.txtXmax.Text - Form1.txtXmin.Text) / 2)), 0)), CLng(Round((Form1.txtYmax.Text - ((Form1.txtYmax.Text - Form1.txtYmin.Text) / 2)), 0))
  End If

  If (Y >= Form1.txtYmax.Text - 1) Then
    Mouse1.MouseMove CLng(Round((Form1.txtXmax.Text - ((Form1.txtXmax.Text - Form1.txtXmin.Text) / 2)), 0)), CLng(Round((Form1.txtYmax.Text - ((Form1.txtYmax.Text - Form1.txtYmin.Text) / 2)), 0))
  End If

End Sub
Avatar billede jsc Nybegynder
12. september 2004 - 21:51 #3
forstår bare stadig ikke hvorfor du ikke bruger Form1.MouseMove() - så skal man selvfølgelig til at finde ud af om Musen er i området... men det gør du jo allerede...

Det kan være jeg bare skal hold min mund...
Avatar billede angelenglen Nybegynder
12. september 2004 - 21:51 #4
hmm havde ikke set der var noget der hed det... kigger lige på det.
Avatar billede angelenglen Nybegynder
12. september 2004 - 21:58 #5
damn. det virkede ellers nice, eneste problem, er bare at form1.mousemove kun bliver kørt når musen er over formen. -jeg skal kunne overvåge musen selvom den er udenfor mit program.
Avatar billede jsc Nybegynder
12. september 2004 - 21:59 #6
så må man jo lave en "skujlt" og "altid øverst" form.... :)
Avatar billede jsc Nybegynder
12. september 2004 - 22:00 #7
der findes allerede mange spm, med noget med "udenfor formen".....
Avatar billede angelenglen Nybegynder
12. september 2004 - 22:01 #8
hmm lyder interessant.
hvordan laver jeg en fullscreen gennemsigtig form?

-jeg skal også kunne klicke på det program der ligger nedenunder jo - meningen med programmet er at holde musen fanget indenfor et andet program's menu-knap-område.
Avatar billede angelenglen Nybegynder
12. september 2004 - 22:01 #9
okay, prøver lige at søge efter det.
Avatar billede jsc Nybegynder
12. september 2004 - 22:02 #10
det lyder lidt til at være sådan et center crosshair program :)

men som sagt.. så prøv at søg efter "fang musen", "gennemsigtig form" etc.
Avatar billede angelenglen Nybegynder
12. september 2004 - 22:04 #11
hele pointen med programmet, er at jeg vil kunne sørge for at musen er fanget indenfor et lille område af skærmen. på den måde kan jeg bruge min trådløse mus som fjernbetjening, og vide at den altid rammer det rigtige sted på skærmen.

jeg kigger efter noget med gennemsigtig form.
Avatar billede jsc Nybegynder
12. september 2004 - 22:05 #12
smart må jeg sige.... men ja.. prøv det
Avatar billede sjh Nybegynder
13. september 2004 - 03:02 #13
Avatar billede angelenglen Nybegynder
13. september 2004 - 08:34 #14
Jeg er lige på arbejde, men jeg kigger på det iaften engang. umiddelbart set der spænnende ud.
Avatar billede angelenglen Nybegynder
09. december 2004 - 15:48 #15
glemte at svare, det virkede perfekt!
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