• 6 odgovora
  • 4.167 pregleda
Prikaz trenutno aktivnih aplikacija ? 13.09.2005. u 13:41 · pre 257 meseci #1
Zanima me kako da prikazem trenutno aktivne prozore (aplikacije) i da se kao u task manageru mogu prebacivati izmedju aplikacija (switch to) ?
Re: Prikaz trenutno aktivnih aplikacija ? 14.09.2005. u 15:00 · pre 256 meseci #2
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!
Re: Prikaz trenutno aktivnih aplikacija ? 14.09.2005. u 15:35 · pre 256 meseci #3
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
Potpis
Nebojsa Milanovic:
-Trumpa smatram vrhunskim predsednikom i voleo bih da živim u državi na čijem je on čelu
-Rusija ne laže, ne vodi osvajačke ratove
-Trump je svetla tačka u USA blatu
-Elon Musk, možda najpametniji i najtrezveniji Amerikanac
Re: Prikaz trenutno aktivnih aplikacija ? 15.09.2005. u 00:25 · pre 256 meseci #4
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]
Potpis
If it's a girl then they're gonna call it Sigourney, after an actress. If it's a boy, then they're gonna call it Rodney, after Dave!
Re: Prikaz trenutno aktivnih aplikacija ? 15.09.2005. u 08:38 · pre 256 meseci #5
Da 20, sta preoprucujes,
StringBuilder?
Potpis
Samo se budala saplice na kamen iza sebe.
Re: Prikaz trenutno aktivnih aplikacija ? 15.09.2005. u 09:58 · pre 256 meseci #6
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.
Potpis
Nebojsa Milanovic:
-Trumpa smatram vrhunskim predsednikom i voleo bih da živim u državi na čijem je on čelu
-Rusija ne laže, ne vodi osvajačke ratove
-Trump je svetla tačka u USA blatu
-Elon Musk, možda najpametniji i najtrezveniji Amerikanac
Re: Prikaz trenutno aktivnih aplikacija ? 15.09.2005. u 11:51 · pre 256 meseci #7
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!
Potpis
If it's a girl then they're gonna call it Sigourney, after an actress. If it's a boy, then they're gonna call it Rodney, after Dave!
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme