Missa inte Amazon Primedays i Dagens fynd
Permalänk
Medlem

keydown event i VB

Behöver lite hjälp med min kod. Jag vill att en sak ska utföras när man trycker på en bestämd tangent.

Detta fungerar då man trykcer på "a":

Private Sub text1_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = 65 Then
Text2.Text = "Sant"
End If
End Sub

Går det att göra så att man inte har någon textbox utan skickar direkt till form. Har testat men får det ej att fungera. Alternativt hur gör jag så att fokus sätts till textboxen. ?

Permalänk
Medlem

text2.setfocus

Permalänk

print "Sant"

skriver sant direkt på formuläret

om du ska köra med mirzas setfocus så kom ihåg att lägga till en on error resume next högst upp i subben..har för mig att vb gnäller om objektet man förösker sätta fokusen på redan har fokus

edit: för övrigt är det väl smidigare att använda vbkey konstanterna så slipper du fibbla med ascii koden

Visa signatur

Asus Maximus Extreme IV ● Intel 2600K @ 4.7Ghz ● Zalman CNPS9900 MAX ● Corsair XMS3 4x4096mb 1600Mhz ● EVGA Geforce GTX 980 Ti ● SB X-Fi Titanium Pro ● Corsair AX850 Gold

Permalänk
Medlem

Ska styra mina trådlösa strömbrytare med programmet. Hade tänkt mig numpad knapparna /,*,8,9,5,6,2,3,0,, Kan du visa kodexempel på hur man använder sig av vbkey ?

Permalänk

http://msdn.microsoft.com/library/en-us/vb98/html/vbidxkeycod...

så kan du använda dem istället för a pula med siffrorna

vbKeyA = A-tangenten

Visa signatur

Asus Maximus Extreme IV ● Intel 2600K @ 4.7Ghz ● Zalman CNPS9900 MAX ● Corsair XMS3 4x4096mb 1600Mhz ● EVGA Geforce GTX 980 Ti ● SB X-Fi Titanium Pro ● Corsair AX850 Gold

Permalänk
Medlem

Jo det blev lite lättare, löst nu.

ett nytt problem: Hur ska jag göra för att programmet ska ta emot knapptryckningar trots att fönstret inte är aktivt det jag har funderat på är att lägga den i trayen, blir det lättare då ? Hur lägger jag programmet där ?

Permalänk

ja du behöver använda win32 apin både för att få ner en ikon i trayen och även för att kunna lyssna efter knapptryckningar utanför programmet...

en variant är getaSyncKeyState() apin i en loop men det kan ju tänkas ta en del resurser....

om ditt program endast ska svara på en speciell knapp så ska det finnas nån hotkey api tror jag så du kan binda en knapp till ditt program

lite kod för en hotkey jag hittade på webben (hoppas att det är vb6 kod ):

To register a hot key in Windows, instead of using GetKeyState (takes CPU-power).. Private Const WM_SETHOTKEY = &H32 Private Declare Function SendMessageByLong Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long Public Enum echkModifierKeys HOTKEYF_SHIFT = &H1 HOTKEYF_CONTROL = &H2 HOTKEYF_ALT = &H4 HOTKEYF_EXT = &H8 HOTKEYF_SHIFTCONTROL = &H3 HOTKEYF_ALTSHIFT = &H5 HOTKEYF_CONTROLALT = &H6 HOTKEYF_CONTROLALTSHIFT = &H7 End Enum Public Function SetHotKey( _ ByVal hWnd As Long, _ ByVal eKeyCode As VBRUN.KeyCodeConstants, _ ByVal eModifier As echkModifierKeys _ ) As Boolean Dim iR As Long Dim lKey As Long ' wParam is a word with the LoByte set to ' the key code and the HiByte set to the modifier: lKey = (eKeyCode And &HFF&) Or ((eModifier And &HFF&) * &H100&) iR = SendMessageByLong(hWnd, WM_SETHOTKEY, lKey, 0) Select Case iR Case 2 Err.Raise 20001, App.EXEName & ".SetHotKey", "Hot key previously assigned" Case 1 ' success SetHotKey = True Case 0 Err.Raise 20002, App.EXEName & ".SetHotKey", "Invalid window for Hot key" Case -1 Err.Raise 20003, App.EXEName & ".SetHotKey", "Invalid Hot key" Case Else Err.Raise 20004, App.EXEName & ".SetHotKey", "Failed to set Hot key" End Select End Function

