none
Default email client window cannot go to front in Windows Vista Business 64bit RRS feed

  • Question

  • I've developed a small C# application that will launch the default email client window by calling MAPISendMail API. I am facing a problem that the new launched email client window does not become in-front of other window but it's taskbar becomes flashing in orange colour for few time to alert user only. This situation happens in Windows Vista Business 64bit, I found that it works fine as expected, it becomes in-front of other window when i test it in Windows XP, Windows Vista 32bit, and Windows 7 64bit.

    When i set the ForegroundLockTimeout from 200000 to  0 of registry then restart the PC, I found that the default email client window (Microsoft Outlook) does become in-front of my application window. In addition, i tried with following way to launch the default email client window but it still did not become in-front of other window in Windows Vista Business 64bit. The SetForegroundWindow Windows APIs look like does not work in Windows Vista and above because security enhancement.

    Code:

    StringBuilder MsgBuilder = new System.Text.StringBuilder();
       MsgBuilder.Append("mailto:davidwoo1983@yahoo.com");
       MsgBuilder.Append("&cc=testcc@testcc.com,testcc1@testcc.com");
       MsgBuilder.Append("&bcc=testcc@testbcc.com,testcc1@testbcc.com");
       MsgBuilder.Append("&subject=this is test subject");
       MsgBuilder.Append("&body=this is test body");
       MsgBuilder.Append("&Attach=\"c:\\mailattach.txt\"");
    
       Process myProcess = new Process();
       myProcess.StartInfo.FileName = MsgBuilder.ToString();
       myProcess.StartInfo.UseShellExecute = true;
       myProcess.StartInfo.RedirectStandardOutput = false;
       myProcess.Start();
       SetForegroundWindow(myProcess.Handle);
       myProcess.Dispose();
    

    It is great if someone help to give advice and answer my doubts:

    1. The default email client window can become in-front of other window in Windows Vista 32bit but not in Windows Vista 64bit, Is it a normal behaviour?
    2. Without changing the default configuration of registry setting of Windows (ForegroundLockTimeout ), how can i make the default email client window becomes in-front of other window (IE window, window explorer, etc which do not set to TopMost)?

    Basic Information about the computer:
    Window Vista Business SP1, Intel(R) Core(TM) 2 Quad CPU Q8200 @ 2.33GHz, 4GB, 64-bit OS.

    Related Information:

    http://www.eggheadcafe.com/software/aspnet/31724323/bring-window-from-elevate.aspx
    http://msdn.microsoft.com/en-us/library/Aa480152.aspx#appcomp_topic12
    http://pcsupport.about.com/od/windowsxp/ht/stealingfocus02.htm
    http://msdn.microsoft.com/en-us/library/aa511446.aspx#buttons
    http://www.codeproject.com/KB/dotnet/Default_mail_client.aspx?msg=1676515#xx1676515xx
    http://stackoverflow.com/questions/1737664/how-to-open-program-through-c-program-and-give-this-program-focus

    Thursday, July 15, 2010 10:45 AM