בעיה ב Shell link windows 8

liran22

New member
בעיה ב Shell link windows 8

שלום
כתבתי קוד שיצר קיצור דרך לתוכנה (lnk)

hResult= CoInitializeEx(NULL,COINIT_MULTITHREADED);

hres=CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, IID_IShellLink, (LPVOID*)&l_pIShellLink);

hres = l_pIShellLink->QueryInterface(IID_IPersistFile, (LPVOID*)&l_pIPersistFile);

l_pIShellLink->SetWorkingDirectory(a_szWorkingPath);
l_pIShellLink->SetPath(a_szTargetPath);
l_pIShellLink->SetArguments(a_szArguments);
l_pIShellLink->SetHotkey(a_HotKey);

hres= l_pIPersistFile->Save(a_szShortcutPath,TRUE);

if(l_pIShellLink != NULL)
{
l_pIShellLink->Release();
}

if(l_pIShellLink != NULL)
{
l_pIShellLink->Release();
}


if(hResult == S_OK)
{
CoUninitialize();
}


הקוד הזה רץ תחת Windows Service
הבעיה היא ש ה hot key לא מגיב.
שאני מריץ את אותו קוד תחת ה console session זה עובד לי
בwindows 7 הקוד עובד בלי שם בעיה
האם אני עושה משהוא לא בסדר או שיש באג בwindows 8 ?

נבדק תחת build 8400 32bit
תודה מראש
 

פרסאוס

New member
אין לי ניסיון ב 8 אבל יש לי מיני רעיון

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

liran22

New member
השירות שלי מופעל עם אנטרציה עם הdesktop

,מאז ומתמיד הוא עובד כך
אבל רק הקיצור hot key לא עובד
אם אני לוחץ על האיקון הקישור עובד
אז כנראה מדובר במשהוא שקשור לרישום events של המקלדת
יש דרך לברר איזה קשים רשומים במערכת?
 

liran22

New member
עידכון

מסתבר שהhotkey מתחיל לעבוד אחרי logoff של משתמש והתחברות מחדש.
אני די סבור שזה קשור לעובדה שרישום של הקובץ lnk במערכת לא הושלם כמו שצריך ורק אחרי ניתוק (סגירת משאבים) הevent נרשם במערכת.
השאלה האם יש דרך לראות את כול ה hotkeys שרשומים ב windows?
 

פרסאוס

New member
תצטרך לפרט יותר

מה העניין של יצירה חוזרת ונשנית של קיצור הדרך?
האם העניין משתנה ממשתמש למשתמש?
משהו לא ברור בשאלה שלך.
 

liran22

New member
אני אנסה לפרט יותר

יש לי שירות שיותר קיצור דרך בהמצעות אוביקט com
אחת האופציות של קובץ הקיצור דרך lnk זה hot key לדוגמה alt+f6
שאני לוחץ על השילוב הזה האפלקציה מופעלת
בחלנות 7 הכול עבד חלק
בחלנות 8 הקובץ נוצר אבל הhot key לא מגיב עד איתחול המחשב
השאלה חמה זה קורה?
 

פרסאוס

New member
שוב, היות ואין לי נסיון עם 8 אני רק יכול לנחש

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

liran22

New member
אם אני יוצא מהמשתמש זה עובד לי

גם אם אני מתקין את זה שאף משמש לא מחובר למערכת ואז נכנס עם משתמש זה עובד
 

liran22

New member
אבל לפי התעוד של ה MSDN

אין שום flush לאוביקט ה COM שיוצר את הקובץ
אתה יכול להעיף מבט הפוסט הראשון של יצירת קובץ ה lnk
אז זה זה אומר שיש באג בwindows 8?
 

פרסאוס

New member
אני מניח שיש יותר מ1

תבדוק, אולי הוא מתועד. לא ראיתי לינק ל8 בשום מקום בהודעה.
 

פרסאוס

New member
אתה צריך לחפש באג רפורט

ולא API רגיל. יותר מזה לא אוכל לעזור עד שיגיע אלי עותק של 8.
על פניו, זה נראה כמו באג אם זה עובד תחת 7 ולא תחת 8.
 
למעלה