העלאת אפליקציה ל TOP

Milo M

New member
העלאת אפליקציה ל TOP

אני מגביל אפליקציה שאני יוצר למופע אחד. האם יש דרך להעלות את האפליקציה ל TOP אם מנסים לפתוח אותה שוב? קוד הבדיקה הוא:
BOOL CRunStudioApp::IsFirstInstance() { HANDLE hMapping; BOOL bRet = TRUE; hMapping = CreateFileMapping( (HANDLE) 0xffffffff, NULL, PAGE_READONLY, 0, 32, "RunStudio" ); if( hMapping ) { if( GetLastError() == ERROR_ALREADY_EXISTS ) { // // the app is already running. // bRet = FALSE; } } else { // // Some other error; handle error. // bRet = FALSE; } return bRet; }​
סביבת העבודה היא MFC בתודה מראש
 

gilad_no

New member
הסבר

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

Milo M

New member
תודה אבל זה מה שהיה חסר לי

ShowWindow(hWnd,SW_RESTORE);​
טיפשי ופשוט אבל...
 

DadleFish

New member
אבל זה לא נכון,

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

Milo M

New member
סדר

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