ÇëÓÃChildWindowFromPointº¯Êý¡£
=========== »ñÈ¡ÆÁÄ»ÉÏij¸ö´°¿ÚÄÚijµãµÄÑÕɫֵ£º GetPixelº¯Êý ¸Ãº¯ÊýÔÚÖ¸¶¨É豸³¡¾°ÖÐÈ¡µÃ1¸öÏóËØµÄÑÕÉ«RGBÖµ¡£ ÉùÃ÷£º
Public Declare Function GetPixel Lib \hdc As Long, ByVal x As Long, ByVal y As Long) As Long ²ÎÊý£º
hDC--Ö¸¶¨Ò»¸öÉ豸³¡¾°£¨¼´ÏÔʾÉ豸ÃèÊö±í£©µÄ¾ä±ú¡£
x,y--ijµãÔÚ¸ÃÉ豸³¡¾°ÖеÄ(x,y)×ø±ê¡£ÒÔ¸ÃÉ豸³¡¾°µÄ×ø±êϵͳÀ´¶ÈÁ¿¡£ µ÷ÓÃÈ磺 ??
hDC=GetDC(hwnd)
lxn=GetPixel(hDC,50,50) Picture1.BackColor=lxn
×¢£ºÖ¸¶¨µÄµã²»ÄÜλÓÚÉ豸³¡¾°µÄÇøÓòÍâ¡£ÈçÉÏÀý£¨50£¬50£©ÔÚhDCËùÊô´°¿ÚÇøÓòÄÚ ====
EnableWindowº¯Êý£ºÈô°¿Ú¾Ü¾ø½ÓÊÜÊó±êºÍ¼üÅÌʼþ
ʹÓô˺¯Êý£¬¿ÉÒÔÈÃ1¸ö´°¿Ú²»ÏìÓ¦ÈκÎÊó±ê¼üÅ̲Ù×÷¡£Èç¹ûÊÇVBÄÚ²¿µÄ´°Ìå»ò¿Ø¼þ£¬ÔòÏ൱ÓÚËüµÄEnabledÊôÐÔ¡£ ÉùÃ÷£º
Private Declare Function EnableWindow Lib \As Long) As Long
µ÷ÓÃÈ磺 Call EnableWindow(Form1.hwnd, 0)Ϊ¾Ü¾ø½ÓÊÜÊó±êºÍ¼üÅÌʼþ£¬ µ÷ÓÃÈ磺 Call EnableWindow(Form1.hwnd, 1)ΪÔÊÐí½ÓÊܼüÅ̺ÍÊó±êʼþ¡£
²ÎÊý£ºhwnd²»ÓÃ˵£¬¾ÍÊÇÒ»¸ö´°¿Ú¾ä±ú£¬fEnable²ÎÊý£º´°¿ÚÊÇ·ñÏìÓ¦²Ù×÷¡£ÎªÁã½ûÖ¹²Ù×÷´°¿Ú£¬·ÇÁãÔÊÐí²Ù×÷´°¿Ú¡£ =====
ShowWindowº¯Êý£ºÏÔʾ»òÒþ²ØÖ¸¶¨¾ä±úµÄ´°¿Ú
½«1¸öÒþ²ØµÄ´°¿ÚÏÔʾ³öÀ´£¬ÓÐÒâ˼£¬Ï൱ÓÚVB×ÔÉíÄÚ²¿¿Ø¼þµÄvisibleÊôÐÔ¡£¶øÇÒ³¬Ô½ÓÚ´Ë£¬Ëü»¹ÄÜÖ¸¶¨ÏÔʾʱÊÇ·ñ×î´ó»¯£¬×îС»¯µÈ£¬ÉùÃ÷ÈçÏ£º
Public Declare Function ShowWindow Lib \As Long) As Long µ÷ÓÃÈ磺
Const SW_HIDE = 0 ²ÎÊýnCmdShowÖ®Ò»£¬Òþ²Ø´°¿Ú Const SW_SHOW = 5 ÏÔʾ´°¿Ú
i = ShowWindow(form1.hwnd, SW_HIDE) ²ÎÊý£º
hwnd£º Long£¬´°¿Ú¾ä±ú£¬ÒªÏòÕâ¸ö´°¿ÚÓ¦ÓÃÓÉnCmdShowÖ¸¶¨µÄÃüÁî
nCmdShow£º Long£¬Îª´°¿ÚÖ¸¶¨ÏÔʾ»òÒþ²ØµÄÒ»¸öÃüÁî¡£ÇëÓÃÏÂÊöÈκÎÒ»¸ö³£Êý SW_HIDE Òþ²Ø´°¿Ú£¬»î¶¯×´Ì¬¸øÁîÒ»¸ö´°¿Ú SW_MINIMIZE ×îС»¯´°¿Ú£¬»î¶¯×´Ì¬¸øÁîÒ»¸ö´°¿Ú
SW_RESTORE ÓÃÔÀ´µÄ´óСºÍλÖÃÏÔʾһ¸ö´°¿Ú£¬Í¬Ê±ÁîÆä½øÈë»î¶¯×´Ì¬ SW_SHOW=5 Óõ±Ç°µÄ´óСºÍλÖÃÏÔʾһ¸ö´°¿Ú£¬Í¬Ê±ÁîÆä½øÈë»î¶¯×´Ì¬ SW_SHOWMAXIMIZED=3 ×î´ó»¯´°¿Ú£¬²¢½«Æä¼¤»î
SW_SHOWMINIMIZED=2 ×îС»¯´°¿Ú£¬²¢½«Æä¼¤»î SW_SHOWDEFAULT=10 °´´°¿Ú±¾À´µÄ·½Ê½ÏÔʾ£¬²¢¼¤»î¡£ SW_SHOWMINNOACTIVE ×îС»¯Ò»¸ö´°¿Ú£¬Í¬Ê±²»¸Ä±ä»î¶¯´°¿Ú SW_SHOWNA Óõ±Ç°µÄ´óСºÍλÖÃÏÔʾһ¸ö´°¿Ú£¬²»¸Ä±ä»î¶¯´°¿Ú
SW_SHOWNOACTIVATE ÓÃ×î½üµÄ´óСºÍλÖÃÏÔʾһ¸ö´°¿Ú£¬Í¬Ê±²»¸Ä±ä»î¶¯´°¿Ú SW_SHOWNORMAL ÓëSW_RESTOREÏàͬ
×¢£º¸÷³£ÊýµÄÖµÇë²éÔÄAPIä¯ÀÀÆ÷ÖеÄconstants(³£ÊýÁбí)¡£ ======
¹Ø±ÕÖ¸¶¨¾ä±úµÄ´°¿Ú£ºSendMessageAµÄWM_CLOSEÏûÏ¢
SendMessageAµÄÉùÃ÷ÔÚÇ°ÃæÓУ¬ÏûÏ¢WM_CLOSEµÄֵΪ&H10,ºóÁ½¸ö²ÎÊýΪ¿Õ£¬ÓÃ0&¡£º¯Êý·µ»ØÖµÈôΪ0±íʾ³ÌÐò´¦ÀíÁË´ËÏûÏ¢¡£µ÷ÓÃÈçÏ£º
Private Declare Function SendMessage Lib \Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long Const WM_CLOSE = &H10 Private Sub Command1_Click()
SendMessage Form1.hwnd, WM_CLOSE, 0&, 0& End Sub
»¹ÓÐÒ»¸öÇ¿ÖÆ´ÓÄÚ´æÖÐÇå³ý´°¿ÚµÄº¯Êý£ºDestroyWindowº¯Êý
Æä¹¦ÄÜÊÇÖ±½ÓÇå³ýµôÄÚ´æÖеÄ1¸ö´°¿Ú£¬·µ»Ø·Ç0±íʾ³É¹¦£¬·µ»Ø0±íʾʧ°Ü¡£ÉùÃ÷£º Public Declare Function DestroyWindow Lib \£© ºÜ¼òµ¥£¬²ÎÊýÖ»ÊÇÖ¸¶¨1¸ö´°¿Ú¾ä±ú¡£µ÷ÓÃÈ磺DestroyWindow Form1.hwnd¡£ =====
ѰÕÒ´°¿ÚÁбíÖеÚÒ»¸ö·ûºÏÌõ¼þµÄ¸¸´°¿Ú£º FindWindowAº¯Êý
Declare Function FindWindow Lib \String, ByVal lpWindowName As String) As Long
º¯Êý·µ»ØÕÒµ½µÄ´°¿ÚµÄ¾ä±ú¡£±ÈÈçÒª²éÕÒ±êÌâΪ\δÃüÃû-¼Çʱ¾\µÄ´°¿Ú¾ä±ú£º
hWndTmp = FindWindowA(vbNullString,\δÃüÃû-¼Çʱ¾\¶þ¸ö²ÎÊý¾ùΪ×Ö·û´®£¬Èç¹ûij¸öΪ¿Õ£¬ÔòÓÃvbNullString»ò0&²¹ÉÏ¡£ ²ÎÊý£º
lpClassName£ºÄ³´°¿ÚÀàÃû£¬»òÉèΪÁã»òvbNullString£¬±íʾ½ÓÊÕÈκÎÀà
lpWindowName£ºÄ³´°¿Ú±êÌ⣬»òÉèΪÁã»òvbNullString£¬±íʾ½ÓÊÕÈκδ°¿Ú±êÌâ ¡£ ¸Ãº¯Êý³£ÓÃÀ´²éÕÒThunderRTMain´°¿ÚÀàµÄÒþ²Ø´°¿ÚµÄ¾ä±ú¡£ÀýÈ磺 Dim hw&, cnt&
Dim rttitle As String * 256
hw& = FindWindowA(\cnt = GetWindowText(hw&, rttitle, 255)
MsgBox Left$(rttitle, cnt), 0, \=====
¸ù¾Ý1¸ö´°¿Ú¾ä±ú·µ»ØÁí1¸öÏà¹Ø´°¿Ú¾ä±ú £ºGetWindowº¯Êý
´«ÈëÒ»¸öÔ´´°¿Ú¾ä±ú£¬·µ»ØÁí1¸öÓëÖ®ÓйصĴ°¿Ú¾ä±ú£¬ÈçÔ´´°¿ÚµÄÏÂ1¸öÐֵܴ°¿Ú£¬µÚ1¸ö×Ó´°¿ÚµÈ¡£ÉùÃ÷£º
Declare Function GetWindow Lib \hwnd As Long, ByVal wCmd As Long) As Long µ÷ÓÃÈ磺
Const GW_HWNDNEXT = 2
hWndlxn = GetWindow(hWndTmp, GW_HWNDNEXT) ²ÎÊý£ºhwnd£ºÔ´´°¿Ú¾ä±ú¡£
wCmd²ÎÊý£ºÖ¸¶¨½á¹û´°¿ÚÓëÔ´´°¿ÚµÄ¹ØÏµ£¬ËüÃǽ¨Á¢ÔÚÏÂÊö³£Êý»ù´¡ÉÏ£º GW_CHILD ѰÕÒÔ´´°¿ÚµÄµÚÒ»¸ö×Ó´°¿Ú
GW_HWNDFIRST Ϊһ¸öÔ´×Ó´°¿ÚѰÕÒµÚÒ»¸öÐֵܣ¨Í¬¼¶£©´°¿Ú£¬»òѰÕÒµÚÒ»¸ö¶¥¼¶´°¿Ú GW_HWNDLAST Ϊһ¸öÔ´×Ó´°¿ÚѰÕÒ×îºóÒ»¸öÐֵܣ¨Í¬¼¶£©´°¿Ú£¬»òѰÕÒ×îºóÒ»¸ö¶¥¼¶´°¿Ú GW_HWNDNEXT ΪԴ´°¿ÚѰÕÒÏÂÒ»¸öÐֵܴ°¿Ú GW_HWNDPREV ΪԴ´°¿ÚѰÕÒǰһ¸öÐֵܴ°¿Ú GW_OWNER ѰÕÒ´°¿ÚµÄËùÓÐÕß ×¢½â
Ðֵܻòͬ¼¶ÊÇÖ¸ÔÚÕû¸ö·Ö¼¶½á¹¹ÖÐλÓÚͬһ¼¶±ðµÄ´°¿Ú¡£Èçij¸ö´°¿ÚÓÐÎå¸ö×Ó´°¿Ú£¬ÄÇÎå¸ö´°¿Ú¾ÍÊÇÐֵܴ°¿Ú¡£¾¡¹ÜGetWindow¿ÉÓÃÓÚö¾Ù´°¿Ú£¬µ«ÌÈÈôÒªÔÚö¾Ù¹ý³ÌÖÐÖØÐ¶¨Î»¡¢´´½¨ºÍÇå³ý´°¿Ú£¬ÄÇôEnumWindowsºÍEnumChildWindows¸üΪ¿É¿¿¡£ =====
GetWindowLongAº¯Êý£º»ñµÃÖ¸¶¨´°¿Úij·½ÃæµÄ½á¹¹ÐÅÏ¢£¨·µ»Ø³¤ÕûÊý£©¡£
ÎÊÌ⣺ʲô½Ð\´°¿ÚµÄ½á¹¹Êý¾ÝÐÅÏ¢\£¿¾ÍÊÇ1¸ö´°¿ÚµÄÖî·½ÃæÇé¿ö°É£¬ÏóÈËÓÐÐÕÃûÐÔ±ðÄêÁäµÈÒ»Ñù£¬´°¿ÚÓÐ\À©Õ¹Ñùʽ£¨°üº¬±êÌâÀ¸£¬ÈçÔÚForm1ÖбíÏÖΪBorderStyleÊôÐÔ£¬ÓбêÌâÀ¸ËõС¡¢ÎÞ±êÌâÀ¸µÈµÄ×éºÏÖµ£©\£¬\Ñùʽ£¨°üº¬¹ö¶¯Ìõ¡¢ÏµÍ³²Ëµ¥¡¢±ß¿òµÈ¿ÉÉèÖã©\£¬\¸¸´°¿Ú\£¬\×Ó´°¿Ú\£¬\´°¿Úº¯Êý\µÈÖî¶à·½Ã棬¼ûÏÂÃænIndex²ÎÊýÖµ¡£ÕâЩ·½ÃæµÄÄÚÈÝ£¨Ã¿1·½ÃæÖ»ÄÜÓÐ1¸öµ±Ç°Öµ£©¾Í¹¹³ÉÁË´°¿ÚµÄ½á¹¹ÐÅÏ¢¡£
¸Ãº¯Êý´Ó¸½¼Ó´°¿ÚÄÚ´æÖзµ»Ø1¸ö³¤ÕûÊýÖµ¡£ ÉùÃ÷£º
Public Declare Function GetWindowLong Lib \As Long, ByVal nIndex As Long) As Long
´Ëº¯ÊýÓÃÀ´»ñȡָ¶¨´°¿ÚµÄij·½Ãæ\½á¹¹Êý¾Ý\ÐÅÏ¢¡£ º¯Êý·µ»ØÖµÓɲÎÊýnIndexÀ´¾ö¶¨Òª·µ»ØÄĸö·½ÃæµÄµ±Ç°Öµ¡£Èô³ö´íÔò·µ»Ø0¡£ µ÷ÓÃÈ磺Const GWL_STYLE = -16 Private Sub Command1_Click()
X = GetWindowLongA(Form1.hwnd, GWL_STYLE) Print X End Sub ²ÎÊý£º
hwnd£º Long£¬Óû»ñÈ¡ÐÅÏ¢µÄ´°¿ÚµÄ¾ä±ú
nIndex£º Long£¬ÓûÈ¡»Ø´Ë´°¿ÚÄÄ·½ÃæµÄÐÅÏ¢£¬¿ÉÒÔÊÇÏÂÊöÈκÎÒ»¸ö³£Êý£º GWL_EXSTYLE À©Õ¹´°¿ÚÑùʽ
£¨¿ÉÄܰüº¬ÓУºWS_EX_TOOLWINDOW=&H80±êÌâÀ¸ËõС¿É±ä´óС£¬Ï൱ÓÚBorderStyle=5; WS_EX_TRANSPARENT=&H20&Òþ²Ø»æÍ¼Çø£¬µ«ÏÔʾÆäÉϵÄ×ӿؼþ¡£ÓÐÒâ˼¡£µÈ£¬±ðµÄÎÒÒ²²»Ì«Çå³þ£¬ºÃÏóҪȥ²éMSDN²Å¿É²éµ½£© GWL_STYLE ´°¿ÚÑùʽ
£¨¿ÉÄÜÖµÓУºWS_VSCROLL=£¿´¹Ö±¹ö¶¯Ìõ£¬WS_HSCROLL=£¿Ë®Æ½¹ö¶¯Ìõ£¬ WS_MAXIMIZEBOX=£¿±êÌâÀ¸ÓÒ±ß×î´ó»¯Å¦£¬WS_MINIMIZEBOX=£¿×îС»¯Å¦µÈµÈ£© GWL_WNDPROC ¸Ã´°¿ÚµÄ´°¿Úº¯ÊýµÄµØÖ· GWL_HINSTANCE ÓµÓд°¿ÚµÄʵÀýµÄ¾ä±ú
GWL_HWNDPARENT ¸Ã´°¿ÚÖ®¸¸µÄ¾ä±ú¡£²»ÒªÓÃSetWindowWordÀ´¸Ä±äÕâ¸öÖµ
GWL_ID ¶Ô»°¿òÖÐÒ»¸ö×Ó´°¿ÚµÄ±êʶ·û GWL_USERDATA º¬ÒåÓÉÓ¦ÓóÌÐò¹æ¶¨ DWL_DLGPROC Õâ¸ö´°¿ÚµÄ¶Ô»°¿òº¯ÊýµØÖ·
DWL_MSGRESULT ÔÚ¶Ô»°¿òº¯ÊýÖд¦ÀíµÄÒ»ÌõÏûÏ¢·µ»ØµÄÖµ DWL_USER º¬ÒåÓÉÓ¦ÓóÌÐò¹æ¶¨ -----
SetWindowLongAº¯Êý£ºÎª´°¿ÚÉèÖô°¿Ú½á¹¹ÐÅÏ¢
³£Óô˺¯ÊýÀ´¶¯Ì¬µØÉèÖô°¿ÚµÄ·ç¸ñ£¨ÈçÑùʽ£¬¹ö¶¯ÌõµÈµÈ£©¡£¼´²»ÔÚÊôÐÔ´°¿ÚÖÐÉèÖ᣶øÔÚAPIÖÐÉèÖᣠÉùÃ÷£º
Public Declare Function SetWindowLong Lib \As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long µ÷ÓÃÈ磺
Public Const WS_EX_TOOLWINDOW = &H80 lStyle = WS_EX_TOOLWINDOW
lRet = SetWindowLongA(Me.hwnd, GWL_EXSTYLE, GetWindowLongA(Me.hwnd, GWL_EXSTYLE) Or lStyle) ×¢£ºÕâÀïÓÐ1¸öOr\»ò\²Ù×÷¡£ÎªºÎÒªÓÃORÄØ£¿ÕâÊÇÒòΪһ¸ö´°¿ÚµÄGWL_EXSTYLE°üº¬Á˶àÏîÉèÖÃÖµµÄºÍ£¨Èçͬʱ¿ÉÄÜÓйö¶¯Ìõ£¬±êÌâÀ¸µÈÖµµÄ×éºÏ£¬ÈçΪ262400£©£¬ÓÃor¾Í¿ÉÖ»¸Ä¶¯Æä²¿·ÖÖµ£¬¶ø±£ÁôÆäËû·½ÃæÔÉèÖò»±ä¡£ ²ÎÊý£º
hwnd Long£¬ÓûÉèÖÃÐÅÏ¢µÄ´°¿ÚµÄ¾ä±ú
nIndex Long£¬Çë²Î¿¼GetWindowLongº¯ÊýµÄnIndex²ÎÊýµÄ˵Ã÷ dwNewLong Long£¬ÓÉnIndexÖ¸¶¨µÄ´°¿ÚÐÅÏ¢µÄÐÂÖµ -------
GetWindowWordº¯Êý£º»ñµÃÖ¸¶¨´°¿ÚµÄ½á¹¹ÐÅÏ¢(·µ»Ø×ÖÖµ£© ¸Ãº¯Êý´Ó¸½¼Ó´°¿ÚÄÚ´æÖзµ»Ø×ÖÖµ¡£ÓëGetWindowLongÏàËÆ¡£ ÉùÃ÷£º
Declare Function GetWindowWord Lib \Alias \As Long, ByVal nIndex As Long) As Integer µ÷ÓÃÈ磺
Const GWL_HWNDPARENT = -8
parent = GetWindowWord(Form1.hwnd, GWL_HWNDPARENT)
ÕâÀïµ÷Óúóparent·µ»ØForm1µÄÉÏÒ»¼¶¸¸´°¿ÚµÄ¾ä±ú¡£ÔÙÀýÈçcommand1ÔÚform1ÖУ¬ x=GetWindowWord(command1.hwnd,GWL_HWNDPARENT)·µ»ØµÄx¾ÍµÈÓÚform1.hwnd. ²ÎÊý¼ûGetWindowLong. ======
»ñµÃÖ¸¶¨´°¿ÚËùÊôµÄ´°¿ÚÀàÃû³Æ£ºGetClassNameAº¯Êý ÉùÃ÷£º
Declare Function GetClassName Lib \ByVal lpClassName As String, ByVal nMaxCount As Long) As Long µ÷ÓÃÈç--ÇóForm1ËùÊôµÄ´°¿ÚÀàµÄÃû³Æ £º pclass = Space(31)
nlen = GetClassNameA(form1.hwnd, pclass, 32) pclass = Left(pclass, nlen)