某種情況下我們的應用程式需要呼叫別人的應用程式,如果對方的應用程式已經開啟了,如果我的程式每次呼叫它之後,視窗就會多一個,為了防止這個的情況,所以只好用我的程式偵測該應用程式是否已經存在,如果存在就把該偵測完的應用程式浮在最上面。
一、 如何偵測其他應用程式
以下是示範偵測其應用名稱『application.exe』,只需檔案名稱
Process[] telerecProcs = Process.GetProcessesByName("application");
if (telerecProcs.Length > 0)
{
bringToFront("Application"); //填入視窗的Title Name
}
else
{
Process sample = new Process();
sample.StartInfo.FileName
= " application.exe ";
sample.Start();
}
|
二、 如何控制其他應用程式,並控制它浮在最上面
l 引用System32 的函式庫
[DllImport("user32.dll", SetLastError = true)]
static extern bool BringWindowToTop(IntPtr hWnd);
[DllImport("user32.dll", SetLastError = true)]
static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
[DllImport("USER32.DLL", CharSet = CharSet.Unicode)]
public static extern IntPtr FindWindow(String lpClassName, String lpWindowName);
|
l 使用的範例
public static void bringToFront(string title)
{
// Get a handle to the Calculator application.
IntPtr handle = FindWindow(null, title);
// Verify that Calculator is a running process.
if (handle == IntPtr.Zero)
{
return;
}
BringWindowToTop(handle); // 將視窗浮在最上層
ShowWindow(handle, 3); // 將視窗最大化
}
|
ü
FindWindow參數title : 視窗的名稱 傳入
ü BringWindowToTop 參數 handle : (IntPtr) FindWindow
物件傳入
ü
ShowWindow 參數nCmdShow : 有0~11不同的視窗行為,大家可以參考https://msdn.microsoft.com/zh-tw/library/windows/desktop/ms633548(v=vs.85).aspx
希望對大家有所幫助囉~ 謝謝各位的到訪。
沒有留言:
張貼留言