עצה 1: כיצד לקבל את ידית החלון

עצה 1: כיצד לקבל את ידית החלון


הרעיון של ממשק המשתמש ב- Windows בנוי על הקונספט של חלונות. דיאלוגים, לחצנים, לוחות בקרה, רשימות - כל זה חלונות. לכן, על מנת לבצע כל פעולה עם כל רכיב של הממשק שלך או יישום של מישהו אחר, אתה צריך לקבל מתאר חלונות.



כיצד לקבל את ידית החלון


יהיה עליך



  • - פלטפורמה SDK פלטפורמה;
  • - המהדר.


הוראות


1


קבל מתאר חלונות, יצירתו. בצע שיחות לפונקציות ה- API CreateWindow או CreateWindowEx, או התקשר לשיטות העטיפה המתאימות (על האובייקטים הנדרשים) של המעמדות של המסגרת או הספרייה המשמשת, תוך התמצאות בפונקציונליות של עבודה עם חלונותאו פקדים. פונקציות CreateWindow ו CreateWindowEx לחזור ישירות מתאר חלונות אם הוא נוצר בהצלחה. כאשר הם נכשלו שיחות הערך המוחזר הוא NULL. ניתן לבצע שאילתות סיבת קוד שגיאה באמצעות API-פונקציות GetLastError. אבטיפוסים תיאור מפורט של הפרמטרים של CreateWindow ופונקציות CreateWindowEx ללחוץ על הקישורים http://msdn.microsoft.com/en-us/library/windows/desktop/ms632679%28v=vs.85%29.aspx ו http: // MSDN .microsoft.com / en-us / Library / חלונות / שולחן העבודה / ms632680% 28V = vs.85% 29.aspx .אם במסגרות שונות להשתמש בחלונות יצירת אובייקט בכיתה מערכת ההפעלה עלולה להתרחש גם במפורש (על ידי קריאה) ו במרומז (אסטרטגיית יישום RAII). לכן, מתאר חלונות עדיף לקבל על האובייקט מוכן מוכן. על שיטות השיעורים החוזרים מתאר חלונות, מקופלת על ידי האובייקט, אתה יכול למצוא בתיעוד של המסגרת המתאימה. לדוגמה, ב- MFC, שיטה דומה היא GetSafeHwnd של המחלקה CWnd.


2


קבל מתאר חלונות על ידי חיפוש זה. השתמש בפונקציות FindWindow ו- FindWindowEx או בשיטות העטיפות המתאימות של אובייקטים של מחלקות המסגרת המתאימה. הפונקציה FindWindow מחזירה מתאר חלונות ברמה העליונה אם הוא נמצא או NULL על כישלון. החיפוש מתבצע לפי שם המחלקה וכותרת חלונות. תיאור הפרמטרים והיבטים של הפונקציהפונקצית עבודת הקישור http://msdn.microsoft.com/en-us/library/windows/desktop/ms633499%28v=vs.85%29.aspx .Semantika הוא FindWindow FindWindowEx דומה עם ההבדל היחיד שהיא מייצרת חיפוש חלונות ילד. עבור תיעוד FindWindowEx שנתן קישור http://msdn.microsoft.com/en-us/library/windows/desktop/ms633500%28v=vs.85%29.aspx.


3


מצא מתאר חלונות בתהליך של ספירה של סטים שלהם. השתמש בפונקציות ה- API EnumWindows, EnumChildWindows, EnumThreadWindows או בשיטות של אובייקטי המחלקה של המסגרת שבה נעשה שימוש רשימת פונקציות EnumWindows ו- EnumChildWindows חלונות ברמה העליונה ובילד חלונות בהתאמה. EnumThreadWindows מונה את כל הילדים שאינם חלונות של הזרם שצוין. כל אחת מהפונקציות הללו חייבת להיות מועברת למצביע להליך התקשרות, אשר בתהליך העבודה יועברו מתארs למצוא את Windows פרמטרים.על ידי שילוב של פונקציות ספירה, על ידי קבלת וניתוח תכונות של Windows בהליך התקשרות, אתה יכול למצוא מתאר את הנדרש חלונות. התיעוד עבור הפונקציות המתוארות ניתן בקישורים: - EnumWindows: http://msdn.microsoft.com/en-us/library/windows/desktop/ms633497%28v=vs.85%29.aspx; - EnumChildWindows: http://msdn.microsoft.com/ en-us / Library / חלונות / שולחן העבודה / ms633494% 28V = vs.85% 29.aspx; - EnumThreadWindows: http://msdn.microsoft.com/en-us/library/windows/desktop/ms633495%28v=vs 0.85% 29.aspx.


