PDA

View Full Version : بستن پنجره جاری در windowse



abbas.net
سه شنبه 05 تیر 1386, 17:28 عصر
با سلام خدمت دوستان.
یک سری کد می خواستم که بتونه پنجره جاری ویندوز رو ببنده. مثلا من 10 تا internet explorer باز میکنم و یکی رو فعال میکنم.حالا میخوام با اجرای یک کد که فکر میکنم با توابع api نوشته می شه اون پنجره رو ببندم.کدش رو میتونید برام بذارید.ببخشید من کار با توابع api رو بلد نیستم.زحمتش با شما.:تشویق:

kia1349
پنج شنبه 07 تیر 1386, 06:58 صبح
از این api استفاده کن
DECLARE INTEGER DestroyWindow IN user32 INTEGER hWnd
ایجا رو هم مطالعه کنید
http://www.news2news.com/vfp/?article=12&src=frontpage

abbas.net
سه شنبه 12 تیر 1386, 16:53 عصر
آقای کیا لطفا اگر این کد را بلدید برام بزارید.لنگ این کدم.:گیج:

abbas.net
سه شنبه 12 تیر 1386, 18:02 عصر
لطفا اگر کسی از دوستان با توابع api کار کرده و می تونه با این کدی که آقای کیا داده کدی رو جهت بستن پنجره جاری ویندوز بده ممنون می شم.لطفا جهت یاد گیری استفاده از توابع api ما را یاری کنید.راستی به اون سایت هم که کیا گفت سر زدم.ولی علامت سوالم بزرگتر شد.با تشکر.:قهقهه:

abbas.net
جمعه 15 تیر 1386, 15:37 عصر
با سلام خدمت دوستان. من یک سوال دارم از آقای کیا . شاید هم آقا رضا (آگر این تاپیک رو خونده باشه).آخه دوستان خوب من شما ها که یک کد رو می دونید چرا اون رو نمی نویسید و یک راهنمایی کوچیک میکنید. خوب! تونستم اون کدی رو که می خوام با هزار مکافات بدست بیارم.البته توصیه نمی کنم کسی از اون استفاده کنه چون راه ساده تری هم هست.ولی در نوع خودش برام خوب بود.میشد به جرات بگم بعد از 10 سال بالاخره پشت رایانه عرق ریختم.
این کد رو برای دوستان خوبم میذارم. شاید بدردتون بخوره.


کد در یافت ویندو هندل برنامه های جاری در DESKTOP



************************************************** ***********
#DEFINE GW_HWNDLAST 1
#DEFINE GW_HWNDNEXT 2
#DEFINE GW_CHILD 5
DO declare

CREATE CURSOR csResult1 (hWnd N(12), isvisible N(1),;
leftpos I, toppos I, rightpos I, botpos I, wincap C(64), classname C(64))

LOCAL hDesktop, hFirstChild, hLastChild, rc, cWinCap, cWinClass,;
nVisible, nLeft, nTop, nRight, nBottom

hDesktop = GetDesktopWindow()
hFirstChild = GetWindow(hDesktop, GW_CHILD)
hLastChild = GetWindow(hFirstChild, GW_HWNDLAST)

hCurrent = hFirstChild
DO WHILE .T.
cWinCap = GetWinText(hCurrent)
cWinClass= GetClsName(hCurrent)
nVisible = IsWindowVisible(hCurrent)

rc = Repli(Chr(0),16)
= GetWindowRect(hCurrent, @rc)
nLeft = buf2dword(SUBSTR(rc, 1,4))
nTop = buf2dword(SUBSTR(rc, 5,4))
nRight = buf2dword(SUBSTR(rc, 9,4))
nBottom = buf2dword(SUBSTR(rc, 13,4))

INSERT INTO csResult1 VALUES (hCurrent, nVisible,;
nLeft, nTop, nRight, nBottom, cWinCap, cWinClass)

IF hCurrent = hLastChild
EXIT
ENDIF
hCurrent = GetWindow(hCurrent, GW_HWNDNEXT)
ENDDO
GO TOP
BROWSE NORMAL NOWAIT
* end of main

FUNCTION GetClsName(hWindow)
LOCAL nBufsize, cBuffer
cBuffer = Repli(Chr(0), 250)
nBufsize = GetClassName(hWindow, @cBuffer, Len(cBuffer))
RETURN SUBSTR(cBuffer, 1, nBufsize)

FUNCTION GetWinText(hWindow)
* returns window title bar text -- Win9*/Me/XP/2000
LOCAL cBuffer, nResult
cBuffer = Space(250)
nResult = GetWindowText(hWindow, @cBuffer, Len(cBuffer))
RETURN SUBSTR(cBuffer, 1, nResult)

FUNCTION buf2dword(lcBuffer)
RETURN Asc(SUBSTR(lcBuffer, 1,1)) + ;
BitLShift(Asc(SUBSTR(lcBuffer, 2,1)), 8) +;
BitLShift(Asc(SUBSTR(lcBuffer, 3,1)), 16) +;
BitLShift(Asc(SUBSTR(lcBuffer, 4,1)), 24)

PROCEDURE declare
DECLARE INTEGER GetDesktopWindow IN user32
DECLARE INTEGER GetWindow IN user32 INTEGER hwnd, INTEGER wFlag
DECLARE INTEGER GetWindowRect IN user32 INTEGER hwnd, STRING @lpRect
DECLARE INTEGER IsWindowVisible IN user32 INTEGER hWnd

DECLARE INTEGER GetWindowText IN user32;
INTEGER hwnd, STRING @lpString, INTEGER cch

DECLARE INTEGER GetClassName IN user32;
INTEGER hWnd, STRING lpClassName, INTEGER nMaxCount


************************************************** ***********

کد حذف یک ویندوی دلخواه از DESKTOP .
هندل ویندو در کد قبل به نام HWND نمایش داده شده است. برای اجرای برنامه فوق به جای CREAT CURSOR از CREAT TABLE استفاده کنید و در آن جدول فیلد های مورد نظر را مانند فیلد ها در جلوی CREAT CURSOR استفاده کنید تا HWND ها قابل دسترسی باشد.شماره HWND را از جدول بخوانید و در رویه زیر آن را صدا بزنید.
توضیح برای اینکه مثلا بتونید فقط مشخصات ویندو هایی که با INTERNET EXPLORER باز شده اند را بیابید هنگام INSERT کردن به درون TABLE یا CURSOR میتوانید آنها را FILTER کنید.




************************************************** **********


PROCEDURE CCLOSE

PARAMETERS HWND
#DEFINE WM_CLOSE 0x0010
DECLARE INTEGER GetActiveWindow IN user32
DECLARE INTEGER PostMessage IN user32;
INTEGER hWindow, INTEGER Msg,;
INTEGER wParam, INTEGER lParam
DECLARE INTEGER GetDesktopWindow IN user32
= PostMessage(HWND, WM_CLOSE, 0,0)

ENDPROC


************************************************** ***********


درود و دو صد بدرود.

kia1349
شنبه 16 تیر 1386, 15:33 عصر
دیدی که با یه خورده عرق ریختن چه نتایج خوبی میگیری
اگر بعضی از تاپیکها رو جواب نمیدیم ویه اشاره کوچیک میکنیم فقط بخاطر اینه که قبلا هم در این جور موارد بحث شده و دیگه اینکه خودتون هم کمی سعی و تلاش کنید تا این راهکارها ملکه ذهنتون بشه