調查低級別的Win API調用,他們可能會爲您提供解決方案。
例如,使用Spy ++可以顯示窗口名稱,然後您可以搜索並關閉。然後使用WINDOWS API標註...
using System.Runtime.InteropServices;
// Get a handle to an application window.
[DllImport("USER32.DLL", CharSet = CharSet.Unicode)]
private static extern IntPtr FindWindow(string lpClassName,
string lpWindowName);
// Activate an application window.
[DllImport("USER32.DLL")]
private static extern bool SetForegroundWindow(IntPtr hWnd);
然後在後臺線程中編寫一個查找這些窗口並關閉它們的進程。
//Some PsuedoCode, note loop should have a cancel condition!
while (true)
{
//Get a handle.
handle = FindWindow(windowClassName, windowName);
//We found the window, close it
if (handle != IntPtr.Zero)
{
//Send Close Command
SetForegroundWindow(handle);
SendKeys.SendWait("%{F4}");
}
//Wait 200ms seconds before trying again
System.Threading.Thread.Sleep(200);
}
你可能可以在你的應用程序中做一些這樣的hackish解決方案。
請注意,您必須將windowClassName(s)和windowName(s)存儲在某種配置文件中,或將它們硬編碼到您的應用程序中。
您可以隨時以編程方式監視特定窗口並單擊它們上的按鈕。這是一個麻煩,但它會解決要求用戶運行其他應用程序的負擔。 – 2011-05-12 14:43:37
是的,這是一個很好的觀點。編輯。 – dlev 2011-05-12 14:45:57
我曾考慮過這個想法,但希望有人會說,哦,只需將這個「supressstupidpopup」屬性添加到你的dllimport中,你就會好起來的。我認爲你們雖然有錢。我會拭目以待,看看有人提出了一些神奇的東西。如果沒有,我已經寫信給圖書館的維護人員,但我並沒有屏住呼吸:) – 2011-05-12 14:57:16