Oggi riesco a ottenere schermate di finestre minimizzate di applicazioni. Ad esempio, se apro Paint vedrò uno screenshot della finestra principale di Paint anche se Paint è ridotto a icona.C'è un modo per ottenere uno screenshot anche dai processi quando sono minimizzati?
Questa è la classe che ottiene il WindowsSnap è un codice di lunga po 'così ho aggiunto a Pastebin.com WindowSnap.cs
E il WindowSnapCollection classe anche aggiunto al Pastebin.com WindowSnapCollection.cs
E in cima form1 e costruttore che sto facendo: Variabili:
private Graphics g;
private Image img;
private Image imgClone;
Poi nel costruttore:
img = new Bitmap(pictureBoxSnap.Width, pictureBoxSnap.Height);
imgClone = new Bitmap(pictureBoxSnap.Width, pictureBoxSnap.Height);
Graphics g;
using (g = Graphics.FromImage(img))
{
g.Clear(Color.White);
}
pictureBoxSnap.Image = img;
this.listBoxSnap.Items.AddRange(WindowSnap.GetAllWindows(true, true).ToArray());
for (int i = listBoxSnap.Items.Count - 1; i >= 0; i--)
{
string tt = listBoxSnap.Items[i].ToString();
if (tt.Contains(" ,"))
{
listBoxSnap.Items.RemoveAt(i);
}
}
buttonSnap.Enabled = true;
string[] myList = new string[listBoxSnap.Items.Count];
for (int i = 0; i < listBoxSnap.Items.Count; i++)
{
string tt = listBoxSnap.Items[i].ToString();
int index = tt.LastIndexOf(",");
myList[i] = tt.Substring(0, index);
}
Alla fine, ho un elenco di applicazioni aperte screenshot della finestra applicazioni
E ho 65 processi in esecuzione ora ridotto al minimo mi chiedo la mia domanda è se posso ottenere in qualche modo anche gli screenshot dei processi al minimo? E non tutte le applicazioni.
Questo è uno screenshot che mostra il mio programma quando è in esecuzione. Ora posso ottenere tutti gli screenshot di Windows delle app minimizzate. Ma voglio sapere se e come è possibile ottenere anche tutti i processi, ad esempio ho 65 processi in esecuzione per ottenere gli screenshot di questi 65 processi o almeno quelli con interfaccia grafica. http://postimg.org/image/r1hz40v8d/ –
Puoi enumerare i processi usando 'Process.GetProcesses();' e elenca solo quei processi che hanno un handle di finestra principale diverso da zero, ad es. 'p.MainWindowHandle! = IntPtr.Zero'? – Loathing
Detestando sì, ho ricevuto 24 intptrs –