Shell

טרמפיסט

New member
Shell

שלום, אני מעלה חלון אקספלורר דרך התוכנית שלי ומעוניין לסגור אותו אוטומאטית באיזהשהוא שלב. האם ישנה דרך לעשות זאת מבלי להשתמש ב-process? דרך אחת אותה אני מכיר היא לסגור את החלון ע"י שימוש בכותרת שלו... החלון נפתח בעזרת ShellExecute והדרך היחידה בה אני מצליח ללכוד את ה-hWnd שלו היא לפי הכותרת (שעשויה להשתנות בהתאם ל-Browser של המשתמש). מה לעשות? מישהו מכיר דרך?
 

טרמפיסט

New member
SetWindowLong

ועוד שאלה על הדרך: האם ישנה דרך להציב Hook רק על חלון ספציפי בהנחה וה-hWnd שלו ידוע לי?
 

ארזירון

New member
איזה hook?

כל "תפיסה" של קריאת מערכת הפעלה לחלון נקראת hook. אפשר לתפוס הקשות מקלדת, תזוזת עכבר, פעולות חלון (מזעור למשל).... חלק אפשר לפי hWnd וחלק לא... בקשר לשאלה הראשונה שלך - אתה מדבר על IE או windows explorer? ולמה עם shell execute? תסביר מה אתה מנסה לעשות, אולי יש פתרון אחר...
 

טרמפיסט

New member
אז ככה:

ב-Hook-ים כבר השתמשתי בעבר, אך עד היום היה לי הצורך ללכוד מכל המערכת באופן כללי. עכשיו התעורר הצורך להגביל את הלכידה רק לאירועים של חלון ספציפי - בו אני מעוניין לשלוט בצורה כזו או אחרת. שאלתי היא האם יש אפשרות לצמצם את טווח הלכידה שיפעל רק על חלון ספציפי כיוון שאין לי צורך באירועים דומים שקורים בשאר המקומות במערכת? לשאלתי הראשונה: פתחתי חלון IE בעזרת ShellExecute ואני מעוניין לסגור אותו אוטומאטית אחרי דקה בערך. כרגע השיטה מאוד מתוסבכת: לסרוק את כל כותרות החלונות הקיימים ולמצוא ע"י כך את החלון המתאים ולשלוח לו הודעת סגירה כפויה... אני מתאר לעצמי שישנה דרך הרבה יותר סטרילית להפעיל תוכנה, לקבל את ה-hWnd של החלון הראשי ולסגור אותו באלגנטיות לאחר מכן. תודה על העזרה.
 

ארזירון

New member
אבל ב-hook יש פרמטרים

ואם אני זוכר נכון אז אחד מהם זה לאן ההודעה מיועדת, קרי hwnd של חלון... כדי לפתוח חלון של IE אפשר להשתמש גם ב-create process שיחזיר לך process id שאיתו תוכל לסגור את האפליקציה. אתה לא תצטרך מזהה חלון בשביל זה, כי יש לך מזהה אחר. גם shell execute אמור להחזיר לך pid אם אני זוכר...בתור פרמטר חוזר בקריאה לפונקציה (משהו שעובר byref...לא?)
 
למעלה