C#使用WinAPI中 WinExec 調用外部exe程序

1、添加引用

using System.Runtime.InteropServices;//調用外部的DLL

2、定義win32API

//調用exe
[DllImport("kernel32.dll")]
public static extern int WinExec(string exeName, int operType);

//生成執行數據
private void generateExecuteData_ItemClick(object sender, ItemClickEventArgs e)
{
    WinExec(@"C:\ExecuteRecords\OrdersExecutionRecords.exe", 5);

WinExec說明
1、方法的返回值。
方法成功,返回>31的整數值;
方法失敗,返回:
 

返回結果 說明
0 系統內存或資源不夠
ERROR_BAD_FORMAT 非法的exe程序
ERROR_FILE_NOT_FOUND 文件未找到
ERROR_PATH_NOT_FOUND 路徑未找到

2、參數
方法有兩個參數:第一個參數lpCmdLine爲路徑+程序、第二個參數nCmdShow爲展示方式。

2.1lpCmdLine
搜索順序:
1、參數指定路徑
2、應用所在路徑
3、當前路徑
4、system路徑(可調用GetSystemDirectory方法查詢)
5、window路徑(可調用GetWindowsDirectory方法查詢)
6、環境變量中path路徑
2.2uCmdShow
具體說明如下

參數 說明
0 窗體隱藏
1 激活並展示一個窗體。不管窗體爲最小化或最大化狀態,系統將其恢復至原始大小及位置。當初次使用時,建議使用本值
2 激活窗體,並最小化
3 最大化窗體
3 激活窗體,並最大化
4 展示窗體的大小及位置爲最常用大小及位置
5 展示窗體
6 最小化窗體後,激活Z軸上的上一層窗體
7 展示窗體,並設爲最小化
8 展示窗體的大小及位置爲當前大小及位置
9 重新初始化窗體
10  
11 最小化窗體

 

 

是一個方法,但是我測試的是打開最大化的第三方exe程序時,想讓第三方程序隱藏,用了所有的參數測試,不成功,問題猜測應該是第三方程序的框架最大化時框架有特定的設計,如前端顯示、最上層等。

最終測試成功主要是因爲延時問題,當你打開第三方程序後,不能立即去隱藏,需要電腦能夠有時間獲取到第三方程序的Handle時才能去隱藏。否則一直不成功!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章