我的程序运行的时候,打印功能会调用EXCEL来生成报表。但是调用EXCEL的时候,excel只能保持在失去焦点的状态;
有没有办法使它一开始就处于活动(得到焦点)的状态?
是不是要用API啊?

解决方案 »

  1.   

    The SetActiveWindow function activates a window. HWND SetActiveWindow(    HWND hWnd  // handle of window to activate
       );
     ParametershWndIdentifies the top-level window to be activated.  Return ValuesIf the function succeeds, the return value is the handle of the window that was previously active. ResThe SetActiveWindow function activates a window, but not if the application is in the background. The window will be brought into the foreground (top of Z order) if the application is in the foreground when it sets the activation. 
    If the window identified by the hWnd parameter was created by the calling thread, the active window status of the calling thread is set to hWnd. Otherwise, the active window status of the calling thread is set to NULL.The SetForegroundWindow window function, on the other hand, activates a window and forces it into the foreground. An application should only call SetForegroundWindow if it needs to display critical errors or information that needs the user's immediate attention . See AlsoGetActiveWindow, SetForegroundWindow, WM_ACTIVATE
      

  2.   

    用Findow(nil,‘excel标题’)来得到打开的excel句柄。然后用
    SetForegroundWindow(
        HWND hWnd  // handle of window to bring to foreground
       );即可。