[ Vertyg01 @ 13.09.2005. 13:41 ] @
Zanima me kako da prikazem trenutno aktivne prozore (aplikacije) i da se kao u task manageru mogu prebacivati izmedju aplikacija (switch to) ? |
[ Vertyg01 @ 13.09.2005. 13:41 ] @
[ makaze @ 14.09.2005. 15:00 ] @
informacije o trenutno pokrenutim procesima možeš dobiti vrlo lako. VS.NET olakšava posao oko toga...
evo ti primjer (VB kod): Code: Dim p As Process Dim outData As String For Each p In Process.GetProcesses() outData = "" outData = outData & p.Id & vbTab outData = outData & p.ProcessName & vbTab outData = outData & p.Threads.Count & vbTab outData = outData & p.BasePriority & vbTab outData = outData & p.TotalProcessorTime.ToString() & vbTab outData = outData & p.UserProcessorTime.ToString() & vbTab Console.Write(outData & vbNewLine) Next p ovo je samo brza demonstracija kako možeš izlistati info o procesima. potraži malo na netu i mislim da ćeš naći primjer kako da odradiš 'switch to' kod, pokupiš i prikazuješ ikone i ostale sitnice... woah! [ Shadowed @ 14.09.2005. 15:35 ] @
Malo bolja varijanta. Stedi resurse, brze radi i perciznija je.
Code: Dim p As Process Dim Procs() AsProcess Dim outData As String Procs = Process.GetProcesses() For Each p In Procs outData = "" outData = outData & p.Id & vbTab outData = outData & p.ProcessName & vbTab outData = outData & p.Threads.Count & vbTab outData = outData & p.BasePriority & vbTab outData = outData & p.TotalProcessorTime.ToString() & vbTab outData = outData & p.UserProcessorTime.ToString() & vbTab Console.Write(outData & vbNewLine) Next p [ havramm @ 15.09.2005. 00:25 ] @
Citat: Shadowed: Malo bolja varijanta. Stedi resurse, brze radi i perciznija je. Stvarno ne vidim razliku izmedju navedenih primera, osim eksplicitnog deklarisanja promenljive za niz procesa (koja se inace implicitno generise ukoliko se koristi kao u prvom primeru). A ako cemo vec o resursima - da li znate koliko se novih stringova kreiralo u ovim vasim primerima? Ja sam izbrojao 20 u svakoj iteraciji, mozda gresim - neka me neko ispravi... Razmislite malo o tome... ![]() [Ovu poruku je menjao havramm dana 15.09.2005. u 01:30 GMT+1] [ erkan @ 15.09.2005. 08:38 ] @
Da 20, sta preoprucujes,
StringBuilder? [ Shadowed @ 15.09.2005. 09:58 ] @
Zar se nece Process.GetProcesses() izvrziti svaki put na kraju petlje kada se proverava da li je p stigao do kraja? Zbog toga sam i naveo onaj drugi primer jer ce se tada izvrsiti samo jednom. Mada moguce je da "ispod haube" prvi primer radi isto sto sam ja uradio u drugom.
Sto se stringova tice, u pravu si ali sam ja hteo da ukazem na onaj prvi deo pa sam ostalo ostavio isto. [ havramm @ 15.09.2005. 11:51 ] @
Code: static void Main(string[] args) { foreach (Process p in Process.GetProcesses()) { Console.WriteLine(p.ProcessName); } } se prevodi u Code: locals init ([0] class [System]System.Diagnostics.Process p, [1] class [System]System.Diagnostics.Process[] CS$00000007$00000000, [2] int32 CS$00000008$00000001) IL_0000: call class [System]System.Diagnostics.Process[] [System]System.Diagnostics.Process::GetProcesses() // Poziva se samo jednom IL_0005: stloc.1 // i smesta u CS$00000007$00000000 IL_0006: ldc.i4.0 IL_0007: stloc.2 // kreira novu promenljivu (CS$00000008$00000001) koju ce da koristi za inkrementiranje IL_0008: br.s IL_001d // bezuslovno ide na IL_001d - pocetak petlje IL_000a: ldloc.1 IL_000b: ldloc.2 IL_000c: ldelem.ref // uzima referencu i-tog elementa u nizu procesa IL_000d: stloc.0 // i smesta u p IL_000e: ldloc.0 IL_000f: callvirt instance string [System]System.Diagnostics.Process::get_ProcessName() IL_0014: call void [mscorlib]System.Console::WriteLine(string) IL_0019: ldloc.2 IL_001a: ldc.i4.1 IL_001b: add // inkrementira CS$00000008$00000001 IL_001c: stloc.2 IL_001d: ldloc.2 IL_001e: ldloc.1 IL_001f: ldlen IL_0020: conv.i4 IL_0021: blt.s IL_000a // poredi CS$00000008$00000001 sa duzinom niza - ukoliko je manje ide na IL_000a IL_0023: ret Tako da se Process.GetProcesses() izvrsava samo jednom posto se interno sve odvija na neki nacin kao for petlja, tj. - for (int i = 0; i < Process.GetProcesses().Length; i++)... Pozdrav! Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|