har nog en annan kod på datorn men jag kan inte kolla den nu..

för systrayen så har du lite kod här
http://forum.sweclockers.com/showthread.php?s=&threadid=99709...

http://forum.sweclockers.com/showthread.php?s=&threadid=98168...

Visa signatur

Asus Maximus Extreme IV ● Intel 2600K @ 4.7Ghz ● Zalman CNPS9900 MAX ● Corsair XMS3 4x4096mb 1600Mhz ● EVGA Geforce GTX 980 Ti ● SB X-Fi Titanium Pro ● Corsair AX850 Gold

Permalänk
Medlem

Jag fick det att funka med ett annat exempel som jag la i ett eget projekt men när jg sen skulle lägga in det i mitt program så funka det inte följande kod som ligger i form load gjorde att hela visual basic avslutades:

oldProc = SetWindowLongA(Me.hwnd, GWL_WNDPROC, AddressOf WndProc)
HotKeyActivate Me.hwnd, MOD_CONTROL, Asc("U") 'hotkey 1
HotKeyActivate Me.hwnd, MOD_ALT, Asc("M") 'hotkey 2
HotKeyActivate Me.hwnd, MOD_SHIFT, Asc("M") 'hotkey 3
HotKeyActivate Me.hwnd, MOD_CONTROL, Asc("J") 'hotkey 4
HotKeyActivate Me.hwnd, MOD_CONTROL, vbKeyNumpad9 'hotkey 5
'The number of the hotkey is given in the WindProc see
'mSubClass in "wParam"

Den här koden använde jag mig i övrigt av: http://www.freevbcode.com/ShowCode.Asp?ID=987

Permalänk

du glömde väl inte att klistra in API deklarationerna?

iochförsig så skka ju vb säga till då

Visa signatur

Asus Maximus Extreme IV ● Intel 2600K @ 4.7Ghz ● Zalman CNPS9900 MAX ● Corsair XMS3 4x4096mb 1600Mhz ● EVGA Geforce GTX 980 Ti ● SB X-Fi Titanium Pro ● Corsair AX850 Gold

Permalänk
Medlem

Nej tog med dem också, testade att lägga ovanstående kod i händelsen på en knapp istället för att se att det verkligen var det, och då avslutades det inte förän jag tryckte på knappen, men det märkliga är ju att hela visual basic stängs av, utan att spara, så första gången tappade jag nån halvtimmes arbete

Permalänk

vad händer om du kör programmet utanför IDEn då? kompilerar en exe fil det vill säga och kör den?

Visa signatur

Asus Maximus Extreme IV ● Intel 2600K @ 4.7Ghz ● Zalman CNPS9900 MAX ● Corsair XMS3 4x4096mb 1600Mhz ● EVGA Geforce GTX 980 Ti ● SB X-Fi Titanium Pro ● Corsair AX850 Gold

Permalänk
Medlem

Hehe, tack för hjälpen, hitta felet nu.
När jag kompilera så fick jag upp ett felmeddelande på en kodrad i en av modulerna, fick ej det filet när jag bara starta direkt i visual basic, men nu funkar den, även att starta direkt i visual basic och den tar även emot knapptryckningar när den ligger i trayen.

Men...
Nu går det utmärkt att köra med kortkommandon men jag vill att man inte ska behöva hålla in ctrl, eller shift, utan att den ska funka direkt, dock så ska man ha scroll lock på, den använder man ju inte annars så jag tyckte det var en bra idé, jag har redan fixat det med det gamla sättet där man skriver i en textbox det enda jag behöver veta är hur man gör denna kodsnutt så att den tar emot utan ctrl, shift etc.

HotKeyActivate Me.hwnd, MOD_CONTROL, vbKeyNumpad9

denna rad som styr vilka knappar jag ska trycka.
har testat att bara ta bort MOD-Control men det fungerar inte