Kako postaviti pametne telefone i računala. Informativni portal
  • Dom
  • Savjet
  • Izrada vlastitih gadgeta. Komentari (7) na “Desktop Gadgets”

Izrada vlastitih gadgeta. Komentari (7) na “Desktop Gadgets”

Desktop gadgeti nisu ništa novo u svijetu Windowsa. Prvi put su uočeni u Visti, gdje su se nalazili na bočnoj ploči. Čak i ako je sama ideja bila dobra, nije polučila velik uspjeh. S pojavom 7, Microsoft je malo preradio ovaj element. Uz ovu uputu naučit ćete, kao i kako ih postaviti za praktičan rad.

Preuzmite arhivu s datotekom gadgeta. Raspakirajte ga u bilo koju mapu. Gotovi (gadget). Dvaput kliknite na datoteku lijevom tipkom, otvorit će se prozor u kojem kliknite gumb "instaliraj". Nakon instalacije, gadget će se odmah pojaviti na radnoj površini.

Postoji manje korištena opcija na koju nema smisla gubiti vrijeme. Morate preuzeti arhivu datoteka samog gadgeta, a zatim baciti ekstrahirane elemente u određenu mapu, do koje je potrebno dosta vremena. Stoga ga nećemo razmatrati.

Napomena: preuzimajte samo iz pouzdanih izvora kako ne biste oštetili svoj Windows 7.

Gdje pronaći gadgete

Prvo morate otići na upravljačku ploču gadgeta. Postoje dva načina za to:

2. Desnom tipkom miša kliknite prazan prostor na radnoj površini i odaberite "gadgete" s padajućeg izbornika. Po mom mišljenju, ovo je jednostavan i praktičan način.

