1 namespace Core.WinAPI 2 { 3 /// <summary> 4 /// wMsg參數常量值: 5 /// </summary> 6 public static class Message 7 { 8 /// <summary> 9 /// WM_KEYDOWN 按下一個鍵 10 /// </summary> 11 public static int WM_KEYDOWN = 0x0100; 12 13 /// <summary> 14 /// 釋放一個鍵 15 /// </summary> 16 public static int WM_KEYUP = 0x0101; 17 18 /// <summary> 19 /// 按下某鍵,並已發出WM_KEYDOWN, WM_KEYUP消息 20 /// </summary> 21 public static int WM_CHAR = 0x102; 22 23 /// <summary> 24 /// 當用translatemessage函數翻譯WM_KEYUP消息時發送此消息給擁有焦點的窗口 25 /// </summary> 26 public static int WM_DEADCHAR = 0x103; 27 28 /// <summary> 29 /// 當用戶按住ALT鍵同時按下其它鍵時提交此消息給擁有焦點的窗口 30 /// </summary> 31 public static int WM_SYSKEYDOWN = 0x104; 32 33 /// <summary> 34 /// 當用戶釋放一個鍵同時ALT 鍵還按著時提交此消息給擁有焦點的窗口 35 /// </summary> 36 public static int WM_SYSKEYUP = 0x105; 37 38 /// <summary> 39 /// 當WM_SYSKEYDOWN消息被TRANSLATEMESSAGE函數翻譯後提交此消息給擁有焦點的窗口 40 /// </summary> 41 public static int WM_SYSCHAR = 0x106; 42 43 /// <summary> 44 /// 當WM_SYSKEYDOWN消息被TRANSLATEMESSAGE函數翻譯後發送此消息給擁有焦點的窗口 45 /// </summary> 46 public static int WM_SYSDEADCHAR = 0x107; 47 48 /// <summary> 49 /// 在一個對話框程序被顯示前發送此消息給它,通常用此消息初始化控件和執行其它任務 50 /// </summary> 51 public static int WM_INITDIALOG = 0x110; 52 53 /// <summary> 54 /// 當用戶選擇一條菜單命令項或當某個控件發送一條消息給它的父窗口,一個快捷鍵被翻譯 55 /// </summary> 56 public static int WM_COMMAND = 0x111; 57 58 /// <summary> 59 /// 當用戶選擇窗口菜單的一條命令或//當用戶選擇最大化或最小化時那個窗口會收到此消息 60 /// </summary> 61 public static int WM_SYSCOMMAND = 0x112; 62 63 /// <summary> 64 /// 發生了定時器事件 65 /// </summary> 66 public static int WM_TIMER = 0x113; 67 68 /// <summary> 69 /// 當一個窗口標准水平滾動條產生一個滾動事件時發送此消息給那個窗口,也發送給擁有它的控件 70 /// </summary> 71 public static int WM_HSCROLL = 0x114; 72 73 /// <summary> 74 /// 當一個窗口標准垂直滾動條產生一個滾動事件時發送此消息給那個窗口也,發送給擁有它的控件 75 /// </summary> 76 public static int WM_VSCROLL = 0x115; 77 78 /// <summary> 79 /// 當一個菜單將要被激活時發送此消息,它發生在用戶菜單條中的某項或按下某個菜單鍵,它允許程序在顯示前更改菜單 80 /// </summary> 81 public static int WM_INITMENU = 0x116; 82 83 /// <summary> 84 /// 當一個下拉菜單或子菜單將要被激活時發送此消息,它允許程序在它顯示前更改菜單,而不要改變全部 85 /// </summary> 86 public static int WM_INITMENUPOPUP = 0x117; 87 88 /// <summary> 89 /// 當用戶選擇一條菜單項時發送此消息給菜單的所有者(一般是窗口) 90 /// </summary> 91 public static int WM_MENUSELECT = 0x11F; 92 93 /// <summary> 94 /// 當菜單已被激活用戶按下了某個鍵(不同於加速鍵),發送此消息給菜單的所有者 95 /// </summary> 96 public static int WM_MENUCHAR = 0x120; 97 98 /// <summary> 99 /// 當一個模態對話框或菜單進入空載狀態時發送此消息給它的所有者,一個模態對話框或菜單進入空載狀態 100 /// 就是在處理完一條或幾條先前的消息後沒有消息它的列隊中等待 101 /// </summary> 102 public static int WM_ENTERIDLE = 0x121; 103 104 /// <summary> 105 /// 在windows繪制消息框前發送此消息給消息框的所有者窗口,通過響應這條消息,所有者窗口可以通過使用給定的相關顯示設備的句柄來設置消息框的文本和背景顏色 106 /// </summary> 107 public static int WM_CTLCOLORMSGBOX = 0x132; 108 109 /// <summary> 110 /// 當一個編輯型控件將要被繪制時發送此消息給它的父窗口通過響應這條消息,所有者窗口可以通過使用給定的相關顯示設備的句柄來設置編輯框的文本和背景顏色 111 /// </summary> 112 public static int WM_CTLCOLOREDIT = 0x133; 113 114 /// <summary> 115 /// 當一個列表框控件將要被繪制前發送此消息給它的父窗口通過響應這條消息,所有者窗口可以通過使用給定的相關顯示設備的句柄來設置列表框的文本和背景顏色 116 /// </summary> 117 public static int WM_CTLCOLORLISTBOX = 0x134; 118 119 /// <summary> 120 /// 當一個按鈕控件將要被繪制時發送此消息給它的父窗口通過響應這條消息,所有者窗口可以通過使用給定的相關顯示設備的句柄來設置按紐的文本和背景顏色 121 /// </summary> 122 public static int WM_CTLCOLORBTN = 0x135; 123 124 /// <summary> 125 /// 當一個對話框控件將要被繪制前發送此消息給它的父窗口通過響應這條消息,所有者窗口可以通過使用給定的相關顯示設備的句柄來設置對話框的文本背景顏色 126 /// </summary> 127 public static int WM_CTLCOLORDLG = 0x136; 128 129 /// <summary> 130 /// 當一個滾動條控件將要被繪制時發送此消息給它的父窗口通過響應這條消息,所有者窗口可以通過使用給定的相關顯示設備的句柄來設置滾動條的背景顏色 131 /// </summary> 132 public static int WM_CTLCOLORSCROLLBAR = 0x137; 133 134 /// <summary> 135 /// 當一個靜態控件將要被繪制時發送此消息給它的父窗口通過響應這條消息,所有者窗口可以 通過使用給定的相關顯示設備的句柄來設置靜態控件的文本和背景顏色 136 /// </summary> 137 public static int WM_CTLCOLORSTATIC = 0x138; 138 139 /// <summary> 140 /// 當鼠標輪子轉動時發送此消息個當前有焦點的控件 141 /// </summary> 142 public static int WM_MOUSEWHEEL = 0x20A; 143 144 /// <summary> 145 /// 雙擊鼠標中鍵 146 /// </summary> 147 public static int WM_MBUTTONDBLCLK = 0x209; 148 149 /// <summary> 150 /// 釋放鼠標中鍵 151 /// </summary> 152 public static int WM_MBUTTONUP = 0x208; 153 154 /// <summary> 155 /// .移動鼠標時發生,同WM_MOUSEFIRST 156 /// </summary> 157 public static int WM_MOUSEMOVE = 0x200; 158 159 /// <summary> 160 /// 按下鼠標左鍵 161 /// </summary> 162 public static int WM_LBUTTONDOWN = 0x201; 163 164 /// <summary> 165 /// 釋放鼠標左鍵 166 /// </summary> 167 public static int WM_LBUTTONUP = 0x202; 168 169 /// <summary> 170 /// 雙擊鼠標左鍵 171 /// </summary> 172 public static int WM_LBUTTONDBLCLK = 0x203; 173 174 /// <summary> 175 /// 按下鼠標右鍵 176 /// </summary> 177 public static int WM_RBUTTONDOWN = 0x204; 178 179 /// <summary> 180 /// 釋放鼠標右鍵 181 /// </summary> 182 public static int WM_RBUTTONUP = 0x205; 183 184 /// <summary> 185 /// 雙擊鼠標右鍵 186 /// </summary> 187 public static int WM_RBUTTONDBLCLK = 0x206; 188 189 //按下鼠標中鍵 190 public static int WM_MBUTTONDOWN = 0x207; 191 192 public static int WM_USER = 0x0400; 193 194 public static int MK_LBUTTON = 0x0001; 195 196 public static int MK_RBUTTON = 0x0002; 197 198 public static int MK_SHIFT = 0x0004; 199 200 public static int MK_CONTROL = 0x0008; 201 202 public static int MK_MBUTTON = 0x0010; 203 204 public static int MK_XBUTTON1 = 0x0020; 205 206 public static int MK_XBUTTON2 = 0x0040; 207 208 /// <summary> 209 /// 創建一個窗口 210 /// </summary> 211 public static int WM_CREATE = 0x01; 212 213 /// <summary> 214 /// 當一個窗口被破壞時發送 215 /// </summary> 216 public static int WM_DESTROY = 0x02; 217 218 /// <summary> 219 /// 移動一個窗口 220 /// </summary> 221 public static int WM_MOVE = 0x03; 222 223 /// <summary> 224 /// 改變一個窗口的大小 225 /// </summary> 226 public static int WM_SIZE = 0x05; 227 228 /// <summary> 229 /// 一個窗口被激活或失去激活狀態 230 /// </summary> 231 public static int WM_ACTIVATE = 0x06; 232 233 /// <summary> 234 /// 一個窗口獲得焦點 235 /// </summary> 236 public static int WM_SETFOCUS = 0x07; 237 238 /// <summary> 239 /// 一個窗口失去焦點 240 /// </summary> 241 public static int WM_KILLFOCUS = 0x08; 242 243 /// <summary> 244 /// 一個窗口改變成Enable狀態 245 /// </summary> 246 public static int WM_ENABLE = 0x0A; 247 248 /// <summary> 249 /// 設置窗口是否能重畫 250 /// </summary> 251 public static int WM_SETREDRAW = 0x0B; 252 253 /// <summary> 254 /// 應用程序發送此消息來設置一個窗口的文本 255 /// </summary> 256 public static int WM_SETTEXT = 0x0C; 257 258 /// <summary> 259 /// 應用程序發送此消息來復制對應窗口的文本到緩沖區 260 /// </summary> 261 public static int WM_GETTEXT = 0x0D; 262 263 /// <summary> 264 /// 得到與一個窗口有關的文本的長度(不包含空字符) 265 /// </summary> 266 public static int WM_GETTEXTLENGTH = 0x0E; 267 268 /// <summary> 269 /// 要求一個窗口重畫自己 270 /// </summary> 271 public static int WM_PAINT = 0x0F; 272 273 /// <summary> 274 /// 當一個窗口或應用程序要關閉時發送一個信號 275 /// </summary> 276 public static int WM_CLOSE = 0x10; 277 278 /// <summary> 279 /// 當用戶選擇結束對話框或程序自己調用ExitWindows函數 280 /// </summary> 281 public static int WM_QUERYENDSESSION = 0x11; 282 283 /// <summary> 284 /// 用來結束程序運行 285 /// </summary> 286 public static int WM_QUIT = 0x12; 287 288 /// <summary> 289 /// 當用戶窗口恢復以前的大小位置時,把此消息發送給某個圖標 290 /// </summary> 291 public static int WM_QUERYOPEN = 0x13; 292 293 /// <summary> 294 /// 當窗口背景必須被擦除時(例在窗口改變大小時) 295 /// </summary> 296 public static int WM_ERASEBKGND = 0x14; 297 298 /// <summary> 299 /// 當系統顏色改變時,發送此消息給所有頂級窗口 300 /// </summary> 301 public static int WM_SYSCOLORCHANGE = 0x15; 302 303 /// <summary> 304 /// 當系統進程發出WM_QUERYENDSESSION消息後,此消息發送給應用程序,通知它對話是否結束 305 /// </summary> 306 public static int WM_ENDSESSION = 0x16; 307 308 /// <summary> 309 /// 當隱藏或顯示窗口是發送此消息給這個窗口 310 /// </summary> 311 public static int WM_SHOWWINDOW = 0x18; 312 313 /// <summary> 314 /// 發此消息給應用程序哪個窗口是激活的,哪個是非激活的 315 /// </summary> 316 public static int WM_ACTIVATEAPP = 0x1C; 317 318 /// <summary> 319 /// 當系統的字體資源庫變化時發送此消息給所有頂級窗口 320 /// </summary> 321 public static int WM_FONTCHANGE = 0x1D; 322 323 /// <summary> 324 /// 當系統的時間變化時發送此消息給所有頂級窗口 325 /// </summary> 326 public static int WM_TIMECHANGE = 0x1E; 327 328 /// <summary> 329 /// 發送此消息來取消某種正在進行的摸態(操作) 330 /// </summary> 331 public static int WM_CANCELMODE = 0x1F; 332 333 /// <summary> 334 /// 如果鼠標引起光標在某個窗口中移動且鼠標輸入沒有被捕獲時,就發消息給某個窗口 335 /// </summary> 336 public static int WM_SETCURSOR = 0x20; 337 338 /// <summary> 339 /// 當光標在某個非激活的窗口中而用戶正按著鼠標的某個鍵發送此消息給//當前窗口 340 /// </summary> 341 public static int WM_MOUSEACTIVATE = 0x21; 342 343 /// <summary> 344 /// 發送此消息給MDI子窗口//當用戶點擊此窗口的標題欄,或//當窗口被激活,移動,改變大小 345 /// </summary> 346 public static int WM_CHILDACTIVATE = 0x22; 347 348 /// <summary> 349 /// 此消息由基於計算機的訓練程序發送,通過WH_JOURNALPALYBACK的hook程序分離出用戶輸入消息 350 /// </summary> 351 public static int WM_QUEUESYNC = 0x23; 352 353 /// <summary> 354 /// 此消息發送給窗口當它將要改變大小或位置 355 /// </summary> 356 public static int WM_GETMINMAXINFO = 0x24; 357 358 /// <summary> 359 /// 發送給最小化窗口當它圖標將要被重畫 360 /// </summary> 361 public static int WM_PAINTICON = 0x26; 362 363 /// <summary> 364 /// 此消息發送給某個最小化窗口,僅//當它在畫圖標前它的背景必須被重畫 365 /// </summary> 366 public static int WM_ICONERASEBKGND = 0x27; 367 368 /// <summary> 369 /// 發送此消息給一個對話框程序去更改焦點位置 370 /// </summary> 371 public static int WM_NEXTDLGCTL = 0x28; 372 373 /// <summary> 374 /// 每當打印管理列隊增加或減少一條作業時發出此消息 375 /// </summary> 376 public static int WM_SPOOLERSTATUS = 0x2A; 377 378 /// <summary> 379 /// 當button,combobox,listbox,menu的可視外觀改變時發送 380 /// </summary> 381 public static int WM_DRAWITEM = 0x2B; 382 383 /// <summary> 384 /// 當button, combo box, list box, list view control, or menu item 被創建時 385 /// </summary> 386 public static int WM_MEASUREITEM = 0x2C; 387 388 /// <summary> 389 /// 此消息有一個LBS_WANTKEYBOARDINPUT風格的發出給它的所有者來響應WM_KEYDOWN消息 390 /// </summary> 391 public static int WM_VKEYTOITEM = 0x2E; 392 393 /// <summary> 394 /// 此消息由一個LBS_WANTKEYBOARDINPUT風格的列表框發送給他的所有者來響應WM_CHAR消息 395 /// </summary> 396 public static int WM_CHARTOITEM = 0x2F; 397 398 /// <summary> 399 /// 當繪制文本時程序發送此消息得到控件要用的顏色 400 /// </summary> 401 public static int WM_SETFONT = 0x30; 402 403 /// <summary> 404 /// 應用程序發送此消息得到當前控件繪制文本的字體 405 /// </summary> 406 public static int WM_GETFONT = 0x31; 407 408 /// <summary> 409 /// 應用程序發送此消息讓一個窗口與一個熱鍵相關連 410 /// </summary> 411 public static int WM_SETHOTKEY = 0x32; 412 413 /// <summary> 414 /// 應用程序發送此消息來判斷熱鍵與某個窗口是否有關聯 415 /// </summary> 416 public static int WM_GETHOTKEY = 0x33; 417 418 /// <summary> 419 /// 此消息發送給最小化窗口,當此窗口將要被拖放而它的類中沒有定義圖標,應用程序能返回一個圖標或光標的句柄,當用戶拖放圖標時系統顯示這個圖標或光標 420 /// </summary> 421 public static int WM_QUERYDRAGICON = 0x37; 422 423 /// <summary> 424 /// 發送此消息來判定combobox或listbox新增加的項的相對位置 425 /// </summary> 426 public static int WM_COMPAREITEM = 0x39; 427 428 /// <summary> 429 /// 顯示內存已經很少了 430 /// </summary> 431 public static int WM_COMPACTING = 0x41; 432 433 /// <summary> 434 /// 發送此消息給那個窗口的大小和位置將要被改變時,來調用setwindowpos函數或其它窗口管理函數 435 /// </summary> 436 public static int WM_WINDOWPOSCHANGING = 0x46; 437 438 /// <summary> 439 /// 發送此消息給那個窗口的大小和位置已經被改變時,來調用setwindowpos函數或其它窗口管理函數 440 /// </summary> 441 public static int WM_WINDOWPOSCHANGED = 0x47; 442 443 /// <summary> 444 /// 當系統將要進入暫停狀態時發送此消息 445 /// </summary> 446 public static int WM_POWER = 0x48; 447 448 /// <summary> 449 /// 當一個應用程序傳遞數據給另一個應用程序時發送此消息 450 /// </summary> 451 public static int WM_COPYDATA = 0x4A; 452 453 /// <summary> 454 /// 當某個用戶取消程序日志激活狀態,提交此消息給程序 455 /// </summary> 456 public static int WM_CANCELJOURNA = 0x4B; 457 458 /// <summary> 459 /// 當某個控件的某個事件已經發生或這個控件需要得到一些信息時,發送此消息給它的父窗口 460 /// </summary> 461 public static int WM_NOTIFY = 0x4E; 462 463 /// <summary> 464 /// 當用戶選擇某種輸入語言,或輸入語言的熱鍵改變 465 /// </summary> 466 public static int WM_INPUTLANGCHANGEREQUEST = 0x50; 467 468 /// <summary> 469 /// 當平台現場已經被改變後發送此消息給受影響的最頂級窗口 470 /// </summary> 471 public static int WM_INPUTLANGCHANGE = 0x51; 472 473 /// <summary> 474 /// 當程序已經初始化windows幫助例程時發送此消息給應用程序 475 /// </summary> 476 public static int WM_TCARD = 0x52; 477 478 /// <summary> 479 /// 此消息顯示用戶按下了F1,如果某個菜單是激活的,就發送此消息個此窗口關聯的菜單,否則就發送給有焦點的窗口,如果//當前都沒有焦點,就把此消息發送給//當前激活的窗口 480 /// </summary> 481 public static int WM_HELP = 0x53; 482 483 /// <summary> 484 /// 當用戶已經登入或退出後發送此消息給所有的窗口,//當用戶登入或退出時系統更新用戶的具體設置信息,在用戶更新設置時系統馬上發送此消息 485 /// </summary> 486 public static int WM_USERCHANGED = 0x54; 487 488 /// <summary> 489 /// 公用控件,自定義控件和他們的父窗口通過此消息來判斷控件是使用ANSI還是UNICODE結構 490 /// </summary> 491 public static int WM_NOTIFYFORMAT = 0x55; 492 493 /// <summary> 494 /// 當用戶某個窗口中點擊了一下右鍵就發送此消息給這個窗口 495 /// </summary> 496 //public static int WM_CONTEXTMENU = ??; 497 498 /// <summary> 499 /// 當調用SETWINDOWLONG函數將要改變一個或多個 窗口的風格時發送此消息給那個窗口 500 /// </summary> 501 public static int WM_STYLECHANGING = 0x7C; 502 503 /// <summary> 504 /// 當調用SETWINDOWLONG函數一個或多個 窗口的風格後發送此消息給那個窗口 505 /// </summary> 506 public static int WM_STYLECHANGED = 0x7D; 507 508 /// <summary> 509 /// 當顯示器的分辨率改變後發送此消息給所有的窗口 510 /// </summary> 511 public static int WM_DISPLAYCHANGE = 0x7E; 512 513 /// <summary> 514 /// 此消息發送給某個窗口來返回與某個窗口有關連的大圖標或小圖標的句柄 515 /// </summary> 516 public static int WM_GETICON = 0x7F; 517 518 519 //窗口關聯 520 /// <summary> 521 /// 程序發送此消息讓一個新的大圖標或小圖標與某個 522 /// </summary> 523 public static int WM_SETICON = 0x80; 524 525 /// <summary> 526 /// 當某個窗口第一次被創建時,此消息在WM_CREATE消息發送前發送 527 /// </summary> 528 public static int WM_NCCREATE = 0x81; 529 530 /// <summary> 531 /// 此消息通知某個窗口,非客戶區正在銷毀 532 /// </summary> 533 public static int WM_NCDESTROY = 0x82; 534 535 /// <summary> 536 /// 當某個窗口的客戶區域必須被核算時發送此消息 537 /// </summary> 538 public static int WM_NCCALCSIZE = 0x83; 539 540 /// <summary> 541 /// 移動鼠標,按住或釋放鼠標時發生 542 /// </summary> 543 public static int WM_NCHITTEST = 0x84; 544 545 /// <summary> 546 /// 程序發送此消息給某個窗口當它(窗口)的框架必須被繪制時 547 /// </summary> 548 public static int WM_NCPAINT = 0x85; 549 550 /// <summary> 551 /// 此消息發送給某個窗口僅當它的非客戶區需要被改變來顯示是激活還是非激活狀態 552 /// </summary> 553 public static int WM_NCACTIVATE = 0x86; 554 555 /// <summary> 556 /// 發送此消息給某個與對話框程序關聯的控件,widdows控制方位鍵和TAB鍵使輸入進入此控件通過應 557 /// </summary> 558 public static int WM_GETDLGCODE = 0x87; 559 560 /// <summary> 561 /// 當光標在一個窗口的非客戶區內移動時發送此消息給這個窗口 非客戶區為:窗體的標題欄及窗 的邊框體 562 /// </summary> 563 public static int WM_NCMOUSEMOVE = 0xA0; 564 565 /// <summary> 566 /// 當光標在一個窗口的非客戶區同時按下鼠標左鍵時提交此消息 567 /// </summary> 568 public static int WM_NCLBUTTONDOWN = 0xA1; 569 570 /// <summary> 571 /// 當用戶釋放鼠標左鍵同時光標某個窗口在非客戶區十發送此消息 572 /// </summary> 573 public static int WM_NCLBUTTONUP = 0xA2; 574 575 /// <summary> 576 /// 當用戶雙擊鼠標左鍵同時光標某個窗口在非客戶區十發送此消息 577 /// </summary> 578 public static int WM_NCLBUTTONDBLCLK = 0xA3; 579 580 /// <summary> 581 /// 當用戶按下鼠標右鍵同時光標又在窗口的非客戶區時發送此消息 582 /// </summary> 583 public static int WM_NCRBUTTONDOWN = 0xA4; 584 585 /// <summary> 586 /// 當用戶釋放鼠標右鍵同時光標又在窗口的非客戶區時發送此消息 587 /// </summary> 588 public static int WM_NCRBUTTONUP = 0xA5; 589 590 /// <summary> 591 /// 當用戶雙擊鼠標右鍵同時光標某個窗口在非客戶區十發送此消息 592 /// </summary> 593 public static int WM_NCRBUTTONDBLCLK = 0xA6; 594 595 /// <summary> 596 /// 當用戶按下鼠標中鍵同時光標又在窗口的非客戶區時發送此消息 597 /// </summary> 598 public static int WM_NCMBUTTONDOWN = 0xA7; 599 600 /// <summary> 601 /// 當用戶釋放鼠標中鍵同時光標又在窗口的非客戶區時發送此消息 602 /// </summary> 603 public static int WM_NCMBUTTONUP = 0xA8; 604 605 /// <summary> 606 /// 當用戶雙擊鼠標中鍵同時光標又在窗口的非客戶區時發送此消息 607 /// </summary> 608 public static int WM_NCMBUTTONDBLCLK = 0xA9; 609 610 [DllImport("user32.dll")] 611 public static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam); 612 613 //此處主要用來讓窗口置於最前(SetWindowPos(this.Handle,-1,0,0,0,0,0x4000|0x0001|0x0002);) 614 [System.Runtime.InteropServices.DllImport("user32.dll")] 615 public static extern bool SetWindowPos(IntPtr hWnd, int hWndInsertAfter, int X, int Y, int cx, int cy, int uFlags); 616 } 617 }