
DELPHI - komunikace s jinou aplikací
Žádné fórum o Deplhi (česky) jsem nenašel. Všechny odkazy vedou už na neexistující servery, tak proto Vás tu zde musim otravovat.
Chtěl bych pouze radu, žádný výsledný kód. Můj bratr tráví hraním poč. her hodně času a já jsem dostal od otce za úkol, abych udělal program, který bude zasnamenávat, jak dlouho daná aplikace běží. A jakmile dosáhne hodnoty 2 hodiny, aplikaci ukončí. Vím přibližně, jak na to. Jediné co nevim, jejak zjistit, jestli daná aplikace běží (např wow.exe), a pak, jak ji ukončit. Podotýkám, že jediné, co umím je pascal a delphi, ale na žádné profesionální úrovni.
Děkuji za rady.
Ke hrám je obvykle třeba admin účet, takže se s podobnou aplikací lze vždy nějak vypořádat. Asi bych to spíše řešil na nějaké mezilidské bázi, popř. hardwareově (tzn. vypnout PC). Restrikce ale obvykle k ničemu nevedou. Osobně vidím hraní na PC jako lepší náplň času než běhání s partou holých lebek, fetování atd.
Ke hrám obvykle NENÍ třeba admin účet..

Vyprávěj to vypatlaným programátorům her...
Na druhou stranu většinou není nemožné nastavit práva v registru a na adresářích aby to běželo.
Delphi tyto informace ziska pomoci API fuhkci operacniho systemu. Pokud chces detekovat start aplikaci, musel bys udelat tzv. system hook - napsat DLL knihovnu a zaregistrovat ji v systemu. Pak dostanes info pri spusteni / ukonceni aplikace.
Mnohem jednodussi cesta je pravidelne kontrolovat seznam bezicich procesu a zaznamenavat procesy spustene uzivatelem.
což jde dělat v perfomance monitoru ve Windows a logovat to do csv a pak nad tím udělat pivot v excelu. A není potřeba psát žádnou aplikaci :)
A jak tu aplikaci při dosažení 2 hodin schodí?
nijak tuhle část zadání jsem nečetl :)
ale možná by to šlo přes alerty v performance monitoru, je tam možnost při alertu spustit nějaký systémový příkaz. :) Ale nekoukal jsem na to podrobně.
no....jednoduše.. VBS skriptem
Když už se bude psát skript, tak nemusí používat Performance monitor ale čas kontrolovat přes WMI
Koukám co člověk, to jinej přístup :)
nj já jsem naučenej na starých NTčkách, kde se žádné WMI nekonalo a holt si postupy přenáším na novější OS :)
Jo tak já v době NT jel na Win95 (mi ještě teklo mlíko po bradě) a jedinej postup kterej se dal z tohohle ořezávátka přenést, bylo klikání na ikony
Ale jestli se nepletu, tak WMI se na NT4 dalo doinstalovat.
my měli Windows NT v provozu ještě v roce 2003 :) WSH se dal doinstalovat, ale do systému se WMI samotné vecpat nedalo IMHO.
No když to funguje, tak proč na to šahat
Pro NT4 jsem našel instalaci WMI ale bude to nějaká okleštěná verze (už jen podle CORE v názvu
)
http://www.microsoft.com/downloads/details.aspx?Fam ilyID=c174cfb1-ef67-471d-9277-4c2b1014a31e&displayl ang=en
Všem moc děkuji za rady. Chci jen upřesnit pár věcí.
Bratr má sice admin účet (protože se přihlašuje na otcův), ale je mu 12 a pc moc neumí. Takže si nic takového vypínat nebude. A kdyby ano, tak mu udělám guesta.
Druhá věc je ta, že on na pc může hrát. Ale má povoleno 2-4 hod. A když třeba není nikdo doma, tak hraje, a když příjde otec, tak řekne, že to teďka zapnul.
A třetí věc je ta, že fakt nejsem žádnej profík, takže to, co mi tu radíte sice chápu, ale nevím, kde to najdu, ani jak to udělat ...
Myslel jsem, že to bude poněkud jednodušší.
Otevři si v Delphi nápovědu a hledej GetProcessTimes a TerminateProcess. Měly by tam být i příklady použití.
Zdarec,
Jednoduchší to určitě je...
Co tak mu zpřístupnit jeden účet (na hraní her,když třeba není nikdo doma) a do složky "po spuštění"(případně registry) hodit *.bat s SHUTDOWN -s -f -t 7200 -c "Stačilo parch....!".
To jen tak v rychlosti co mě teď napadlo,ale možností je určitě kopa...
zdarec.
tohle jsem na netu našel a trochu upravil... vypíná to proces, který se zadá .. notepad to vypíná v pohodě, ale wow.exe to prostě nevypne .. explorer.exe taky ne, ale třeba xfire.exe ano .. nevítě někdo proč to nejde?
(jinak až to bude fungovat, tak teprve začnu dělat to, že to bude počítat čas a ukládat datum + čas do souboru a vypínat potom)
díky
IMHO ty získáváš handle z názvu okna. Lepší by bylo získavat handle procesu z názvu souboru.
a to je která řádka?
Zkus article.php , sice jsem to nečetl celý ale mělo by to pomoct.
nefunguje to
a je to i v diskuzi pod tím, že to funguje jen někomu a někomu ne
oprava, zapoměn ljsem u druhého tlačítka nadefinovat funkci .. u prvního jsem to udělal a na to druhý jsem zapomněl .. teďka si jdu hrát, jak to udělal :)
děkuji všem za rady. zbytek už zvládnu :)