[ bojan21 @ 11.07.2006. 14:19 ] @
Da li neko moze da mi napise kod koji gasi neku pokrenutu aplikaciju!!! Na primer, ako pokrenem program C:\Program files\test.exe kako preko delphi koda da ga obustavim (trenutno)!!!! Hvala unapred!!!
[ obucina @ 11.07.2006. 17:06 ] @
Prvo treba da pronađeš HWND glavnog prozora ove aplikacije. To ćeš uraditi pomoću FindWindow ili FindWindowEx funkcije.

Prvi način, regularno zatvaranje, pošalji poruku WM_CLOSE na dobijeni HWND. Čitaj MSDN za detalje.

Drugi način, ubijanje procesa, funkcija TerminateProcess. Potreban ti je ProcessID, koji ces dobiti tako sto ces sa dobijenim HWND-om pozvati GetWindowThreadProcessId. Ona ce ti vratiti ProcessID koji ces koristiti u TerminateProcess.

Kod... Pa, pomuči se malo, sve sam ti rekao :)
[ bojan21 @ 12.07.2006. 14:38 ] @
E hvala ti brate!!! Pomucicu se pa cu da ti javim!!!
[ bojan21 @ 14.07.2006. 12:05 ] @
Nisam uspeo!!! Evo vec 2 dana se mucim oko handlera al ne uspevam!!! Ajde malo pojasni!!!
[ savkic @ 14.07.2006. 12:56 ] @
Da bi ugasio neki proces moraš imati handle tog procesa ili handle nekog prozora koji mu pripada. Ako ti startuješ taj drugi proces onda handle možeš dobiti kao povratne vrednosti funkcija ShellExecuteEx ili CreateProcess. Dalje taj handle možeš koristiti na način koji ti je Srđan opisao ili možeš iskoristiti gotove funkcije iz Jedi biblioteke (www.delphi-jedi.org) TerminateApp i TerminateTaks. Ako ti ne startuješ taj program onda moraš proći kroz sve procese ili prozore u sistemu i identifikovati onaj koji želiš da ugasiš a dalje gašenje radiš na isti način. Biće lakše da ti pomognemo ako daš više detalja o tom drugom programu, da li ga ti startuješ i kako, ili kako ga identifikuješ.
[ bojan21 @ 14.07.2006. 15:33 ] @
E ovako!!! Imam glavni program u kojem korisnik bira screensaver(e)!!! Prvo se startuje prvi screensaver pomocu adrese koju korisnik bira (znaci Action>Run u delphiu)!!! Posle isteka na primer 40 sekundi treba da ugasim prvi screensaver i da startujem drugi!!! E meni treba samo funkcija koja gasi taj screensaver ako ja imam putanju do njega (na primer C:\Windows\System32\sdmcs.scr)!!! Citao sam windows SDK ali ja sam poceo u delphiu da radim tek pre 2 meseca tako da ne znam mnogo!!!
[ savkic @ 14.07.2006. 16:45 ] @
> Prvo se startuje prvi screensaver pomocu adrese koju korisnik bira (znaci Action>Run u delphiu)!!!

Nisam najbolje shvatio. Koristiš li TFileRun action komponentu za odabir i startovanje screen savera? Možeš li to promeniti da screensaver startuješ na drugi način?

> E meni treba samo funkcija koja gasi taj screensaver ako ja imam putanju do njega (na primer C:\Windows\System32\sdmcs.scr)!!

Jedi biblioteka ima funkciju RunningProcessesList koja daje kompletne putanje do aktivnih procesa, pogledaj.
[ opcode @ 14.07.2006. 19:01 ] @
var H:HWND;
x:integer;

H:=FindWindow(nil, PChar('test.exe');
SendMessage(H,WM_CLOSE,0,0);


[ Miloš Baić @ 14.07.2006. 19:54 ] @
Pozdrav,

evo, da nešto i ja dam... Nadam se da će pomoći....
Code:

 PostMessage(FindWindow(Nil, 'Naziv_Forme'), WM_QUIT, 0, 0);

Naziv_Forme je "window caption", dakle, ako ti program ima naziv na
formi "Winamp", i ti ga uneseš za Naziv_Forme, ovaj kod će ga obustaviti.

BTW, nešto slično opcode - ovom kodu...
[ bojan21 @ 14.07.2006. 20:36 ] @
Hvala ljudi mnogo!!! Ali sta cu kad ja ne znam ime glavne forme tj screensavera jer dzaba meni njegovo ime kad moze da ima sasvim drugacije ime forme!!!
[ Miloš Baić @ 15.07.2006. 02:21 ] @
Ako imaš instalirano,JEDI Code Library (JCL), pogledaj primer:
jcl\examples\windows\toolhelpview!
To ti je primer, između ostalog, za Kill Process, kao u Windows Task Manager-u.

JCL & JVCL, download:
http://sourceforge.net/project...id=42327&release_id=395480
[ bojan21 @ 15.07.2006. 12:13 ] @
Setio sam se necega!!! Zar se screensaver ne prekida pri pokretu misa :) !!! Znaci ja samo Windowsu treba da posaljem poruku da se mis pokrenuo, zar ne!!! Da li bi to upalilo sta mislite!!!! I molim Vas za taj kod jer se snalazim sa Win porukama!!!
[ bojan21 @ 15.07.2006. 12:21 ] @
Naravno da koristim TFileRun !!! Zasto bi to menjao??? Mogu da promenim ako postoji neki dobar razlog!!!
[ opcode @ 15.07.2006. 12:32 ] @
Nije ti losa ona ideja... screen saver se prekida i pritiskom na neku tipku, a to mozes postic sa keybd_event =>http://msdn.microsoft.com/libr...ui40/html/cerefKeybd_event.asp