4


קבל מתאר חלונות מקואורדינטות ידועות. פונקציות WindowFromPoint, ChildWindowFromPoint, ChildWindowFromPointEx לחזור מתארהפונקציה WindowsFromPoint הוא הכי קל לשימוש, אבל לא לחזור מתארחלונות נסתרים ומוגבלים. על יישום תיעוד שלה הוא הקישור http://msdn.microsoft.com/en-us/library/windows/desktop/ms633558%28v=vs.85%29.aspx .Funktsii ChildWindowFromPoint ולמצוא ChildWindowFromPointEx מתארילדים של ההורה שצוין חלונות, השייכים לנקודה מסוימת. לפיכך התנהגות ChildWindowFromPointEx ניתן לשלוט בגמישות באמצעות פרמטר נוסף. תיעוד עבור פונקציות אלה מסופק על הקישורים: - ChildWindowFromPoint: http://msdn.microsoft.com/en-us/library/windows/desktop/ms632676%28v=vs.85%29.aspx; - ChildWindowFromPointEx: http: // msdn.microsoft.com/en-us/library/windows/desktop/ms632677%28v=vs.85%29.aspx.



טיפ 2: כיצד לזהות את הידית


מתאר חלון, או חלון ידית, - ספציפימזהה שמנפיק מערכת ההפעלה לחלון במהלך יצירתו. אם אתה מסיבה כלשהי צריך לדעת את מתאר המערכת של חלון (לדוגמה, בעת כתיבת יישום), זה יכול להיעשות באמצעות תוכנית HWND.



כיצד לזהות את הידית


יהיה עליך



  • - תוכנית HWND.


הוראות


1


אתר את היישום באמצעות מנועי החיפושבאינטרנט ולהוריד למחשב. תוכנית זו היא יישום חינם שפותחה על ידי מתכנת פאבל לסניקוב. לפני פריקת הארכיון עם התוכנית, לבדוק את הנתונים שהורדו עם תוכנת אנטי וירוס. לפתוח את הארכיון עם התוכנית. הפעל את כלי השירות על-ידי לחיצה פעמיים על הקובץ WHD.exe. בחלון התוכנית יש ממשק פשוט: פקדים ושדה להצגת מתארים. אם אין לך archiver, להוריד מהאינטרנט תוכנית הנקראת Win Rar.


2


הגדר את המתג למצב "מתוךסמן "ולחץ על CapsLock במקלדת. לאחר פעולה זו, המזהים של כל החלונות שעליהם עובר סמן העכבר מוצגים אוטומטית בשדה הפלט של המתאר. כדי להשבית הליך זה, לחץ שוב על CapsLock. הזן את הכיתה של החלון שאת מתאר אתה רוצה לדעת.


3


לחץ על כפתור "אישור" והשדה למטה יופיע.מזהה חיפוש. כדי לסגור את חלון התוכנית, לחץ על הצלב בפינה השמאלית העליונה. לתקשורת עם היזם של התוכנית ללכת לאתר http://vokinsel.dviger.com. תוכל לקבל ייעוץ שם בזמן אמת, כמו גם ללמוד על הזמינות של גרסאות חדשות של התוכנה.


4


כלי זה אינו דורש התקנה מאודקל לשימוש. מזהי החלון המתקבלים בדרך זו יכולים לשמש מאוחר יותר ביישומים אחרים כדי לגשת לחלונות שירות של Windows וחלונות של תוכניות ריצה. אם אינך יודע כיצד להשתמש בתוכניות אלה, קרא את העזרה. בדרך כלל, מפתחים לתאר את העקרונות הבסיסיים של עבודה עם תוכניות.




עצה 3: כיצד לקבל את הידית