Prozor zbirke prikazat će popis instaliranih gadgeta. Prema zadanim postavkama Windows 7 ima sljedeće:

  • Windows Media Center
  • Valuta
  • Puzzle
  • Naslovi vijesti web kanala
  • CPU indikator
  • Kalendar
  • Vrijeme
  • Prikaz slajdova
  • Kako uključiti i isključiti gadgete

    Da biste instalirali gadget, dvaput kliknite na njega lijevom tipkom i aktivirat će se u djeliću sekunde. Također ga možete odabrati i povući na radnu površinu na željeno mjesto.

    Ako želite ukloniti gadget, pokažite ga. Nakon toga će se s desne strane pojaviti nekoliko gumba. Kliknite na bijeli križ s crvenom pozadinom i gadget će nestati s radne površine.

    Kako postaviti i premjestiti gadgete

    Mogu se personalizirati i prilagoditi na različite načine. U nastavku ću pokušati sažeti sve elemente koji se mogu instalirati i konfigurirati:

    1. Povećajte veličinu gadgeta - omogućuje vam povećanje njihove veličine za bolju percepciju informacija. Ako je to moguće, kada prijeđete pokazivačem iznad izbornika, trebao bi se pojaviti kvadrat sa strelicom s desne strane, kao što je prikazano na snimci zaslona u nastavku. Kliknite na njega i vidjet ćete koliko je došlo do povećanja. Ako želite da gadget bude standardne veličine, morate kliknuti na isti gumb (sada će strelica biti usmjerena na kvadrat).

    2. Sakrijte ili prikažite sve gadgete – postoji način da ih se riješite svih odjednom. Desnom tipkom miša kliknite prazno područje radne površine, pokažite na "prikaz", a zatim kliknite "prikaži gadgete za radnu površinu". Kako bi sve bile prikazane kao prije, kliknite ponovno; to će biti naznačeno označenim okvirom nasuprot naziva opcije.

    Ako mislite da će gadgeti raditi u pozadini Windowsa 7, varate se. Proces u upravitelju zadataka koji je odgovoran za to zove se “sidebar.exe”. Nakon što ih sve sakrijete, proces će nestati i obrnuto.

    3. Prikaz na vrhu svih prozora - određeni broj gadgeta mora uvijek biti na vidiku. Odaberite onaj koji vam je potreban i kliknite ga desnom tipkom miša. U izborniku koji se otvori morate potvrditi okvir na liniji "na vrhu drugih prozora".

    4. Razina prozirnosti – desnom tipkom miša kliknite na gadget, zatim pokažite na "neprozirnost" i odaberite postotak. Ako postavite manji postotak, prozirnost će biti uočljivija.

    5. Prebacivanje između aktivnih gadgeta - za to držite tipku s ikonom windowsa i pritisnite G na tipkovnici, svakim klikom na koji ćete prelaziti s jednog na drugi.

    Ako prijeđete mišem iznad gumba "sažmi sve prozore", koji se nalazi na programskoj traci, prikazat će se svi aktivni gadgeti.

    Kako ukloniti gadget

    Postoji nekoliko vrlo jednostavnih koraka za ovaj postupak. Otvorite zbirku gadgeta i odaberite stavku. Zatim kliknite desnom tipkom miša i kliknite "izbriši". Nakon čega ćete vidjeti upozorenje s kojim morate pristati.

    Sada postaje jasnije kako instalirati gadgete za windows 7. U usporedbi s Vistom, programeri su se pobrinuli za fleksibilnost korištenja. Sada ne morate postavljati elemente na desnu ili lijevu ploču. Imate priliku postaviti gadgete bilo gdje na radnu površinu, tako da je rad ugodniji.

    Nedavno sam trebao izraditi gadget za Windows Sidebar. Nisam imao nikakve vještine u ovome, pa nakon što sam malo proguglao i pročitao dokumentaciju, počnimo.

    Odmah ću vam pokazati što sam završio.


    Gadget će primati informacije sa stranice u xml obliku, analizirati ih i, zapravo, prikazati. Gadget će također provjeriti nove verzije, a ako su prisutne, odbiti će raditi :)
    U početku sam, radi stjecanja iskustva, htio napisati gadget u potpunosti u VBScriptu (pošto se još nisam time bavio), ali na kraju sam morao umetke raditi u JavaScriptu.
    Prijeđimo izravno na kod. Ovdje neću pregledavati cijeli kod, pokazat ću samo glavne točke. Veza do gotovog gadgeta nalazi se na kraju članka.
    Glavna datoteka gadgeta je njegov manifest - datoteka Gadget.xml. Trebao bi se zvati upravo tako i nalaziti u korijenu naše arhive (gadget nije ništa više od ZIP arhive s nastavkom .gadget).

    Vrijeme iz Info.Denms.Ru 1.0.1232 Cijeli widget za vremensku prognozu (Info.Denms.Ru)

    Pogledajmo to detaljnije.
    Element bi trebao sadržavati apiVersion jednaku 1.0.0 (za sada), kao i atribut src, koji specificira glavnu datoteku našeg gadgeta;
    Dopuštenja za gadget. Postavi jednako punom;
    Minimalna verzija bočne trake sustava Windows. Trenutno – 1,0;
    Parametri - naziv gadgeta, - verzija, - podaci o autoru, - poveznica na stranicu s gadgetom, - ikona gadgeta i bit će prikazana na ploči instaliranih gadgeta.

    Main.html datoteka je obična html datoteka, neću je navesti u cijelosti, samo ću se zadržati na nekim točkama.
    Element g:background koristi se za postavljanje pozadine gadgeta. Učinimo to transparentnim.

    Gadget može biti u dva stanja – usidren (lijevo na gornjem zaslonu) i nepovezan (desno). Pohranit ćemo trenutno stanje gadgeta u usidrenoj varijabli JavaScripta.

    Trebat će nam isDocked wrapper funkcija u budućnosti kako bismo saznali trenutno stanje gadgeta iz VBScripta (ma koliko se trudio, nisam ovo mogao implementirati u čistom VBScriptu). Još jedna napomena - skripte rade ispravno ovim redoslijedom, tj. Prvo opisujemo VBScript skripte, a zatim JavaScript.

    Preostali elementi u main.html su apsolutno pozicionirani DIV elementi. Naknadno ćemo im pristupiti iz skripti po njihovom ID-u.

    Pomoću JavaScripta postavit ćemo usidrena i neusidrena stanja za gadget, a također ćemo odrediti datoteku postavki (main.js)

    System.Gadget.onDock = promjena veličine; System.Gadget.onUndock = promjena veličine; System.Gadget.settingsUI = "settings.html"; System.Gadget.onSettingsClosed = Postavke zatvorene; usidren=0; //početno stanje gadgeta resize(); //inicijalizacija

    Kao što možete vidjeti iz gornjeg popisa, kada se stanje gadgeta promijeni, bit će pozvana funkcija resize().

    Funkcija resize() ( bd = document.body.style; System.Gadget.beginTransition(); if (System.Gadget.docked) ( // malo stanje bd.width=148; // postavljanje veličine gadgeta bd.height= 201 ; docked = 1; bd.background="url(images/gadget.png) no-repeat"; //postavljanje pozadine //zatim slijedi prijenos vrijednosti iz neusidrenog stanja u usidreno i resetiranje elemenata za neusidreno stanje document.getElementById("small_needupdate ").innerHTML = document.getElementById("big_needupdate").innerHTML; document.getElementById("big_needupdate").innerHTML = ""; //... ) else ( // veliko stanje bd.width=230; bd. height=160; bd.background="url(images/gadgeth.png) no-repeat"; docked=0; //prijenos vrijednosti iz usidrenog u neusidreno stanje i resetiranje elemenata za usidreno stanje document.getElementById("big_needupdate"). innerHTML = document.getElementById("small_needupdate").innerHTML; document.getElementById("small_needupdate").innerHTML = ""; //... ) System.Gadget.endTransition (System.Gadget.TransitionType.morph,1); )

    Također možete opisati funkciju spremanja postavki. Moj gadget ih nema, ali kao primjer ću vam pokazati kako se to radi.

    Function SettingsClosed(event) ( if (event.closeAction == event.Action.commit) ( //alert System.Gadget.Settings.readString("test"); ) )

    ReadString – čita prethodno spremljeni niz, writeString, odnosno, piše.
    Metode System.Gadget.beginTransition(); i System.Gadget.endTransition(); potreban za "glatku" promjenu veličine gadgeta. Oni su zanemareni u sustavu Windows Seven, ali sam ih ipak ostavio zbog kompatibilnosti sa starijim verzijama.

    Kao što je gore spomenuto, poslužitelj nam daje informacije o vremenu u xml formatu.

    1.7 41 oblačno snijeg 87 jugozapad 5 -3 -1 -1 26 1 -9 41 0 …

    Preuzet ćemo i analizirati xml pomoću VBScripta.

    Sub DownloadXML2 Postavite objXML = CreateObject("Microsoft.XmlHttp") objXML.Otvorite "GET", "http://info.kovonet.ru/weather.xml", True objXML.OnReadyStateChange = GetRef("objXML_onreadystatechange") objXML.setRequestHeader "If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT" objXML.Send iTimeoutID = window.SetTimeout("mySleep", 1000) End Sub

    Funkcija mySleep provjerit će našu vezu zbog isteka vremena.

    Sub mySleep if bRespReceived = "false" then "odgovor još nije primljen iTimeout = iTimeout + 1 if (iTimeout > 30) then "timeout timerFirstRun = window.SetTimeout("Update", 60000) "pokušaj ponovnog ažuriranja za minutu inače "timeout još nije dosegnut, nastavi brojati sekunde iTimeoutID = window.SetTimeout("mySleep", 1000) end if end if End Sub

    Ako je preuzimanje uspješno, objXML.readyState će biti jednak četiri, a status (objXML.status) će vratiti vrijednost 200.

    Funkcija objXML_onreadystatechange() If (objXML.readyState = 4) Then "msgbox objXML.statusText If (objXML.status = 200) Then bRespReceived=true SaveFile(objXML.responseText) else timerFirstRun = window.SetTimeout("Update", 60000) " pokušaj ponovno ažurirati za minutu End If End If End Function

    U tom slučaju datoteku spremite u privremenu Windows mapu

    Funkcija SaveFile(what) Postavi fso = CreateObject("Scripting.FileSystemObject") tempFolder = fso.GetSpecialFolder(2) filepath = tempFolder+"\weather.xml" Dim fso1, tf Postavi fso1 = CreateObject("Scripting.FileSystemObject") Postavi tf = fso1.CreateTextFile(filepath, True, True) "rewrite, unicode tf.Write(what) tf.Close ParseXML End Function

    I počinjemo analizirati datoteku.

    Sub ParseXML Postavi fso = CreateObject("Scripting.FileSystemObject") tempFolder = fso.GetSpecialFolder(2) filepath = tempFolder+"\weather.xml" Postavi xmlDoc = CreateObject("Msxml2.DOMDocument") xmlDoc.async="false" xmlDoc. load(filepath) "glavni čvor - u našem slučaju Postavi currNode = xmlDoc.documentElement "dani u tjednu - Postavi dayNode = currNode.firstChild dok nije dayNode nije ništa Postavi currNode = dayNode.firstChild dok nije currNode nije ništa ako currNode.parentNode. getAttribute( "id") = "today" then "today if currNode.nodeName = "temp" then document.getElementById(prefix+"maintemp")).innerHTML = currNode.childNodes(0).text+Chr(176) "prikaži preostali elementi Else "not today, display more fine"... end If Set currNode = currNode.nextSibling Wend Set dayNode = dayNode.nextSibling Wend End Sub

    Provjera novih verzija vrši se na potpuno isti način.
    Ne zaboravite izraditi datoteku s postavkama - settings.html, čije smo postojanje najavili gore.

    postavke

    To je zapravo sve. Bilo bi mi drago da moj (prvi :)) članak nekome bude od koristi.

    Korišteni izvori.

    Može se prilagoditi. Ako je neprozirnost gadgeta manja od 100%, on postaje potpuno neproziran kada lebdite. Čini se da na ovaj način možete učiniti gadget potpuno nevidljivim, tako da se pojavljuje samo kada zadržite kursor. Problem je što ne postoji vrijednost neprozirnosti od 0% za gadgete. Međutim, sasvim je moguće učiniti svoj gadget potpuno transparentnim, au ovom članku ću vam reći kako.

    Dodavanje gadgeta na radnu površinu

    U slučaju da još niste koristili gadgete, objasnit ću vam kako ih dodati na radnu površinu. Kako bi svi gadgeti bili vidljivi, desnom tipkom miša kliknite tablicu i odaberite Pogled | Prikaži gadgete za radnu površinu" (Prikaz | Prikaži gadgete za radnu površinu, slika A).

    Slika A. Ovo je jedini način da omogućite/onemogućite gadgete. Umjesto da gadgete učinite potpuno prozirnima, pomoću ove opcije možete ih sve sakriti.

    Da biste dodali gadgete na radnu površinu, desnom tipkom miša kliknite na njega i odaberite opciju "Gadgeti". Pojavit će se novi prozor (slika B) iz kojeg možete povući i ispustiti gadgete na radnu površinu.


    Slika B. Nemate gadget koji vam je potreban? Kliknite vezu "Nabavite više gadgeta na mreži".

    Galerija Windows Live sadrži stotine gadgeta. Prije instaliranja gadgeta preuzetih s interneta na radnu površinu, svakako ih skenirajte antivirusnim programom - iako su objavljeni na službenom resursu, to ne jamči njihovu sigurnost.

    Da biste promijenili prozirnost gadgeta, desnom tipkom miša kliknite na njega i odaberite "Neprozirnost | X%" (Neprozirnost | X%), gdje je X numerička vrijednost (slika C).


    Slika C. Zašto programeri Microsofta nisu omogućili da gadgeti budu potpuno transparentni ostaje misterij za mene. Srećom, ovaj problem se može riješiti.

    postavke

    Pogledajmo sada kako gadgete učiniti potpuno prozirnima. Desnom tipkom miša kliknite na gadget koji želite i dajte mu neprozirnost od 20%. Nakon toga učinite sljedeće:

    Prvi korak. Zatvori bočnu traku sustava Windows. Da biste to učinili, desnom tipkom miša kliknite programsku traku, odaberite opciju "Pokreni upravitelj zadataka", pronađite proces "sidebar.exe" na popisu i završite ga. U tom će slučaju nestati svi gadgeti s radne površine. Ako to ne učinite, nećete moći uređivati ​​konfiguraciju.

    Drugi korak. Pronađite datoteku postavki gadgeta za radnu površinu "Settings.ini". Obično je pohranjen u mapi “C:\Users\(korisničko ime)\AppData\Local\Microsoft\WindowsSidebar\” (“C:\Users\(username)\AppData\Local\Microsoft\WindowsSidebar\” za englesko sučelje ). Otvorite ovu datoteku u Notepadu, pronađite redak “PrivateSetting_GadgetOpacity=”(20)” i zamijenite “20” s “1”. Trebao bi izgledati ovako: “PrivateSetting_GadgetOpacity=”(1)””. Nakon toga spremite promjene i zatvorite Notepad.

    Treći korak. Sada ponovno pokrenite proces odgovoran za prikazivanje gadgeta. Da biste to učinili, upišite "sidebar.exe" (bez navodnika) u traku za pretraživanje izbornika Start i kliknite . Svi gadgeti će se pojaviti na radnoj površini, osim onog za koji je neprozirnost postavljena na 20%. Ali zapravo, nije nestao: pomaknite pokazivač na mjesto gdje bi ovaj gadget trebao biti postavljen i odmah će postati vidljiv. Zadatak je riješen!

    Na isti način možete sakriti sve ostale gadgete. Ne zaboravite postaviti svaku od njih na neprozirnost od 20% i svakako izađite iz procesa "sidebar.exe" za uređivanje datoteke s postavkama, a zatim je ponovno pokrenite.

    Konačno

    Jako volim mini-aplikacije i

    Izgled glavnog prozora ne razlikuje se od izgleda bilo koje druge web stranice. Osim toga, nudimo nekoliko oznaka isključivo gadgeta. Za postavljanje pozadine gadgeta upotrijebite oznaku g:background. Svaki sadržaj postavljen u ovaj element bit će pozadina za cijeli glavni prozor.
    < g:background id ="background" style opacity ="0" >

    Nisam izradio pozadinu za gadget; pomoću parametra opacity=“0” pozadina je postala potpuno prozirna.

    Tijelo stranice je prilično jednostavno; gornji div služi za prikaz statusa gadgeta, omogućuje vam da vidite koliko je minuta preostalo prije ažuriranja podataka, a također podržava ručno ažuriranje. Donji div će sadržavati popis poslužitelja.

    < div id ="status" >< a a >
    < div id ="content" >
    < ul id ="serverList" >



    Svi stilovi i JavaScript premješteni su u vanjske datoteke. Radi praktičnosti, uključena je biblioteka jQuery. Cijeli izgled glavnog prozora je malen.
    < html >
    < head >
    < meta http-equiv ="Content-Type" content ="text/html; charset=utf-8" />
    < link rel ="stylesheet" type ="text/css" href ="./style/gadget.css" />
    < script type ="text/javascript" src ="./js/jquery-1.3.2.min.js" >


    < body onload ="startMonitoring()" >
    < g:background id ="background" style ="position:absolute;z-index:-1;top:0;left:0;" opacity ="0" >
    < div id ="status" >< a a >
    < div id ="content" >
    < ul id ="serverList" >





    U CSS-u sam želio obratiti pozornost samo na stilove koji opisuju boju ćelije poslužitelja, ovisno o njenom stanju.
    ul#Popis poslužitelja li.busyLight
    {
    pozadina : #fefe8c ;
    }
    ul#Popis poslužitelja li.zauzet
    {
    pozadina : #ffb154 ;
    }
    ul#Popis poslužitelja li.besplatno
    {
    pozadina : #d2e582 ;
    }
    ul#Popis poslužitelja li.dolje
    {
    pozadina : #dc6161 ;
    }
    Tamna strana, Luke Najvažnija datoteka je JavaScript. Dopustite mi da odmah rezerviram: upozorenje i potvrda ne rade u gadgetima. Da biste otklonili pogreške u gadgetu, možete koristiti Visual Studio, ali da biste to učinili morate izvršiti dva lukava koraka. Prije svega, omogućite program za ispravljanje pogrešaka JavaScripta u Internet Exploreru

    Dodajte redak na traženo mjesto u kodu gadgeta:


    i ponovno pokrenite gadget.

    Deklariramo dvije globalne varijable koje su odgovorne za vrijeme u minutama za ažuriranje podataka u gadgetu, za mene je optimalno 30 minuta, kao i brojač preostalih minuta do ažuriranja

    var updateInterval = 30;
    var updateMinutes = updateInterval;


    Init funkcija sadrži akcije za inicijalizaciju gadgeta; u ovom slučaju, morao sam postaviti prozirnost gadgeta na 40% tako da ne prekriva u potpunosti dio radne površine.
    funkcija init() (
    System.Gadget.Settings.write("PrivateSetting_GadgetOpacity" , 40);
    }

    Funkcija pokretanja samog nadzora, koja ažurira popis poslužitelja s njihovim statusom, postavlja interval ažuriranja podataka, timer u glavnom prozoru te također dodaje event handler za ručno ažuriranje statusa poslužitelja.
    funkcija startMonitoring() (
    u tome();

    AžurirajList();
    setInterval(updateList, updateInterval * 1000 * 60);
    setInterval(updateTimer, 1000 * 60);

    StatusLink.onclick = funkcija() (
    ažurirajList();
    }
    }


    U ovom slučaju, dodavanje obrađivača klikova događa se na dva načina:
    element.onclick = funkcija ()()
    $(element).get(0).onclick = funkcija ()()

    Napredne metode u gadgetima ne rade:
    element.attachEvent("onclick" , funkcija ()())
    $(element).bind("klik" , funkcija ()())

    Za ažuriranje samog timera, mala funkcija updateTimer, koja izračunava svaku minutu koliko je vremena preostalo prije ažuriranja.
    funkcija updateTimer() (
    updateMinutes = updateMinutes == 0? updateInterval: updateMinutes - 1;
    $("#statusLink" ).html("Ažuriraj za " + updateMinutes + " m." );
    }

    I na kraju, ažurirajući popis poslužitelja, za vraćene podatke koristim JSON, odgovor izgleda otprilike ovako:
    [ ( "ip" : "***.45.**.60" , "lastHitTime" : "2009-09-06 00:07:24" , "runningTasks" : "1" ) ]
    Za dobivanje samih podataka – getJSON. Također možete koristiti AJAX, odlično radi u gadgetima. Prije svega, korištenjem getJSON-a možemo debugirati kod u pregledniku bez dodavanja gadgetu; AJAX nam to neće dopustiti. Ovisno o opterećenju poslužitelja, bojim ćeliju različitom pozadinom. Istovremeno se mogu izvoditi samo dva zadatka, nedovoljno, ali za svaki od njih potrebno je 1,5-2 sata. Postoji i dodatna provjera prije koliko je vremena poslužitelj odgovorio.
    );
    popis = "";

    $.getJSON("https://mysite.com/getServerStatus.php" , funkcija (json) (
    $.each(json, funkcija (i, poslužitelj) (
    status = "";
    if (server.runningTasks == 0) (
    status = "slobodno" ;
    ) else if (server. runningTasks == 1) (
    status = "zauzeto svjetlo";
    ) else if (server. runningTasks == 2) (
    status = "zauzeto" ;
    }
    pogodak = novi datum(server.lastHitTime);
    sada = novi datum();

    if (now.getTime() - hit.getTime() >= 1000 * 60 * 60 * 3 + 1000 * 120) (
    status = "dolje" ;
    }
    popis += "

  • "+server.ip+"
  • " ;
    });
    $("#serverList" ).html(popis);
    });
    $("#statusLink" ).html("Ažurirano" );
    }


    Kod je spreman za korištenje, ostalo je još samo nekoliko mahanja čarobnim štapićem. Sve projektne datoteke pakiramo u zip arhivu.

    I dodajte gadget u sustav pokušavajući otvoriti datoteku monitoringS.gadget

    Voila, imamo uredan i neupadljiv gadget s popisom poslužitelja. Primjer sa 100% i 40% transparentnosti.

    Siguran sam da svatko od nas ima slične zadatke i probleme, pa zašto ih ne učiniti ljepšim i praktičnijim?

    Najbolji članci na temu