2008-02-10, 02:49
  #1
Medlem
Hejsan.
Jag har inte gjort någon sorts VB porgrammering på ett bra tag men nu tänkte jag slänga ihop en liten grejj. Jag bestämde mig för att dumpa det föråldrade VB6 och köra på .NET.
Detta är ju hyffsat annorlunda så jag undrar nu hur jag skall använda SendKeys.
Vad jag vill göra är att när jag trycker ner en viss tangent skall en annan också skickas/skickas i stället.
T.ex. i VB6
Kod:
If GetAsyncKeyState(vbKeyF1) Then
SendKeys "{NUMPAD4}"

Hur skall detta göras i .NET?
Citera
2008-02-10, 14:06
  #2
Medlem
gadzooxs avatar
Citat:
Ursprungligen postat av Logz
Hejsan.
Jag har inte gjort någon sorts VB porgrammering på ett bra tag men nu tänkte jag slänga ihop en liten grejj. Jag bestämde mig för att dumpa det föråldrade VB6 och köra på .NET.
Detta är ju hyffsat annorlunda så jag undrar nu hur jag skall använda SendKeys.
Vad jag vill göra är att när jag trycker ner en viss tangent skall en annan också skickas/skickas i stället.
T.ex. i VB6
Kod:
If GetAsyncKeyState(vbKeyF1) Then
SendKeys "{NUMPAD4}"

Hur skall detta göras i .NET?
Vill du fånga och skicka tangenter internt i applikationen, eller vill du intercepta och skicka ut dem till någon annan applikation?

Om internt så är det hyfsat lätt, borde väl bli ngt i den här stilen. Ursäkta eventuella fel i koden, känner inte direkt för att ha någon större koll på VB. Microsoft får en att känna sig som en femåring med den där syntaxen; "MyBase", "Handles", "Inherits", "Then"... bah!
Kod:
Implements System.Windows.Forms
Public Class Form1 Inherits Form
  
'' Constructor
  
Public Sub New()
    
Me.KeyPreview True  '' Sätt KeyPreview till true för att formuläret skall ta emot knapptryckningar innan de skickas till den kontroll som har fokus.
  
End Sub

  
'' EventHandler för eventet KeyDownsom raise:as när en knapp trycks ner.
  
'' Alternativt kan du hantera eventet textBox1.KeyDown iställetför att förhindra W enbart i just den textboxenI så fall krävs inte KeyPreview=True.
  Private 
Sub Form1_KeyDown(ByVal sender As ObjectByVal e As KeyEventArgsHandles MyBase.KeyDown
    
If e.KeyCode Keys.W Then                  '' Om W trycktes ner.... 
       
e.SuppressKeyPress True                '' ...suppressa (kasta bortknapptryckningen...
       
System.Windows.Forms.SendKeys.Send("Q")  '' ...och skicka ett Q istället.
    
End If
  
End Sub
End 
Class 

Åh herregud vilket fult språk, så mycket text
Citera
2008-02-10, 19:07
  #3
Medlem
Citat:
Ursprungligen postat av gadzoox
Vill du fånga och skicka tangenter internt i applikationen, eller vill du intercepta och skicka ut dem till någon annan applikation?
Den måste gå att använda i en annan applikation
Citera
2008-02-22, 16:01
  #4
Bannlyst
Då måste du hooka tangenterna.

Kolla på denna
http://blogs.msdn.com/toub/archive/2...03/589423.aspx
Citera

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Det är enkelt att registrera ett nytt konto

Bli medlem

Logga in

Har du redan ett konto? Logga in här

Logga in