Help please [c# windowsforms hotkeys]

Posts 1–14 of 14 · Page 1 of 1
Help please [c# windowsforms hotkeys]
err
Code:
    [DllImport("user32.dll", SetLastError = true)]
        public static extern bool RegisterHotKey(
 
            IntPtr hWnd,    
            int id,    
            KeyModifiers fsModifiers,   
            Keys vk      
            );
        [DllImport("user32.dll", SetLastError = true)]
        public static extern bool UnregisterHotKey(
            IntPtr hWnd,    
            int id);     
 
             const int F11 = 0x0312;
             
             protected override void WndProc(ref Message message)
             {
                 if (message.Msg == F11)
                 {
                     timer1.Enabled = true;
                 }
                
                   

              
                 base.WndProc(ref message);
             }
 
 
        public enum KeyModifiers        //enum to call 3rd parameter of RegisterHotKey easily
        {
            None = 0,
            Alt = 1,
            Control = 2,
            Shift = 4,
            Windows = 8
        }
im trying to add another hotkey...... F12 but im having trouble i dunno what f12's number is like f11 is
Code:
const int F11 = 0x0312;
what does F12 equal? 0x "here?"
If it is C#

your actually looking for the Virtual Key, same as Vb.net ,

[php]
VK_F12 = 0x7B
[/php]

And someone correct me if I am wrong, but you are following a tut,

The Value you are setting is for a hotkey, not specifically for f11

You could also add

[php]
if (message.Msg == F12)
{
timer1.Enabled = false;
}
[/php]



Because im total noob and google pulls up shit like what i was using but thanks.
Go to your own site.
You shouldn't need anything more then you already have.

I have posted this before in the vb section, Here are the Windows Api Notifications

[php]
WM_NULL = 0x0000,
WM_CREATE = 0x0001,
WM_DESTROY = 0x0002,
WM_MOVE = 0x0003,
WM_SIZE = 0x0005,
WM_ACTIVATE = 0x0006,
WM_SETFOCUS = 0x0007,
WM_KILLFOCUS = 0x0008,
WM_ENABLE = 0x000A,
WM_SETREDRAW = 0x000B,
WM_SETTEXT = 0x000C,
WM_GETTEXT = 0x000D,
WM_GETTEXTLENGTH = 0x000E,
WM_PAINT = 0x000F,
WM_CLOSE = 0x0010,
WM_QUERYENDSESSION = 0x0011,
WM_QUIT = 0x0012,
WM_QUERYOPEN = 0x0013,
WM_ERASEBKGND = 0x0014,
WM_SYSCOLORCHANGE = 0x0015,
WM_ENDSESSION = 0x0016,
WM_SHOWWINDOW = 0x0018,
WM_CTLCOLOR = 0x0019,
WM_WININICHANGE = 0x001A,
WM_SETTINGCHANGE = 0x001A,
WM_DEVMODECHANGE = 0x001B,
WM_ACTIVATEAPP = 0x001C,
WM_FONTCHANGE = 0x001D,
WM_TIMECHANGE = 0x001E,
WM_CANCELMODE = 0x001F,
WM_SETCURSOR = 0x0020,
WM_MOUSEACTIVATE = 0x0021,
WM_CHILDACTIVATE = 0x0022,
WM_QUEUESYNC = 0x0023,
WM_GETMINMAXINFO = 0x0024,
WM_PAINTICON = 0x0026,
WM_ICONERASEBKGND = 0x0027,
WM_NEXTDLGCTL = 0x0028,
WM_SPOOLERSTATUS = 0x002A,
WM_DRAWITEM = 0x002B,
WM_MEASUREITEM = 0x002C,
WM_DELETEITEM = 0x002D,
WM_VKEYTOITEM = 0x002E,
WM_CHARTOITEM = 0x002F,
WM_SETFONT = 0x0030,
WM_GETFONT = 0x0031,
WM_SETHOTKEY = 0x0032,
WM_GETHOTKEY = 0x0033,
WM_QUERYDRAGICON = 0x0037,
WM_COMPAREITEM = 0x0039,
WM_GETOBJECT = 0x003D,
WM_COMPACTING = 0x0041,
WM_COMMNOTIFY = 0x0044 ,
WM_WINDOWPOSCHANGING = 0x0046,
WM_WINDOWPOSCHANGED = 0x0047,
WM_POWER = 0x0048,
WM_COPYDATA = 0x004A,
WM_CANCELJOURNAL = 0x004B,
WM_NOTIFY = 0x004E,
WM_INPUTLANGCHANGEREQUEST = 0x0050,
WM_INPUTLANGCHANGE = 0x0051,
WM_TCARD = 0x0052,
WM_HELP = 0x0053,
WM_USERCHANGED = 0x0054,
WM_NOTIFYFORMAT = 0x0055,
WM_CONTEXTMENU = 0x007B,
WM_STYLECHANGING = 0x007C,
WM_STYLECHANGED = 0x007D,
WM_DISPLAYCHANGE = 0x007E,
WM_GETICON = 0x007F,
WM_SETICON = 0x0080,
WM_NCCREATE = 0x0081,
WM_NCDESTROY = 0x0082,
WM_NCCALCSIZE = 0x0083,
WM_NCHITTEST = 0x0084,
WM_NCPAINT = 0x0085,
WM_NCACTIVATE = 0x0086,
WM_GETDLGCODE = 0x0087,
WM_SYNCPAINT = 0x0088,
WM_NCMOUSEMOVE = 0x00A0,
WM_NCLBUTTONDOWN = 0x00A1,
WM_NCLBUTTONUP = 0x00A2,
WM_NCLBUTTONDBLCLK = 0x00A3,
WM_NCRBUTTONDOWN = 0x00A4,
WM_NCRBUTTONUP = 0x00A5,
WM_NCRBUTTONDBLCLK = 0x00A6,
WM_NCMBUTTONDOWN = 0x00A7,
WM_NCMBUTTONUP = 0x00A8,
WM_NCMBUTTONDBLCLK = 0x00A9,
WM_KEYDOWN = 0x0100,
WM_KEYUP = 0x0101,
WM_CHAR = 0x0102,
WM_DEADCHAR = 0x0103,
WM_SYSKEYDOWN = 0x0104,
WM_SYSKEYUP = 0x0105,
WM_SYSCHAR = 0x0106,
WM_SYSDEADCHAR = 0x0107,
WM_KEYLAST = 0x0108,
WM_IME_STARTCOMPOSITION = 0x010D,
WM_IME_ENDCOMPOSITION = 0x010E,
WM_IME_COMPOSITION = 0x010F,
WM_IME_KEYLAST = 0x010F,
WM_INITDIALOG = 0x0110,
WM_COMMAND = 0x0111,
WM_SYSCOMMAND = 0x0112,
WM_TIMER = 0x0113,
WM_HSCROLL = 0x0114,
WM_VSCROLL = 0x0115,
WM_INITMENU = 0x0116,
WM_INITMENUPOPUP = 0x0117,
WM_MENUSELECT = 0x011F,
WM_MENUCHAR = 0x0120,
WM_ENTERIDLE = 0x0121,
WM_MENURBUTTONUP = 0x0122,
WM_MENUDRAG = 0x0123,
WM_MENUGETOBJECT = 0x0124,
WM_UNINITMENUPOPUP = 0x0125,
WM_MENUCOMMAND = 0x0126,
WM_CTLCOLORMSGBOX = 0x0132,
WM_CTLCOLOREDIT = 0x0133,
WM_CTLCOLORLISTBOX = 0x0134,
WM_CTLCOLORBTN = 0x0135,
WM_CTLCOLORDLG = 0x0136,
WM_CTLCOLORSCROLLBAR = 0x0137,
WM_CTLCOLORSTATIC = 0x0138,
WM_MOUSEMOVE = 0x0200,
WM_LBUTTONDOWN = 0x0201,
WM_LBUTTONUP = 0x0202,
WM_LBUTTONDBLCLK = 0x0203,
WM_RBUTTONDOWN = 0x0204,
WM_RBUTTONUP = 0x0205,
WM_RBUTTONDBLCLK = 0x0206,
WM_MBUTTONDOWN = 0x0207,
WM_MBUTTONUP = 0x0208,
WM_MBUTTONDBLCLK = 0x0209,
WM_MOUSEWHEEL = 0x020A,
WM_PARENTNOTIFY = 0x0210,
WM_ENTERMENULOOP = 0x0211,
WM_EXITMENULOOP = 0x0212,
WM_NEXTMENU = 0x0213,
WM_SIZING = 0x0214,
WM_CAPTURECHANGED = 0x0215,
WM_MOVING = 0x0216,
WM_DEVICECHANGE = 0x0219,
WM_MDICREATE = 0x0220,
WM_MDIDESTROY = 0x0221,
WM_MDIACTIVATE = 0x0222,
WM_MDIRESTORE = 0x0223,
WM_MDINEXT = 0x0224,
WM_MDIMAXIMIZE = 0x0225,
WM_MDITILE = 0x0226,
WM_MDICASCADE = 0x0227,
WM_MDIICONARRANGE = 0x0228,
WM_MDIGETACTIVE = 0x0229,
WM_MDISETMENU = 0x0230,
WM_ENTERSIZEMOVE = 0x0231,
WM_EXITSIZEMOVE = 0x0232,
WM_DROPFILES = 0x0233,
WM_MDIREFRESHMENU = 0x0234,
WM_IME_SETCONTEXT = 0x0281,
WM_IME_NOTIFY = 0x0282,
WM_IME_CONTROL = 0x0283,
WM_IME_COMPOSITIONFULL = 0x0284,
WM_IME_SELECT = 0x0285,
WM_IME_CHAR = 0x0286,
WM_IME_REQUEST = 0x0288,
WM_IME_KEYDOWN = 0x0290,
WM_IME_KEYUP = 0x0291,
WM_MOUSEHOVER = 0x02A1,
WM_MOUSELEAVE = 0x02A3,
WM_CUT = 0x0300,
WM_COPY = 0x0301,
WM_PASTE = 0x0302,
WM_CLEAR = 0x0303,
WM_UNDO = 0x0304,
WM_RENDERFORMAT = 0x0305,
WM_RENDERALLFORMATS = 0x0306,
WM_DESTROYCLIPBOARD = 0x0307,
WM_DRAWCLIPBOARD = 0x0308,
WM_PAIN***IPBOARD = 0x0309,
WM_VSCROLLCLIPBOARD = 0x030A,
WM_SIZECLIPBOARD = 0x030B,
WM_ASKCBFORMATNAME = 0x030C,
WM_CHANGECBCHAIN = 0x030D,
WM_HSCROLLCLIPBOARD = 0x030E,
WM_QUERYNEWPALETTE = 0x030F,
WM_PALETTEISCHANGING = 0x0310,
WM_PALETTECHANGED = 0x0311,
WM_HOTKEY = 0x0312,
WM_PRINT = 0x0317,
WM_PRIN***IENT = 0x0318,
WM_HANDHELDFIRST = 0x0358,
WM_HANDHELDLAST = 0x035F,
WM_AFXFIRST = 0x0360,
WM_AFXLAST = 0x037F,
WM_PENWINFIRST = 0x0380,
WM_PENWINLAST = 0x038F,
WM_APP = 0x8000,
WM_USER = 0x0400,
WM_REFLECT = WM_USER + 0x1c00
[/php]

and here are the Virtual Keys

[php]
VK_ABNT_C1 0xC1 Abnt C1
VK_ABNT_C2 0xC2 Abnt C2
VK_ADD 0x6B Numpad +
VK_ATTN 0xF6 Attn
VK_BACK 0x08 Backspace
VK_CANCEL 0x03 Break
VK_CLEAR 0x0C Clear
VK_CRSEL 0xF7 Cr Sel
VK_DECIMAL 0x6E Numpad .
VK_DIVIDE 0x6F Numpad /
VK_EREOF 0xF9 Er Eof
VK_ESCAPE 0x1B Esc
VK_EXECUTE 0x2B Execute
VK_EXSEL 0xF8 Ex Sel
VK_ICO_CLEAR 0xE6 IcoClr
VK_ICO_HELP 0xE3 IcoHlp
VK_KEY_0 0x30 ('0') 0
VK_KEY_1 0x31 ('1') 1
VK_KEY_2 0x32 ('2') 2
VK_KEY_3 0x33 ('3') 3
VK_KEY_4 0x34 ('4') 4
VK_KEY_5 0x35 ('5') 5
VK_KEY_6 0x36 ('6') 6
VK_KEY_7 0x37 ('7') 7
VK_KEY_8 0x38 ('8') 8
VK_KEY_9 0x39 ('9') 9
VK_KEY_A 0x41 ('A') A
VK_KEY_B 0x42 ('B') B
VK_KEY_C 0x43 ('C') C
VK_KEY_D 0x44 ('D') D
VK_KEY_E 0x45 ('E') E
VK_KEY_F 0x46 ('F') F
VK_KEY_G 0x47 ('G') G
VK_KEY_H 0x48 ('H') H
VK_KEY_I 0x49 ('I') I
VK_KEY_J 0x4A ('J') J
VK_KEY_K 0x4B ('K') K
VK_KEY_L 0x4C ('L') L
VK_KEY_M 0x4D ('M') M
VK_KEY_N 0x4E ('N') N
VK_KEY_O 0x4F ('O') O
VK_KEY_P 0x50 ('P') P
VK_KEY_Q 0x51 ('Q') Q
VK_KEY_R 0x52 ('R') R
VK_KEY_S 0x53 ('S') S
VK_KEY_T 0x54 ('T') T
VK_KEY_U 0x55 ('U') U
VK_KEY_V 0x56 ('V') V
VK_KEY_W 0x57 ('W') W
VK_KEY_X 0x58 ('X') X
VK_KEY_Y 0x59 ('Y') Y
VK_KEY_Z 0x5A ('Z') Z
VK_MULTIPLY 0x6A Numpad *
VK_NONAME 0xFC NoName
VK_NUMPAD0 0x60 Numpad 0
VK_NUMPAD1 0x61 Numpad 1
VK_NUMPAD2 0x62 Numpad 2
VK_NUMPAD3 0x63 Numpad 3
VK_NUMPAD4 0x64 Numpad 4
VK_NUMPAD5 0x65 Numpad 5
VK_NUMPAD6 0x66 Numpad 6
VK_NUMPAD7 0x67 Numpad 7
VK_NUMPAD8 0x68 Numpad 8
VK_NUMPAD9 0x69 Numpad 9
VK_OEM_1 0xBA OEM_1 (:
VK_OEM_102 0xE2 OEM_102 (> <)
VK_OEM_2 0xBF OEM_2 (? /)
VK_OEM_3 0xC0 OEM_3 (~ `)
VK_OEM_4 0xDB OEM_4 ({ [)
VK_OEM_5 0xDC OEM_5 (| \)
VK_OEM_6 0xDD OEM_6 (} ])
VK_OEM_7 0xDE OEM_7 (" ')
VK_OEM_8 0xDF OEM_8 (§ !)
VK_OEM_ATTN 0xF0 Oem Attn
VK_OEM_AUTO 0xF3 Auto
VK_OEM_AX 0xE1 Ax
VK_OEM_BACKTAB 0xF5 Back Tab
VK_OEM_CLEAR 0xFE OemClr
VK_OEM_COMMA 0xBC OEM_COMMA (< ,)
VK_OEM_COPY 0xF2 Copy
VK_OEM_CUSEL 0xEF Cu Sel
VK_OEM_ENLW 0xF4 Enlw
VK_OEM_FINISH 0xF1 Finish
VK_OEM_FJ_LOYA 0x95 Loya
VK_OEM_FJ_MASSHOU 0x93 Mashu
VK_OEM_FJ_ROYA 0x96 Roya
VK_OEM_FJ_TOUROKU 0x94 Touroku
VK_OEM_JUMP 0xEA Jump
VK_OEM_MINUS 0xBD OEM_MINUS (_ -)
VK_OEM_PA1 0xEB OemPa1
VK_OEM_PA2 0xEC OemPa2
VK_OEM_PA3 0xED OemPa3
VK_OEM_PERIOD 0xBE OEM_PERIOD (> .)
VK_OEM_PLUS 0xBB OEM_PLUS (+ =)
VK_OEM_RESET 0xE9 Reset
VK_OEM_WSCTRL 0xEE WsCtrl
VK_PA1 0xFD Pa1
VK_PACKET 0xE7 Packet
VK_PLAY 0xFA Play
VK_PROCESSKEY 0xE5 Process
VK_RETURN 0x0D Enter
VK_SELECT 0x29 Select
VK_SEPARATOR 0x6C Separator
VK_SPACE 0x20 Space
VK_SUBTRACT 0x6D Num -
VK_TAB 0x09 Tab
VK_ZOOM 0xFB Zoom
Name Numeric value Description
VK__none_ 0xFF no VK mapping
VK_ACCEPT 0x1E Accept
VK_APPS 0x5D Context Menu
VK_BROWSER_BACK 0xA6 Browser Back
VK_BROWSER_FAVORITES 0xAB Browser Favorites
VK_BROWSER_FORWARD 0xA7 Browser Forward
VK_BROWSER_HOME 0xAC Browser Home
VK_BROWSER_REFRESH 0xA8 Browser Refresh
VK_BROWSER_SEARCH 0xAA Browser Search
VK_BROWSER_STOP 0xA9 Browser Stop
VK_CAPITAL 0x14 Caps Lock
VK_CONVERT 0x1C Convert
VK_DELETE 0x2E Delete
VK_DOWN 0x28 Arrow Down
VK_END 0x23 End
VK_F1 0x70 F1
VK_F10 0x79 F10
VK_F11 0x7A F11
VK_F12 0x7B F12
VK_F13 0x7C F13
VK_F14 0x7D F14
VK_F15 0x7E F15
VK_F16 0x7F F16
VK_F17 0x80 F17
VK_F18 0x81 F18
VK_F19 0x82 F19
VK_F2 0x71 F2
VK_F20 0x83 F20
VK_F21 0x84 F21
VK_F22 0x85 F22
VK_F23 0x86 F23
VK_F24 0x87 F24
VK_F3 0x72 F3
VK_F4 0x73 F4
VK_F5 0x74 F5
VK_F6 0x75 F6
VK_F7 0x76 F7
VK_F8 0x77 F8
VK_F9 0x78 F9
VK_FINAL 0x18 Final
VK_HELP 0x2F Help
VK_HOME 0x24 Home
VK_ICO_00 0xE4 Ico00 *
VK_INSERT 0x2D Insert
VK_JUNJA 0x17 Junja
VK_KANA 0x15 Kana
VK_KANJI 0x19 Kanji
VK_LAUNCH_APP1 0xB6 App1
VK_LAUNCH_APP2 0xB7 App2
VK_LAUNCH_MAIL 0xB4 Mail
VK_LAUNCH_MEDIA_SELECT 0xB5 Media
VK_LBUTTON 0x01 Left Button **
VK_LCONTROL 0xA2 Left Ctrl
VK_LEFT 0x25 Arrow Left
VK_LMENU 0xA4 Left Alt
VK_LSHIFT 0xA0 Left Shift
VK_LWIN 0x5B Left Win
VK_MBUTTON 0x04 Middle Button **
VK_MEDIA_NEXT_TRACK 0xB0 Next Track
VK_MEDIA_PLAY_PAUSE 0xB3 Play / Pause
VK_MEDIA_PREV_TRACK 0xB1 Previous Track
VK_MEDIA_STOP 0xB2 Stop
VK_MODECHANGE 0x1F Mode Change
VK_NEXT 0x22 Page Down
VK_NONCONVERT 0x1D Non Convert
VK_NUMLOCK 0x90 Num Lock
VK_OEM_FJ_JISHO 0x92 Jisho
VK_PAUSE 0x13 Pause
VK_PRINT 0x2A Print
VK_PRIOR 0x21 Page Up
VK_RBUTTON 0x02 Right Button **
VK_RCONTROL 0xA3 Right Ctrl
VK_RIGHT 0x27 Arrow Right
VK_RMENU 0xA5 Right Alt
VK_RSHIFT 0xA1 Right Shift
VK_RWIN 0x5C Right Win
VK_SCROLL 0x91 Scrol Lock
VK_SLEEP 0x5F Sleep
VK_SNAPSHOT 0x2C Print Screen
VK_UP 0x26 Arrow Up
VK_VOLUME_DOWN 0xAE Volume Down
VK_VOLUME_MUTE 0xAD Volume Mute
VK_VOLUME_UP 0xAF Volume Up
VK_XBUTTON1 0x05 X Button 1 **
VK_XBUTTON2 0x06 X Button 2 **
[/php]

So If I am Correct , Your code should look like this

[php]
[DllImport("user32.dll", SetLastError = true)]
public static extern bool RegisterHotKey(

IntPtr hWnd,
int id,
KeyModifiers fsModifiers,
Keys vk
);
[DllImport("user32.dll", SetLastError = true)]
public static extern bool UnregisterHotKey(
IntPtr hWnd,
int id);
// Changed this
const int WM_HOTKEY = 0x0312;

protected override void WndProc(ref Message message)
{
if (message.Msg == F11)
{
timer1.Enabled = true;
}
// added this
if (message.Msg == F12)
{
timer1.Enabled = False;
}



base.WndProc(ref message);
}


public enum KeyModifiers //enum to call 3rd parameter of RegisterHotKey easily
{
None = 0,
Alt = 1,
Control = 2,
Shift = 4,
Windows = 8
}
[/php]


OK thanks...this has helped me greatly..but f12 and f11 arn't called ill try and fix
I VM(ed) you some tutorials on working with Global hot keys in C#, Plus threw in a tutorial on Low Level Keyboard Hooks which should help as well.

Anything else , let me know
Next shouldn't have to look stuff up for you. :l

I always just use GetASyncKeyState() and just plugin the proper keycode. Saves a lot of time. You can call it within C# by importing it:
Code:
[DllImport("user32.dll", CharSet=CharSet.Auto, ExactSpelling=true)]
public static extern short GetAsyncKeyState(int vkey);
To be honest though I know they way java works and there is probably a much simpler way. Also you really need to learn how to use Google & MSDN How to trap keystrokes in controls by using Visual C# ... cuz damn.
The good thing is I understand the basic concept of C# because in design and layout it is identical to vb.net , and CSS and some PHP knowledge helps alot.

I am learning Objective C, because I am developing Iphone Apps, and typically I do it with CSS, Java and Html, but I really want to do it in it's native language, so this is good practice.

I wasn't aware. Are C# and Objective-C much alike? All I know is Obj-C is used for all of Apple's stuff.
Objective-C

[php]
MyType *myType = [[MyType alloc] init];
[myType myTypeInstanceMethod:10];
[/php]

C#
[php]
MyType myType = new MyType();
myType.myTypeInstanceMethod(10);
[/php]

Obviously not the same, yet similar enough, not that I need Object C for Iphone applications, You can run a stand alone application built in HTML/CSS/Java or even Flash (not that that's really a good idea, the flash part) and with Html,css,java you can still access every feature of the Iphone/Ipod/Ipad,(Yay WebKit) but it just feels "Cheap" to me, like i should just do it in Objective C,
Objective C looks ugly o__O
Quote Originally Posted by Retoxified View Post
Objective C looks ugly o__O
Makes me thing about VBFags's script D=
obj-C = too many brackets.
Posts 1–14 of 14 · Page 1 of 1
This thread is closed for replies.

Similar Threads

Tags for this Thread

None

Talk with us