none
העברת פוקוס לגליון אקסל RRS feed

  • שאלה

  • שלום,

    אני פותח אקסל בקוד C#, אבל אני מקבל אותו מאחורי האפליקציה.

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

    אגב, בגרסת אקסל 2003 לא היתה לי את הבעיה, היא התחילה לאחר ששידרגתי ל 2010

    תודה מראש

    יובל

    יום שלישי 07 אוגוסט 2012 21:38

תשובות

  • [DllImport("user32.dll")]
    [return: MarshalAs(UnmanagedType.Bool)]
    static extern bool SetForegroundWindow(IntPtr hWnd);
    
    private void button1_Click(object sender, EventArgs e)
    { 
        Process process = new Process();
        process.StartInfo.FileName = @"c:\myfile.txt";
        process.Start();
    
        process.WaitForInputIdle(); //this is the key!!
    
        SetForegroundWindow(this.Handle);
    }

    יום חמישי 09 אוגוסט 2012 07:55

כל התגובות

  • הי שלום,

    אני עונה לך בקצרה, אבל זה יספיק לך בשביל ל"גגל" קצת ולפתור את הבעיה.

    אתה צריך לעשות לולאה על כל הישומים הפתוחים (hwnd ) ולמצוא מהו הישום ששמו מכיל "Excel"

    כשאתה מוצא אותו - תהפוך אותו לאקטיבי, וסיימת.

    בברכה

    איל 

    תותח אקסל

    יום חמישי 09 אוגוסט 2012 05:06
  • [DllImport("user32.dll")]
    [return: MarshalAs(UnmanagedType.Bool)]
    static extern bool SetForegroundWindow(IntPtr hWnd);
    
    private void button1_Click(object sender, EventArgs e)
    { 
        Process process = new Process();
        process.StartInfo.FileName = @"c:\myfile.txt";
        process.Start();
    
        process.WaitForInputIdle(); //this is the key!!
    
        SetForegroundWindow(this.Handle);
    }

    יום חמישי 09 אוגוסט 2012 07:55