public void LeerVentanas(List <VentanasActivas.sVentana> lista) { ListaVentanas = lista; //Delegado con el proceso auxiliar de búsqueda EnumWindowsProc getHandlerVentana = new EnumWindowsProc(_GetProcessWindowHandlerLista); //Informacion auxiliar AuxInfo informacion = new AuxInfo(); /*Enumerar las ventanas buscando la que coincida con * el id de proceso contenido en informacion */ EnumWindows(getHandlerVentana, informacion); return; }
public void ListWindows(ListBox lst) { lstAPP = lst; //Delegado con el proceso auxiliar de búsqueda EnumWindowsProc getHandlerVentana = new EnumWindowsProc(_GetProcessWindowHandler1); //Informacion auxiliar AuxInfo informacion = new AuxInfo(); /*Enumerar las ventanas buscando la que coincida con * el id de proceso contenido en informacion */ EnumWindows(getHandlerVentana, informacion); return; }
/// <summary> /// Obtiene el handler de la ventana asociada a un proceso /// Este procedimiento es solo de utileria para usarse con EnumWindows /// y no deberia ser invocado directamente /// </summary> /// <param name="hwnd" />handler de la ventana actual /// <param name="info" />informacion auxiliar para el proceso /// <returns>false si encuentra la ventana, true sino</returns> private static bool _GetProcessWindowHandler(IntPtr hwnd, AuxInfo info) { int processID; GetWindowThreadProcessId(hwnd, out processID); if (processID == info.processID) { info.handler = hwnd; return(false); } else { info.handler = IntPtr.Zero; return(true); } }
private static bool _GetProcessWindowHandler1(IntPtr hwnd, AuxInfo info) { if (hwnd != IntPtr.Zero) { StringBuilder s = new StringBuilder(201); GetWindowText(hwnd, s, 200); if (s.ToString() != "") { if (IsWindowVisible(hwnd)) { lstAPP.Items.Add(s.ToString()); lstAPP.Refresh(); } } } return(true); }
private static bool _GetProcessWindowHandlerLista(IntPtr hwnd, AuxInfo info) { if (hwnd != IntPtr.Zero) { StringBuilder s = new StringBuilder(201); if (IsWindowVisible(hwnd)) { GetWindowText(hwnd, s, 200); if (s.ToString() != "") { VentanasActivas.sVentana Ventana = new VentanasActivas.sVentana(); Ventana.Titulo = s.ToString(); Ventana.hWnd = hwnd; ListaVentanas.Add(Ventana); } } } return(true); }
/// <summary> /// Devuelve el handler de la ventana asociada al proceso /// </summary> /// <param name="pid" />Id del proceso /// <returns>handler de la ventana</returns> public static IntPtr GetProcessWindowHandler(IntPtr hWndParent, int pid) { //Delegado con el proceso auxiliar de búsqueda ChildWindows getHandlerVentana = new ChildWindows(_GetProcessWindowHandler); //Informacion auxiliar AuxInfo informacion = new AuxInfo(); informacion.processID = pid; /*Repetir bucle hasta que este presente la ventana del proceso *(puede que la enumeracion se realice y windows aún no haya creado * la primera ventana del proceso o bien no la haya hecho visible, * por lo cual se debe repetir el bucle hasta encontrala)*/ do { /*Enumerar las ventanas buscando la que coincida con * el id de proceso contenido en informacion */ EnumChildWindows(hWndParent, getHandlerVentana, informacion); } while (informacion.handler == IntPtr.Zero || !IsWindowVisible(informacion.handler)); return(informacion.handler); }
private static extern bool EnumChildWindows(IntPtr hWndParent, ChildWindows lpEnumFunc, AuxInfo lParam);
// ********************************************************************** public void Write(DateTime dateTime, AuxInfo auxInfo) { dw.WriteRecHeader(sid, dateTime); // -------------------------------------------------- long milliseconds = DateTimeHelper.ToMs(auxInfo.DateTime); AuxInfoFlags flags = AuxInfoFlags.None; // -------------------------------------------------- if (lastMilliseconds != milliseconds) { flags |= AuxInfoFlags.DateTime; } if (lastAskTotal != auxInfo.AskTotal) { flags |= AuxInfoFlags.AskTotal; } if (lastBidTotal != auxInfo.BidTotal) { flags |= AuxInfoFlags.BidTotal; } if (lastOI != auxInfo.OI) { flags |= AuxInfoFlags.OI; } if (lastPrice != auxInfo.Price) { flags |= AuxInfoFlags.Price; } if (lastHiLimit != auxInfo.HiLimit || lastLoLimit != auxInfo.LoLimit || lastDeposit != auxInfo.Deposit) { flags |= AuxInfoFlags.SessionInfo; } if (lastRate != auxInfo.Rate) { flags |= AuxInfoFlags.Rate; } if (auxInfo.Message != null) { flags |= AuxInfoFlags.Message; } // -------------------------------------------------- dw.Write((byte)flags); // -------------------------------------------------- if ((flags & AuxInfoFlags.DateTime) != 0) { dw.WriteGrowing(milliseconds, ref lastMilliseconds); } if ((flags & AuxInfoFlags.AskTotal) != 0) { dw.WriteLeb128(auxInfo.AskTotal - lastAskTotal); lastAskTotal = auxInfo.AskTotal; } if ((flags & AuxInfoFlags.BidTotal) != 0) { dw.WriteLeb128(auxInfo.BidTotal - lastBidTotal); lastBidTotal = auxInfo.BidTotal; } if ((flags & AuxInfoFlags.OI) != 0) { dw.WriteLeb128(auxInfo.OI - lastOI); lastOI = auxInfo.OI; } if ((flags & AuxInfoFlags.Price) != 0) { dw.WriteLeb128(auxInfo.Price - lastPrice); lastPrice = auxInfo.Price; } if ((flags & AuxInfoFlags.SessionInfo) != 0) { dw.WriteLeb128(auxInfo.HiLimit); dw.WriteLeb128(auxInfo.LoLimit); dw.Write(auxInfo.Deposit); lastHiLimit = auxInfo.HiLimit; lastLoLimit = auxInfo.LoLimit; lastDeposit = auxInfo.Deposit; } if ((flags & AuxInfoFlags.Rate) != 0) { dw.Write(auxInfo.Rate); lastRate = auxInfo.Rate; } if ((flags & AuxInfoFlags.Message) != 0) { dw.Write(auxInfo.Message); } // -------------------------------------------------- }
private static extern bool EnumWindows(EnumWindowsProc lpEnumFunc, AuxInfo lParam);
// ********************************************************************** public void Write(DateTime dateTime, AuxInfo auxInfo) { dw.WriteRecHeader(sid, dateTime); // -------------------------------------------------- long milliseconds = DateTimeHelper.ToMs(auxInfo.DateTime); AuxInfoFlags flags = AuxInfoFlags.None; // -------------------------------------------------- if(lastMilliseconds != milliseconds) flags |= AuxInfoFlags.DateTime; if(lastAskTotal != auxInfo.AskTotal) flags |= AuxInfoFlags.AskTotal; if(lastBidTotal != auxInfo.BidTotal) flags |= AuxInfoFlags.BidTotal; if(lastOI != auxInfo.OI) flags |= AuxInfoFlags.OI; if(lastPrice != auxInfo.Price) flags |= AuxInfoFlags.Price; if(lastHiLimit != auxInfo.HiLimit || lastLoLimit != auxInfo.LoLimit || lastDeposit != auxInfo.Deposit) { flags |= AuxInfoFlags.SessionInfo; } if(lastRate != auxInfo.Rate) flags |= AuxInfoFlags.Rate; if(auxInfo.Message != null) flags |= AuxInfoFlags.Message; // -------------------------------------------------- dw.Write((byte)flags); // -------------------------------------------------- if((flags & AuxInfoFlags.DateTime) != 0) dw.WriteGrowing(milliseconds, ref lastMilliseconds); if((flags & AuxInfoFlags.AskTotal) != 0) { dw.WriteLeb128(auxInfo.AskTotal - lastAskTotal); lastAskTotal = auxInfo.AskTotal; } if((flags & AuxInfoFlags.BidTotal) != 0) { dw.WriteLeb128(auxInfo.BidTotal - lastBidTotal); lastBidTotal = auxInfo.BidTotal; } if((flags & AuxInfoFlags.OI) != 0) { dw.WriteLeb128(auxInfo.OI - lastOI); lastOI = auxInfo.OI; } if((flags & AuxInfoFlags.Price) != 0) { dw.WriteLeb128(auxInfo.Price - lastPrice); lastPrice = auxInfo.Price; } if((flags & AuxInfoFlags.SessionInfo) != 0) { dw.WriteLeb128(auxInfo.HiLimit); dw.WriteLeb128(auxInfo.LoLimit); dw.Write(auxInfo.Deposit); lastHiLimit = auxInfo.HiLimit; lastLoLimit = auxInfo.LoLimit; lastDeposit = auxInfo.Deposit; } if((flags & AuxInfoFlags.Rate) != 0) { dw.Write(auxInfo.Rate); lastRate = auxInfo.Rate; } if((flags & AuxInfoFlags.Message) != 0) dw.Write(auxInfo.Message); // -------------------------------------------------- }