.. popis kodova tipki imas na http://msdn.microsoft.com/libr.../UserInput/VirtualKeyCodes.asp
[ bojan21 @ 15.07.2006. 13:35 ] @
Tako je!!! Ali jel znas kod kojim cu poslati poruku Windowsu da se mis pokrenuo (iako nije, jer aplikacija treba sve sama da radi bez podrske korisnika!!! znaci korisnik ne pritiska nista niti pomera misa)!!!
[ savkic @ 15.07.2006. 14:44 ] @
> Naravno da koristim TFileRun !!! Zasto bi to menjao??? Mogu da promenim ako postoji neki dobar razlog!!!

Zato što ne možeš dobiti handle startovanog procesa koji bi inače mogao imati da ga sam startuješ.
Za simuliranje pritiska na tastaturi možeš koristiti keybd_event ili SendInput.
[ opcode @ 15.07.2006. 15:21 ] @
Citat:
bojan21: Tako je!!! Ali jel znas kod kojim cu poslati poruku Windowsu da se mis pokrenuo (iako nije, jer aplikacija treba sve sama da radi bez podrske korisnika!!! znaci korisnik ne pritiska nista niti pomera misa)!!!



Nisam te najbolje shvatio.. zasto ti treba da se mis sam mice?
[ bojan21 @ 15.07.2006. 17:45 ] @
@ Opcode: Pa treba mi jer program sam treba da menja screensaver-e bez ikakve aktivnosti korsinika (znaci korisnik ne pomera misa niti bilo sta pritiska)!!! Ne mora on da se mice, samo da Windows 'misli' da se mice!!! @ savkic: Znaci ne mogu da ga dobijem!!! A kako sam da ga startujem, preko koje funkcije???
[ opcode @ 15.07.2006. 18:17 ] @
Pa ako imas listu screensavera:
1.scr
2.scr
3.scr
4.scr
5.scr


Samo ih pokreces redom.. ne vidim razlog da bi dirao misa.. ne znam dal ti je cilj da u postavkama windowsa postavljas screensaver il kao neku "prezentaciju" da ih izredas sve...nemas zasto da diras misa..
[ savkic @ 15.07.2006. 18:40 ] @
> @ savkic: Znaci ne mogu da ga dobijem!!! A kako sam da ga startujem, preko koje funkcije???

Već sam pisao ShellExecuteEx ili CreateProcess.
[ bojan21 @ 15.07.2006. 19:20 ] @
Moram da ugasim prethodni screensaver jer sta ako je vreme menjanja 10s!!! Znaci za 5 minuta nakupice se 30 screensaver-a koji su istovremeno pokrenuti!!! To uzima memoriju, a i vec sam probao i posle 8-og mi vec secka!!! Treba mi kod za pomeranje misa (bar virtuelno)!!!
[ opcode @ 15.07.2006. 20:37 ] @
Lol, aj okaci kod tu.. ja cu ti to sredit.. ne mogu ovako "napamet"!
[ bojan21 @ 15.07.2006. 21:04 ] @
Hvala na pomoci i podrsci resio sam program preko keybd_event funkcije!!! Samo sam mu zadao karakter koji ne koristim u aplikaciji i screensaver se gasi odmah :) !!! Hvala jos jednom ovo me je spasilo!!! Al sam happy auuuuu!!!!
[ bojan21 @ 15.07.2006. 21:05 ] @
Hehe ispravka resio sam PROBLEM!!! I HVALA JOS JEDNOM!!!!
[ opcode @ 15.07.2006. 21:24 ] @
Tako treba..

Dobar je osjecaj kad nesto rjesis s cim si se dobrano napatio.. zar ne?
[ bojan21 @ 16.07.2006. 13:12 ] @
Naravno da je dobar osecaj eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeej!!! E sad me cekaju novi izazovi!!! Skinuo sam dosta funkcija i procedura koje treba obraditi jer ne rade bas sve, uuuuh!!! Sad polako proucavam sve one kodove sto su mi ljudi postovali, necu samo da kopiram a da nista ne razumem !!! I hvalaaaa svima jos jednom!!!