ش | ی | د | س | چ | پ | ج |
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
Dim IE As Object
Set IE = CreateObject("internetexplorer.application")IE.Visible = TrueShowWindow IE.hwnd, SW_SHOWMAXIMIZEDIE.Navigate "http://www.google.com"Do While IE.ReadyState <> 4: DoEvents: LoopDo While IE.Busy: DoEvents: Loop
' Close internet explorer
IE.Visible=True
ShowWindow IE.hwnd,3
Sleep 600
SendMessageA IE.hwnd,&H10,0,0
hWndP=FindWindow(vbNullString,vbNullString)
'PARENT WINDOW
Do While hWndP <> 0
hWndP=GetWindow(hWndP,GW_HWNDNEXT)
Loop
برای بدست آوردن کلاس پنجره از تابع GetWindowClassA و کپشن اگر Null نباشد از تابع GetWindowTextA استفاده می نمایند
ret=GetClassName(hwnd,Buffer_Variable,len_Buffer)
if Succeed ...ret=NumberOfCharacterSendToBufferVariableYouSpecified
بدین صورت که بافری تخصیص میدهید با اندازه مشخص و سپس این توابع تعداد کاراکترهایی که در این بافر می ریزد را برمی گرداند اگر صفر باشد یا چیزی نیست یا هندل پنجره اشتباه است.
Buff$=Space(80) ' Buffer
X=Left(Buff$,Len(Buff$))
X=Left(Buff$,Instr(Buff$,Chr(0))-1)
تابعی برای بدست آوردن هندل منوی سیستم ( همان دکمه هایی که بصورت max min close در TitleBar می بینید چه خود برنامه چه فرم یا گزارشات)
تابعی برای محو کردن منوی مشخص شده و آزاد کردن حافظه ای که منو اشغال کرده.
getwindowlongptra : extended-window-styles : window-styles
بازیابی اطلاع پنجره مشخص شده
window-styles :
WS_MAXIMIZEBOX
WS_MINIMIZEBOX
WS_SYSMENU
WS_TABSTOP
تغییر ویژگی پنجره مشخص شده
lstyle=GetWindowLongPtrA(hwnd,GWL_STYLE)
lstyle=lstyle And Not WS_MINIMIZEBOX
SetWindowLongPtrA hwnd,GWL_STYLE,lstyle
تغییر سایز و موقعیت برنامه در صفحه
Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
SetWindowPos hwnd, 0, tRect.Left, tRect.Top, tRect.Right - tRect.Left, tRect.Bottom - tRect.Top, SWP_NOREPOSITION Or SWP_NOZORDER Or SWP_FRAMECHANGED
Z-Order موقعیت پنجره را در دسته ای از پنجره های همپوشانی نشان می دهد.
پارامتر دوم ( hwndinsertafter ) :
هندلی به پنجره که از پنجره ای در z order پیشی گرفته.این پارامتر باید یا هندل پنجره یا یکی از مقادیر مثل زیر باشد.
HWND_TOP : قرار گرفتن پنجره در بالای زِد اُردِر
SetWindowPos Me.hWnd,HWND_TOPMOST, 0, 0, 0, 0, SWP_NOACTIVATE Or SWP_SHOWWINDOW Or SWP_NOMOVE Or SWP_NOSIZE
گرفتن هندل پنجره ها ، البته با تابع EnumChildWindows اینکار راحت تر است و به تابع زیرآن نیازی نیست
EnumChildWindows hwnd,AddressOf EnumChildWnd,1
Function BrowseHandle(hwndParent As LongPtr) Dim hwndChild As LongPtr hwndChild = GetWindow(hwndParent, GW_CHILD) Do While hwndChild Debug.Print hwndChild & "... Class Name :" & GetClass(hwndChild) & "... Window Text : " & GetWinText(hwndChild) BrowseHandle hwndChild hwndChild = GetWindow(hwndChild, GW_HWNDNEXT) If GetClass(hwndChild) = "Internet Explorer_Server" Then DD = hwndChild Loop End Function 984678... Class Name :OSUIBlank... Window Text : 525766... Class Name :OSUIBlank... Window Text : 1050060... Class Name :NUIScrollbar... Window Text : Horizontal 1246666... Class Name :NetUIHWND... Window Text : 656882... Class Name :OSUI... Window Text : SUI 656874... Class Name :NetUINativeHWNDHost... Window Text : RecNavHost 591334... Class Name :NetUIHWND... Window Text : 591330... Class Name :NetUICtrlNotifySink... Window Text : 591336... Class Name :RICHEDIT60W... Window Text : Search 591358... Class Name :NetUICtrlNotifySink... Window Text : 525792... Class Name :RICHEDIT60W... Window Text : 1 of 1 525774... Class Name :OSUIBlank... Window Text : 722376... Class Name :NUIScrollbar... Window Text : Vertical 919166... Class Name :NetUIHWND... Window Text : 919012... Class Name :OSUIBiDiBlank... Window Text : 656920... Class Name :OFormSub... Window Text : 591380... Class Name :OFormSub... Window Text : 657000... Class Name :OGrid... Window Text : 722518... Class Name :Shell Embedding... Window Text : 1115700... Class Name :Shell DocObject View... Window Text : 656938... Class Name :Internet Explorer_Server... Window Text : 656912... Class Name :OFEDT... Window Text : 1181188... Class Name :OKtRichTbx... Window Text : 1377904... Class Name :OKttbx... Window Text : 525842... Class Name :OFormSub... Window Text :
1. Finding a report window handle
Finding a page handle in the page number display area
3. Sending a page number rewrite message
Send an enter key push message
WindowHandle=FindWindow("OReportPopup", vbNullString)
WindowHandle=FindWindowEx(windowHandle, 0, "OSUI", vbNullString)
WindowHandle=FindWindowEx(windowHandle, 0, "NetUINativeHWNDHost", vbNullString)
WindowHandle=FindWindowEx(windowHandle, 0, "NetUIHWND", vbNullString)
WindowHandle=FindWindowEx(windowHandle,0, "NetUICtrlNotifySink", vbNullString)
Handle = 0
For i = 0 To 1 Step 1
Handle=FindWindowEx(windowHandle,Handle, "NetUICtrlNotifySink", vbNullString)
If Handle <> 0 Then
Dim pageNoHandle As LongPtr
pageNoHandle =FindWindowEx(Handle, 0, "RICHEDIT60W", vbNullString)
Public Const WM_KEYDOWN = &H100
Public Const WM_KEYUP = &H101
Public Const WM_CHAR = &H102
Call SendMessageLong(x, WM_CHAR, 13, 0&)
Call PostMessage(x, WM_KEYDOWN, VK_RETURN, 0&)
'Click ‘Open’ menuitem
Private Const WM_COMMAND = &H111
Dim hwnd, hWndMenu, hWndSubMenu, MenuItem As Integer
hwnd = FindWindow(vbNullString, "Untitled - Notepad")
hWndMenu =GetMenu(hwnd)
hWndSubMenu =GetSubMenu(hWndMenu, 0)
MenuItem =GetMenuItemID(hWndSubMenu, 1)
SendMessage(hwnd, WM_COMMAND, MenuItem, vbNullString)
Private Const WM_KEYDOWN = &H100
Private Const WM_KEYUP = &H101 Sub
hWind = FindWindow(vbNullString, "Untitled Notepad")