Im Grunde habe ich Konsolen-App, die eine Aufgabe ausführt, die ein paar Minuten dauert. Ich möchte es in der Taskleiste blinken lassen, um mich wissen zu lassen, wenn es fertig ist.Gibt es eine Möglichkeit, ein Konsolenfenster in der Taskleiste programmatisch blinken zu lassen
Antwort
Mit den answer that @Zack posted und another one to find the handle of a console app kam ich auf diese und es funktioniert super.
class Program
{
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool FlashWindowEx(ref FLASHWINFO pwfi);
[StructLayout(LayoutKind.Sequential)]
public struct FLASHWINFO
{
public UInt32 cbSize;
public IntPtr hwnd;
public UInt32 dwFlags;
public UInt32 uCount;
public Int32 dwTimeout;
}
public const UInt32 FLASHW_ALL = 3;
static void Main(string[] args)
{
Console.WriteLine("Flashing NOW");
FlashWindow(Process.GetCurrentProcess().MainWindowHandle);
Console.WriteLine("Press any key to continue");
Console.ReadKey();
}
private static void FlashWindow(IntPtr hWnd)
{
FLASHWINFO fInfo = new FLASHWINFO();
fInfo.cbSize = Convert.ToUInt32(Marshal.SizeOf(fInfo));
fInfo.hwnd = hWnd;
fInfo.dwFlags = FLASHW_ALL;
fInfo.uCount = UInt32.MaxValue;
fInfo.dwTimeout = 0;
FlashWindowEx(ref fInfo);
}
}
lol, ich denke, das ist einfacher als PInvoking, um den Griff zu bekommen – Davy8
Sieht aus wie 3 verschiedene Möglichkeiten, den Fenstergriff zu bekommen, aber ich mag deine besten, da es nicht ' tPInvozieren, es so zu tun, es zu akzeptieren. – Davy8
Wow. Ich habe die P/Invoke-Methode verwendet, um den Fenster-Handle des Konsolenfensters abzurufen, lol. http://msdn.microsoft.com/en-us/library/ms683175(VS.85).aspx – Zack
die Antwort in der Frage Kombination @ Zacks Kommentar verknüpft in und getting the hwnd of a console window using this konnte ich es zum Laufen bringen. Dies ist die Klasse I erstellt:
public static class FlashWindow
{
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool FlashWindowEx(ref FLASHWINFO pwfi);
[DllImport("kernel32.dll")]
static extern IntPtr GetConsoleWindow();
[StructLayout(LayoutKind.Sequential)]
public struct FLASHWINFO
{
public UInt32 cbSize;
public IntPtr hwnd;
public UInt32 dwFlags;
public UInt32 uCount;
public UInt32 dwTimeout;
}
public const UInt32 FLASHW_ALL = 3;
public static void Flash()
{
FLASHWINFO fInfo = new FLASHWINFO();
fInfo.cbSize = Convert.ToUInt32(Marshal.SizeOf(fInfo));
fInfo.hwnd = GetConsoleWindow();
fInfo.dwFlags = FLASHW_ALL;
fInfo.uCount = UInt32.MaxValue;
fInfo.dwTimeout = 0;
FlashWindowEx(ref fInfo);
}
}
Es ist immer blinkt nicht aufhören, bis es geschlossen ist, aber das war für meine Zwecke nicht wichtig.
Ich lese, dass es wasn't possible to get the window handle of a console window durch irgendwelche direkte Mittel, aber es scheint in .NET tatsächlich ziemlich einfach zu sein. Also, es ist so ziemlich das gleiche wie this question:
class Program
{
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool FlashWindowEx(ref FLASHWINFO pwfi);
[StructLayout(LayoutKind.Sequential)]
public struct FLASHWINFO
{
public UInt32 cbSize;
public IntPtr hwnd;
public UInt32 dwFlags;
public UInt32 uCount;
public UInt32 dwTimeout;
}
public const UInt32 FLASHW_STOP = 0;
public const UInt32 FLASHW_CAPTION = 1;
public const UInt32 FLASHW_TRAY = 2;
public const UInt32 FLASHW_ALL = 3;
public const UInt32 FLASHW_TIMER = 4;
public const UInt32 FLASHW_TIMERNOFG = 12;
static void Main(string[] args)
{
// Give you a few seconds to alt-tab away :)
Thread.Sleep(2000);
// Flash on the task bar, until the window becomes the foreground window.
// Constants for other behaviors are defined above.
FLASHWINFO fInfo = new FLASHWINFO();
fInfo.cbSize = Convert.ToUInt32(Marshal.SizeOf(fInfo));
fInfo.hwnd = Process.GetCurrentProcess().MainWindowHandle;
fInfo.dwFlags = FLASHW_TRAY | FLASHW_TIMERNOFG;
fInfo.uCount = UInt32.MaxValue;
fInfo.dwTimeout = 0;
FlashWindowEx(ref fInfo);
// Wait for input so the app doesn't finish right away.
Console.ReadLine();
}
}
- 1. Gibt es eine Möglichkeit, eine Python-Konsolenanwendung in der Taskleiste von Windows zu flashen?
- 2. Gibt es eine Möglichkeit, meine WCF-Einstellungen programmatisch zu setzen?
- 3. CATextLayer NSBackGroundColorAttributeName gibt es eine Möglichkeit, es funktioniert zu lassen?
- 4. Gibt es eine Möglichkeit, um programmatisch einen UILabel zu lassen seine intrinsische Inhaltsgröße bestimmt
- 5. Gibt es eine einfache Möglichkeit, das Alphabet programmatisch zu erhalten?
- 6. Gibt es eine Möglichkeit, MDBs programmatisch zu konfigurieren?
- 7. Gibt es eine Möglichkeit, einen Prozess "aufwärmen" zu lassen?
- 8. XAMARIN (C#) - gibt es eine Möglichkeit, TextView programmatisch zu unterstreichen?
- 9. Gibt es eine Möglichkeit, Asio ohne Boost arbeiten zu lassen?
- 10. Gibt es eine Möglichkeit, den LaunchScreen programmatisch zu kodieren
- 11. Gibt es eine Möglichkeit, Apache langsame Anforderungen protokollieren zu lassen?
- 12. WPF - Gibt es eine Möglichkeit, eine Bindung programmatisch auszuwerten?
- 13. Gibt es eine Möglichkeit, Text in einem TextView programmatisch auszuwählen?
- 14. Gibt es eine Möglichkeit, die URL der Website in der ONET.XML-Datei erstellen zu lassen?
- 15. Stoppe die Taskleiste blinkend
- 16. Gibt es eine Möglichkeit, ein Plugin Linien zwischen nummerierten Zeilen in Atom anzeigen zu lassen?
- 17. Gibt es eine Möglichkeit, eine Eingabezeile nach der Eingabe verschwinden zu lassen? Python
- 18. Gibt es eine Möglichkeit, Datenbanktransaktionen zu beschleunigen?
- 19. Gibt es eine Möglichkeit, alle Größenabhängigkeiten programmatisch aufzulisten?
- 20. Gibt es eine Möglichkeit, eine Überwachungsfunktion den Namen der überwachten Datei abrufen zu lassen?
- 21. Gibt es eine Möglichkeit, ein PDO-Child-Objekt CustomException anstelle von PDOException auslösen zu lassen?
- 22. gibt es eine Möglichkeit, ein Muster in .dockerignore zu negieren?
- 23. Gibt es eine Möglichkeit, ein Swift-Skript mehrere Dateien verwenden zu lassen
- 24. Gibt es eine Möglichkeit, ein Array in Klasseneigenschaften zu konvertieren?
- 25. Gibt es eine Möglichkeit, eine Variable in LaTeX zu definieren?
- 26. Gibt es eine kostenlose Möglichkeit, RTF in PDF zu konvertieren?
- 27. Gibt es eine Möglichkeit, ein TreeView immer vollständig erweitert erscheinen zu lassen?
- 28. Gibt es eine effiziente Möglichkeit, eine Schaltfläche automatisch in die Zwischenablage kopieren zu lassen? (JavaScript)
- 29. Gibt es eine Möglichkeit, eine Textdatei zu schreiben und sie durch die vorherige ersetzen zu lassen?
- 30. Gibt es programmatisch eine Möglichkeit zu bestimmen, wann eine App zuletzt in Android geöffnet wurde?
Hier eine Lösung ist, die eine Hilfe sein kann: http://stackoverflow.com/questions/73162/how-to-make-the-taskbar-blink- my-application-like-messenger-does-when-a-new-messa – Zack