在編寫Delphi的應用程序中,常常涉及對其它Windows應用程序的操作。例如,在數據庫的管理系統中,財務人員需要使用計算器,即可調用Windows內含的計算器功能,若每次使用,均通過“開始/程序/附件/計算器”來打開計算器,顯然是非常繁瑣的,當然可以考慮在桌面上建立一“計算器”的快捷方式,且定義一熱鍵,需要使用計算器時,就按下這個熱鍵來打開“計算器”。但由于“計算器”是一個“非模式”窗口程序,即每運行一次計算器,就會打開一個“計算器”窗口,這樣的結果是桌面上出現了幾十個“計算器”,不僅大量增加了系統內存的開銷,而且也不方便用戶的操作。在Delphi中可較輕易地控制,效果非常完美。下面就兩個主要問題提出實現方法。 1.如何控制設計? 新建一表單,在表單中放入兩個按鈕,其Caption分別為“打開”(即啟動“計算器”)和“關閉”(退出結束),且為它們分別添加Click事件處理。詳見表單Form1及單元文件Unit1。 其中,最主要的幾條語句有: fwnd:=FindWindow('SciCalc','計算器'); 函數原型為(詳見Delphi的幫助): HWND FindWindow( LPCTSTR lpClassName, // pointer to class name LPCTSTR lpWindowName // pointer to window name ); 此處,'SciCalc' 為計算器的類名,'計算器'為計算器的窗口標題} setWindowPos(fwnd,HWND_NOTOPMOST,0,0,0,0,SWP_SHOWWINDOW or SWP_NOSIZE or SWP_NOMOVE); 函數原型為: BOOL SetWindowPos( HWND hWnd, // handle of window HWND hWndInsertAfter, // placement-order handle int X, // horizontal position int Y, // vertical position int cx, // width int cy, // height UINT uFlags // window-positioning flags ); ShowWindow(fwnd,SW_RESTORE); //顯示已打開的「計算器」 函數原型為: BOOL ShowWindow( HWND hWnd, // handle of window int nCmdShow // show state of window ); Ret:=WinExec('c:windowscalc.exe',SW_SHOWNORMAL); //啟動計算器 函數原型為: UINT WinExec( LPCSTR lpCmdLine, // address of command line UINT uCmdShow // window style for new application ); 運行“計算器”程序并檢測返回值(從而利用返回值來判斷可能發生的錯誤)