ממשק תכנות יישומיםמערכות ההפעלה של משפחת Windows מיוצגת על ידי קבוצה של פונקציות. כאשר הם נקראים, ניתן ליצור אובייקטים שונים (קבצים, תהליכים, חוטים, אובייקטי סנכרון וכו '). כדי להבטיח גישה מופשטת ומאוחדת לאובייקטים אלה, הזיהוי שלהם נעשה באמצעות מתארים - ערכים "לא אישיים" מספריים.



איך להשיג את הידית


יהיה עליך



  • - מתרגם משפת תכנות המאפשרת שימוש בממשק ה- API של Windows;
  • - אולי פלטפורמת Windows SDK.


הוראות


1


קבל את מתארי החלון. זה יכול להיעשות בכל כך הרבה דרכים. השיטה הספציפית תלויה במטרה הסופית: השתמש בממשק ה- API של CreateWindow או ב- CreateWindowEx כדי ליצור חלון. הם מחזירים מתאר אם מוצלח NULL במקרה של כישלון.לבצע חיפוש עבור חלונות ברמה העליונה וחלונות הילד על ידי פרמטרים שונים באמצעות פונקציות FindWindow ו FindWindowEx, בהתאמה. אם החיפוש מצליח, מתאר החלון יתקבל, ספור את החלונות עם הפונקציות EnumWindows, EnumChildWindows, EnumThreadWindows. המתארים של החלונות שנמצאו יעברו כפרמטר של פונקציית החיוג החוזר, ומצאו את ידית החלון הממוקמת במיקום מסוים על המסך. התקשר לאחד הפונקציות: WindowFromPoint, ChildWindowFromPoint או ChildWindowFromPointEx.


2


השג מתארי תהליך. יצירת תהליך חדש על ידי קורא את API פונקציות CreateProcess, CreateProcessAsUser, CreateProcessWithTokenW, או CreateProcessWithLogonW. כולם מחזירים את המתאר של התהליך החדש בשדה hProcess של מבנה מסוג PROCESS_INFORMATION, המצביע שאליו הוא חייב לעבור לפרמטר האחרון. מצא את ידית התהליך מהמזהה המוכר שלה. השתמש בשיחת OpenProcess. ניתן לזהות את המזהים של כל התהליכים הפועלים, לדוגמה, באמצעות הפונקציות CreateToolhelp32Snapshot, Process32First ו- Process32 Next של ספריית העזרה של הכלי. הסר את התיאור המדומה של התהליך הנוכחי באמצעות הפונקציה GetCurrentProcess.


3


קבל את מתארי החוט. הפונקציות CreateThread ו- CreateRemoteThread יוצרות חוטים בעצמם ובתהליכים אחרים, בהתאמה, מחזירים את המתאר שלהם. כדי לפתוח זרם קיים באמצעות המזהה שלו, לאחר שקיבל מתאר תואם, זה אפשרי באמצעות פונקציה OpenThread. התיאור המדומה של הזרם הנוכחי מוחזר כאשר GetCurrentThread נקרא.


4


מתארים עבור קבצים, ספריות, פיזיתדיסקים, כרכים, קונסולות, משאבי תקשורת (יציאות I / O), חריצי דואר וצינורות בשם ניתן להשיג על ידי קורא פונקציה אחת - CreateFile.


5


תיאורי קבצים עבור אובייקטים לתצוגת קבצים מוחזרים כאשר מתקשרים ל- CreateFileMapping ו- OpenFileMapping.


6


הפונקציות CreateMutex, CreateSemaphore וCreateEvent נוצר, ופונקציות OpenMutex, OpenSemaphore ו- OpenEvent פותחות אובייקטי סנכרון קיימים (mutexes, סמפורמנטים ואירועים). כולם מחזירים מתארים.


7


מניפולציה של כל האובייקטים GDI (כגוןהקשרים, מכשירים, גופנים, מברשות, עפרונות, תלושי חומרה ותלויים עצמאיים, קטעי DIB וכו ') מופקים באמצעות מתאריהם. הפונקציות ליצירת אובייקטים GDI הם רבים לקבלת מידע עליהם יש צורך להתייחס המקביל בסעיף של MSDN.


8


מתאר שמתקבל בתהליך אחד, כמוהכלל, לא ניתן להשתמש אחרת. עם זאת, בחלק מהמקרים ניתן לקבל תיאורי-כפילות המתאימים לאובייקט הראשי. התקשר לפונקציית ה- API של DoubleHandle כדי ליישם את התיאור הכפול. זה יכול לשמש, למשל, כדי ליישם את השימוש בו זמנית של אובייקטים או אובייקטים סינכרון ללא שם על ידי מספר תהליכים.