我試圖創建一個基本的宏記錄/回放系統。如果我想選擇一個開放的應用程序(如記事本)將其帶到前面輸入,我將如何去調用它的名稱或其他可以參考的屬性?C#如何選擇一個打開的應用程序窗口
回答
這裏是一個例子。基本上,得到Process,然後調用SetForegroundWindow它是MainWindowHandle:
using System;
using System.Diagnostics;
using System.Linq;
using System.Runtime.InteropServices;
namespace StackOverflow.Test
{
class Program
{
static void Main(string[] args)
{
var proc = Process.GetProcessesByName("notepad").FirstOrDefault();
if (proc != null && proc.MainWindowHandle != IntPtr.Zero)
SetForegroundWindow(proc.MainWindowHandle);
}
[DllImport("user32")]
private static extern bool SetForegroundWindow(IntPtr hwnd);
}
}
你應該知道的限制:
系統限制哪些進程可以設置前臺窗口。的方法,可以設置前臺窗口僅當下列條件之一爲真:
- 過程是前臺進程。
- 該過程由前臺進程啓動。
- 該進程收到最後一個輸入事件。
- 沒有前臺進程。
- 正在調試前臺進程。
- 前景未鎖定(請參閱LockSetForegroundWindow)。
- 前臺鎖定超時已過期(請參閱SystemParametersInfo中的SPI_GETFOREGROUNDLOCKTIMEOUT)。
- 沒有菜單處於活動狀態。
您可以從Process.GetProcesses
開始 - 這會給你一個所有正在運行的進程的列表。檢查每個過程的不同屬性 - 這應該讓你去。
我面臨的問題是,我如何使該進程窗口成爲活動窗口。 – ashurexm 2010-10-19 19:00:23
簽出名爲「Autohotkey」的應用程序,它可以滿足您的所有需求,併爲您節省大量編程時間,而且免費。
如果AutoHotkey的不能解決你的問題,或者如果你這樣做是出於學習目的,有人問一個「全新」的應用程序等,也有一些鏈接可能會有所幫助:
Bringing Window to the Front in C# using Win32 API http://social.msdn.microsoft.com/Forums/en-US/vssmartdevicesvbcs/thread/92823775-29f6-4950-bf06-d2f1ca89ec8d(它說「移動窗口」,但仍然可以幫助)
希望它有幫助。
我已經看過autohotkey。這絕對是一個有用的外觀應用程序,問題在於,由於第三方的限制和未來的預期用途(基於關閉選項列表的宏輸入等),這必須是內部類型的東西。 – ashurexm 2010-10-19 18:59:36
- 1. 同一個應用程序的兩個窗口不能打開
- 2. `start`程序打開一個新窗口
- 3. 如何在Windows窗體應用程序中打開一個新窗口
- 4. .net C#windows窗體應用程序:打開彈出窗口
- 5. Macintosh C創建一個導航窗口來選擇一個應用程序
- 6. 在另一個應用程序後面打開窗口
- 7. 如何打開窗口並在該窗口中選擇對象?
- 8. 鏈接到應用程序選項卡不打開一個新窗口
- 9. 如何從一個窗口打開一個窗口
- 10. 如何阻止用戶打開一個已打開的窗口?
- 11. 如何在啓動時在Cocoa應用程序中打開一個新窗口
- 12. 如何使用IIS應用程序窗口10 CMD使用C#打開
- 13. 如何在lightswitch應用程序中打開瀏覽器窗口?
- 14. 打開一個線程內的窗口
- 15. 選擇哪個監視器打開一個JavaFX窗口
- 16. 如何打開Visual C++控制檯應用程序的新控制檯窗口?
- 17. QT:如何打開一個新窗口
- 18. C#窗口應用程序
- 19. 打開一個WPF窗口應用程序窗體VS擴展命令
- 20. 在另一個應用程序中打開一個應用程序的.exe窗口
- 21. 如何在Windows中以全屏模式激活另一個應用程序時打開應用程序窗口?
- 22. C# - 如何打開Excel應用程序?
- 23. 如何在選項選擇上打開模型窗口?
- 24. 防止用戶打開多個窗口到同一個web應用程序
- 25. 打開一個新窗口
- 26. 打開一個EXE窗口
- 27. 如何關閉第一窗口,並打開不同的窗口,但在相同的應用程序(如Skype)
- 28. Javascript打開一個窗口打開窗口
- 29. 如何在項目中打開另一個窗口(Xcode窗口)?
- 30. ACCESS 2007 - 如何打開VBA中的選擇窗口對話框
非常感謝您的非常詳細回答。我會立即嘗試執行此操作。 – ashurexm 2010-10-19 19:40:28
這似乎可行,但我遇到了一個特殊問題。我已經在這裏問它作爲一個新的問題:http://stackoverflow.com/questions/3973532 – ashurexm 2010-10-19 23:13:10