-
جلسه هفتم
تابع GetActiveWindow :
این تابع دستگیره پنجره فعال را بر می گرداند .
اصل تابع :
Public Declare Function GetActiveWindow Lib "user32" Alias "GetActiveWindow" () As Long
پارامتر ها :
این تابع هیچ پارامتری ندارد .
خروجی :
خروجی این تابع از نوع عددی بوده و شامل دستگیره پنجره فعال می باشد . اگر تابع کارش را ناقص انجام بدهد مقدار صفر یا Null برگردانده می شود .
تابع SetActiveWindow :
کار این تابع دقیقا بر عکس تابع GetActiveWindow می باشد . این تابع پنجره فعال را مشخص می کند . توجه داشته باشید که فعال شدن به معنی Fouus شدن روی آن پنجره نیست .
اصل تابع :
Public Declare Function SetActiveWindow Lib "user32" Alias "SetActiveWindow" (ByVal hwnd As Long) As Long
پارامتر ها :
hwnd : این پارامتر از نوع عددی بوده و شامل دستگیره پنجره ای می باشد که می خواهیم فعال شود .
خروجی :
اگر مقدار خروجی برابر یک باشد تابع کار خود را به خوبی انجام داده است و اگر به درستی انجام ندهد مقدار صفر برگردانده می شود .
تابع GetWindowText :
کار این تابع از جهتی برعکس تابع FindWindow می باشد از این رو که در تابع FindWindow ما عنوان پنجره مورد نظر را در اختیار داشتیم و دستگیره آن را نیاز داشتیم ولی این تابع دستگیره در اختیار است و می خواهیم عنوان پنجره را بدست آوریم .
اصل تابع :
Public Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
پارامتر ها :
hwnd : این پارامتر از نوع عددی بوده و شامل دستگیره پنجره ای می باشد که می خواهیم عنوان (Caption) آن را بدست آوریم .
lpString : این پارامتر از نوع رشته بوده و عنوان پنجره را در خود ذخیره می کند .
cch : این پارامتر از نوع عددی بوده و تعداد کاراکترهایی را که از عنوان باید نمایش داده شوند مشخص می کند .
خروجی :
اگر تابع کار خود را به خوبی انجام دهد مقدار خروجی تابع برابر با تعداد کاراکتر هایی می باشد که در متغیر IpString قرار گرفته است و اگر تابع کارش را ناقص انجام دهد مقدار صفر را بر می گرداند .
تابع GetWindowTextLength :
این تابع طول رشته عنوان یک پنجره را برمی گرداند .
اصل تابع :
Public Declare Function GetWindowTextLength Lib "user32" Alias "GetWindowTextLengthA" (ByVal hwnd As Long) As Long
پارامتر ها :
hwnd : این پارامتر از نوع عددی بوده و شامل دستگیره پنجره ای می باشد که می خواهیم طول رشته آن پنجره را بدست آوریم .
خروجی :
اگر تابع کار خود را به خوبی انجام دهد مقدار خروجی تابع برابر با تعداد کاراکتر های عنوان پنجره مورد نظر می باشد و اگر تابع کارش را ناقص انجام دهد مقدار صفر را بر می گرداند .
تابع SetWindowText :
کار این تابع دقیقا برعکس تابع GetWindowText می باشد با استفاده از این تابع می توان عنوان یک پنجره را تغییر داد .
اصل تابع :
Public Declare Function SetWindowText Lib "user32" Alias "SetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String) As Long
پارامتر ها :
hwnd : این پارامتر از نوع عددی بوده و شامل دستگیره پنجره ای می باشد که می خواهیم عنوان آن را تغییر دهیم .
lpString : این پارامتر از نوع رشته بوده و شامل عنوان جدید پنجره مورد نظر می باشد .
نکته : این تابع دقیقا از پیغام WM_SETTEXT استفاده می کند طریقه استفاده از این پیغام ها در قسمت Message ها توضیح خواهم داد . مثل تابع SendMessage که دوستان هم در خواست کردند .
خروجی :
اگر تابع کار خود را به خوبی انجام دهد مقدار خروجی تابع برابر یک می باشد و اگر تابع کارش را ناقص انجام دهد مقدار صفر را بر می گرداند .
مثال :
کد:
Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Private Declare Function SetWindowText Lib "user32" Alias "SetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String) As Long
Private Declare Function GetWindowTextLength Lib "user32" Alias "GetWindowTextLengthA" (ByVal hwnd As Long) As Long
Private Declare Function GetActiveWindow Lib "user32" () As Long
Private Sub Command1_Click()
Dim Wn As String
Wn = Space(255)
a = GetWindowText (GetActiveWindow, Wn, GetWindowTextLength(GetActiveWindow) + 1)
Text1.Text = Wn
End Sub
Private Sub Command2_Click()
Dim str As String
str = "sajjad”
str = str + "_3piz”
SetWindowText GetActiveWindow, str
End Sub
رفقا در این مثال به دو CommandButton یا همون دکمه خودمون و یک TextBox احتیاج داریم .
در دکمه اولی یک متغیر رشته ای به نام Wn معرفی کردم و بعد در خط دوم به متغیر ، 255 تا فضای خالی کاراکتر دادم ( چون نمی دونیم که چند حرفه ) در خط سوم با تابع GetWindowText می خواهم عنوان پنجره فعالی که با تابع GetActiveWindow بدست می آید را در متغیر Wn قرار داده که با استفاده از تابع GetWindowTextLength تعداد کاراکتر های عنوان پنجره را بدست آورده و در متغیر Wn تاثیر می گذارد و بعد در TextBox چاپ می شود .
در دکمه دومی یک متغیر رشته ای تعریف کردم و بعد به متغیر مقدار دادم و با استفاده از تابع SetWindowText عنوان پنجره فعال را تغییر می دهم .
-
با سلام می خواستم بدونم که می تونم دکمه های برنامه ای کاربردی رو که گرافیکی هم هست وارد ویژوال بیسیک کنم یا نه؟
اگر میتونم با چه دستوری فراخوانیش کنم چون می خوام از طریق توابع Api واردشون کنم.
-
سلام رفیق
من که تا حالا ندیدم که کسی این کارو بکنه
من فقط از طریق منوی Project و انتخاب گزینه ی Components می تونم دکمه ها رو وارد vb کنم .
-
جلسه هشتم
تابع GetWindow :
این تابع دستگیره یک پنجره را با استفاده از دستگیره پنجره های دیگر بر می گرداند . از این قبیل می توان به پنجره بعدی پنجره مورد نظر ، پنجره قبلی پنجره مورد نظر و از این موارد اشاره کرد ( به طور ساده تر بگم درون هر پنجره می تواند TextBox و CommandButton و ... موجود باشد اگر شما بخواهید دستگیره این اجزا را بدست آورید باید از دستگیره پنجره اصلی استفاده کنید که این تابع انجام می دهد ) .
اصل تابع :
Public Declare Function GetWindow Lib "user32" Alias "GetWindow" (ByVal hwnd As Long, ByVal wCmd As Long) As Long
پارامتر ها :
hwnd : این پارامتر از نوع عددی بوده و شامل دستگیره پنجره ای می باشد که می خواهیم دستگیره پنجره های وابسته به آن را بیابیم .
wCmd : این پارامتر از نوع عددی بوده و مشخص کننده پنجره ای می باشد که می خواهیم دستگیره آن را بیابیم . این پارامتر می تواند مقادیر زیر را داشته باشد :
- GW_CHILD : این flag پنجره child یا به عبارتی پنجره درون پنجره مورد نظر را به تابع بر می گرداند با مقدار عددی 5 .
- GW_HWNDFIRST : این flag دستگیره بالاترین پنجره موجود در Task ویندوز را به تابع بر می گرداند با مقدار عددی 0 .
- GW_HWNDNEXT : این flag دستگیره اولین پنجره بعد از پنجره مورد نظر را به تابع بر می گرداند و با مقدار عددی 2 .
- GW_HWNDPREV : این flag دستگیره اولین پنجره قبل از پنجره مورد نظر را به تابع بر می گرداند و با مقدار عددی 3 .
- GW_OWNER : این flag برعکس flag ، GW_CHILD می باشد و دستگیره پنجره مالک (Owner) پنجره مورد نظر به تابع بر می گرداند و با مقدار عددی 4 .
خروجی :
خروجی این تابع از نوع عددی بوده و اگر تابع کار خود را به خوبی انجام دهد دستگیره پنجره مورد نظر را بر می گرداند و اگر تابع کارش را ناقص انجام بدهد مقدار صفر یا Null برگردانده می شود .
مثال :
کد:
Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Private Declare Function GetWindowTextLength Lib "user32" Alias "GetWindowTextLengthA" (ByVal hwnd As Long) As Long
Private Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wCmd As Long) As Long
Private Const GW_HWNDNEXT = 2
Private Sub Command1_Click()
Dim hwnd As Long
Dim wn As String, WnN As String
wn = Space(255)
WnN = Space(255)
hwnd = GetWindow(Form1.hwnd, GW_HWNDNEXT)
GetWindowText Form1.hwnd, wn, GetWindowTextLength(Form1.hwnd) + 1
GetWindowText hwnd, WnN, GetWindowTextLength(hwnd) + 1
List1.AddItem "This Window Handle : " + CStr(Form1.hwnd)
List1.AddItem "This Window Caption : " + CStr(wn)
List1.AddItem “”
List1.AddItem "This Next Window Handle : " + CStr(hwnd)
List1.AddItem "This Next Window Caption : " + CStr(WnN) List
end sub
تابع GetNextWindow :
این تابع تقریبا مانند تابع GetWindow با این تفاوت که فقط از دو Flag تابع GetWindow می تواند استفاده کند .
اصل تابع :
Public Declare Function GetNextWindow Lib "user32" Alias "GetWindow" (ByVal hwnd As Long, ByVal wFlag As Long) As Long
پارامتر ها :
hwnd : این پارامتر از نوع عددی بوده و شامل دستگیره پنجره ای می باشد که می خواهیم دستگیره پنجره های بعدی و قبلی آن را بدست آوریم .
wCmd : این پارامتر از نوع عددی بوده و مشخص کننده پنجره ای می باشد که می خواهیم دستگیره آن را بیابیم ( قبلی یا بعدی ) این پارامتر می تواند مقادیر زیر را داشته باشد :
- GW_HWNDNEXT : این flag دستگیره پنجره بعدی پنجره مورد نظر را به تابع بر می گرداند با مقدار عددی 2 .
- GW_HWNDPREV : این flag دستگیره پنجره قبلی پنجره مورد نظر را به تابع بر می گرداند و با مقدار عددی 3 .
نکته : منظور از پنجره بعدی پنجره ای است که در لیست پنجره های ویندوز درون حافظه در مکان پایین تری از پنجره مورد نظر ما قرار دارد و منظور از پنجره قبلی ، پنجره ای است که در مکان بالاتری از پنجره مورد نظر ما قرار دارد .
خروجی :
خروجی این تابع از نوع عددی بوده و اگر تابع کار خود را به خوبی انجام دهد دستگیره پنجره مورد نظر را بر می گرداند و اگر تابع کارش را ناقص انجام بدهد مقدار صفر یا Null برگردانده می شود .
مثال :
کد:
Private Declare Function GetNextWindow Lib "user32" Alias "GetWindow" (ByVal hWnd As Long, ByVal wFlag As Long) As Long
Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hWnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Private Declare Function GetWindowTextLength Lib "user32" Alias "GetWindowTextLengthA" (ByVal hWnd As Long) As Long
Private Const GW_HWNDNEXT = 2
Private Const GW_HWNDPREV = 3
Private Sub Command1_Click()
Dim hWnd As Long
Dim Wn As String
Wn = Space(255)
hWnd = GetNextWindow(Me.hWnd, GW_HWNDNEXT)
GetWindowText hWnd, Wn, GetWindowTextLength(hWnd) + 1
Text1.Text = "Caption of Next Window is : " + CStr(Wn)
hWnd = GetNextWindow(Me.hWnd, GW_HWNDPREV)
GetWindowText hWnd, Wn, GetWindowTextLength(hWnd) + 1
Text2.Text = "Caption of Prev Window is : " + CStr(Wn)
End Sub
تابع IsWindow :
این تابع مشخص می کنه پنجره ای که دستگیرش برای آن مشخص شده وجود داره یا نه ؟
اصل تابع :
Private Declare Function IsWindow Lib "user32" Alias "IsWindow" (ByVal hwnd As Long) As Long
پارامتر ها :
hwnd : این پارامتر از نوع عددی بوده و شامل دستگیره پنجره ای می باشد که می خواهیم بدانیم وجود داره یا نه .
خروجی :
خروجی این تابع از نوع عددی بوده و اگر پنجره وجود داشته باشد مقدار 1 و اگر وجود نداشته باشد مقدار 0 بر گردانده می شود .
تابع IsWindowVisible :
این تابع وضعیت نمایی یک پنجره را بر می گرداند .
اصل تابع :
Private Declare Function IsWindowVisible Lib "user32" Alias "IsWindowVisible" (ByVal hwnd As Long) As Long
پارامتر ها :
hwnd : این پارامتر از نوع عددی بوده و شامل دستگیره پنجره ای می باشد که می خواهیم وضعیت نمایی آن را بدانیم .
خروجی :
خروجی این تابع از نوع عددی بوده و اگر پنجره قابل دیدن باشد (Visible) ، مقدار یک و در غیر این صورت مقدار صفر برگردانده می شود .
تابع IsIconic :
این تابع مشخص می کند که یک پنجره در حالت Minimize قرار دارد یا نه .
اصل تابع :
Private Declare Function IsIconic Lib "user32" Alias "IsIconic" (ByVal hwnd As Long) As Long
پارامتر ها :
hwnd : این پارامتر از نوع عددی بوده و شامل دستگیره پنجره ای می باشد که می خواهیم وضعیت آن را چک کنیم .
خروجی :
خروجی این تابع از نوع عددی بوده و اگر پنجره مورد نظر در حالت Minimize باشد ، مقدار یک و در غیر این صورت مقدار صفر برگردانده می شود .
مثال :
کد:
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function IsWindow Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function IsWindowVisible Lib "user32" (ByVal hwnd As Long) As Long
Private Sub Command1_Click()
Dim hwnd As Long
hwnd = FindWindow(vbNullString, "My Computer")
If IsWindow(hwnd) Then
MsgBox "This Handle Is Window"
Else
MsgBox "This Handle No Window"
End If
End Sub
Private Sub Command2_Click()
Dim hwnd As Long
hwnd = FindWindow(vbNullString, "My Computer")
If IsWindowVisible(hwnd) Then
MsgBox "The My Computer Window Is Visible"
Else
MsgBox "The My Computer Window Is UnVisible"
End If
End Sub
-
سلام دوستان . چگونه ميشه مسير فعال را از ريق كد وي بي پيدا كرد . مثلا شما در مسير c:\my book قرار داريد. اين مسير را از طريق كد ويبي چگونه پيدا كنيم . يعني هرجا رفتيم اون مسير را ويبي چاپ كنه . متشكرم
-
سلام فقط با تابع send message میشه این کارو کرد . خودم اتفاقا کد شو نوشتم برای یه کرم .
برات میذارم رو وب .
-
-
سلام
در مورد Regqueryvalue و دیگر توابع رجیستری توضیح بدبد که دیگه عالی میشه
-
سلام
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
.
چطور میشه پنجره فعال رو توی ویندوز مشخص کرد.
البته با توابع api .با Ge activewindow نشد،0 بر می گردونه.
با Getwwindow میشه پنجره ای که بالای همه پنجره هاست رو گرفت ولی ممکنه فعال نباشه(focus روش نباشه).
Thank u.
-
Api تشخیص پرینت گرفتن
در یک فروم خارجی سوال کردم و بهم این لینک رو دادند . اما اصلا نمی دونم این توابع چطور کار می کنند و کجا باید ازشون استفاده کرد ؟!
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
قصدم اینکه بفهمم چندبار از گزارش print گرفته میشود و تنها راه اینطور که معلومه استفاده از API هاست .
چطور میشه تشخیص داد که در گزارش گیری از طریق دیتا ریپورت Datareport کاربر از گزارش پرینت گرفته ؟