16-04-2012, 20:46
|
|
|
|
חבר מתאריך: 14.12.09
הודעות: 9,751
|
|
במובן הכי רחב, זה בלתי אפשרי, לא משנה באיזו שפה.
ווינדוס פשוט לא מספקת את המידע הזה.
יש טריקים שאפשר לעשות, אבל הם גרועים ומעצבנים:
- את יכולה לייצר את קיצורי הדרך בעצמך, ולהעביר בהם ארגומנט שורת פקודה. (אבל זה לא עוזר אם המשתמש ייצר קיצור דרך בעצמו.)
- את יכולה לכתוב תוכנה שנטענת ל-explorer.exe, עוקבת אחרי כל הרצות קיצורי הדרך, ואם מריצים את התוכנה שלך דרך קיצור דרך, מעבירה את זה לתוכנה. (אבל זה מסובך וחודרני.)
יש wokraround שיעבור ברוב המקרים: את בודקת את הדגל STARTF_TITLEISLINKNAME בשדה dwFlags של ה-STARTUPINFO של הפרוסס שלך.
שימי לב: מובטח לך שאם ה-shell מריץ את התוכנה דרך קיצור דרך, הדגל ידלוק, אבל הוא יכול לדלוק גם בלי קשר. יכול להיות שהדגל דולק, וזה כי תוכנה אחרת הריצה את התוכנה שלך, והדליקה את הדגל הזה ב-STARTUPINFO שהיא העבירה ל-CreateProcess מתוך שיעמום או כדי לשגע אותך.
לכן, כדאי שתבדקי שקיצור הדרך באמת קיים, ושהוא באמת מצביע לתוכנה שלך.
כדי לקבל את ה-STARTUPINFO של הפרוסס שלך, את צריכה לקרוא ל-GetStartupInfo. אולי יש גם מקביל דוטנטית.
כדי לבדוק לאן באמת מצביע קיצור-הדרך, את צריכה להשתמש ב-IShellLink (שוב, אולי יש מקבילה דוטנטית כלשהי).
_____________________________________
(קרדיט למרשי)
אמר לה ינאי מלכא לדביתיה אל תתיראי מן הפרושין ולא ממי שאינן פרושין אלא מן הצבועין שדומין לפרושין שמעשיהן כמעשה זמרי ומבקשין שכר כפנחס
אמר פסטן: שניהם גרועים, אבל עדיף להיות טיפש מאשר שקרן.
|