Delphi Timer True Przy uruchomieniu notatnika

0

mam pytanko z którym nie mogę sie uporac i szukalem po google i nic... a wiec chciałbym aby
na przykład po uruchomieniu notatnika w mojej aplikacji np. Timer zaczĄł działac czyli Na true
a proscie to: odpalam notatnik od razu po tym w mojej aplikacji timer1.enabled := true
proszę o pomoc z góry dziekuje :P

0

ja te pytanie zadawałem wczoraj lecz nikt mi nie odpowiedział :P Dołączam sie do pytającego.

1

Xoxo: masz poniżej przykład. Wystarczy przerobić i dać sprawdzanie najlepiej w wątku while not Terimated do - z 1000 milisekundowym Sleepem, a jak się wykryje proces o podanej nazwie exe to zrobić FormCostam.TimerCostam.Enabled := True; Oczywiscie wczesniej Timer ma Enabled ustawione na False w OnCreate. Mozna to też zrobić w dwóch Timerach. A poniższy kod, jak widać - monitoruje czy uruchomiony jest Notatnik jeżeli tak to uruchamia wiersz poleceń, o ile ten nie był wcześniej uruchomiony (proces cmd.exe). I nie mysl ze jak piszesz jeden post z konta a drugi jako niezalogowany ze niby odpowiadasz to masz plus 100 do zajebistosci.

unit Unit1;

interface

uses
  Windows, SysUtils, Classes, Controls, Forms, ExtCtrls,
  TlHelp32, ShellApi;

const
  JakiProces = 'notepad.exe';
  CoUruchomic = 'cmd.exe';

type
  TForm1 = class(TForm)
    Timer1 : TTimer;
    procedure FormCreate(Sender : TObject);
    procedure Timer1Timer(Sender : TObject);
  private
  public
  end;

var
  Form1 : TForm1;

implementation

{$R *.dfm}

function CzyJestProces(NazwaProcesu : string) : boolean;
var
  I : Integer;
  Uchwyt : THandle;
  PR : TStringList;
  Proces : TProcessEntry32;
begin
  Result := False;
  Uchwyt := CreateToolHelp32SnapShot(TH32CS_SNAPALL, 0);
  Proces.dwSize := SizeOf(Proces);
  PR := TStringList.Create;
  if Integer(Process32First(Uchwyt, Proces)) <> 0 then
  begin
    repeat
      PR.Add(Proces.szExeFile);
    until Integer(Process32Next(Uchwyt, Proces)) = 0;
  end;
  for I := 0 to PR.Count - 1 do
    if (PR[I] = NazwaProcesu) then
    begin
      Result := True;
      Break
    end;
  CloseHandle(Uchwyt);
  PR.Free;
end;

procedure TForm1.FormCreate(Sender : TObject);
begin
  Application.ShowMainForm := False;
end;

procedure TForm1.Timer1Timer(Sender : TObject);
begin
  if CzyJestProces(JakiProces) = True then
  begin
    if CzyJestProces(CoUruchomic) = False then
      ShellExecute(Application.Handle, 'open', PChar(CoUruchomic), nil, nil, SW_SHOW);
  end;
end;

end.
0

Dziekuje olesio ale mam pewne pytanko dotyczące tej linijki

  Proces : TProcessEntry32;

podswietla mi się przy próbie komplikacji i nie wiem co dodac do uses poniewaŻ pierwszy raz mam z tym stycznosc.

0

Ręce opadają. Spójrz co jest z "nietypowych" modułów w moim przykładzie w sekcji uses (podpowiedź: patrz na koniec).

0

olesio wiem ze zrobiłem z siebie debila bo nie spojrzałem na usues ale pomijając to ten kod to ja go nie ogarniam
ja chciałem aby po uruchomieniu notatnika timer1 miał enabled na true mozesz mi go przerobic na to co napisałem ?
nie wiem nie wiem juz cały dzien tego szukam i nic....

0

Ja bym ci usilnie proponował zacząć od http://4programmers.net/Delphi/Kompendium, a dopiero potem pisać cokolwiek. Nie masz nawet podstawowej wiedzy, a chcesz cuda tworzyć...

BTW: Ile zapłacisz olesiowi za przerobienie kodu? Bo nie wiem dlaczego miałby robić coś za ciebie...

0

kompenedium to ja zaczynam czytac za 1 miesiąc bo tak juz postanowiłem tydzien temu ;o znam cos tam lecz nie znam prawie nic ;P

Ps; olesio cash chcesz za przerobienie kodu ?:)

0

No wiesz, my tu raczej bez znajomości kompendium nie mamy o czym rozmawiać. Wróć za miesiąc, jak już przeczytasz...

0

a do którego rozdziału bym musiał przeczytac zeby juz potrafic napisac cos samemu ?

0

A po każdym rozdziale spróbuj coś napisać, jak się uda to co chciałeś, to znaczy, że to właśnie ten rozdział :D

0

hmm a wy tutaj tylko przez kompenedium sie nauczyliscie programowac czy jakies inne ksiązki ?:D czy jak przeczytam cale kompenedium to cos napiszę ? < Cos dobrego i wartego pisania

0

I tracisz czas na dyskusję "czy jak przeczytam to coś napiszę" zamiast wziąć się do czytania. Już miałbyś przynajmniej jeden rozdział z głowy.
Nie, po samym przeczytaniu niewiele będziesz w stanie napisać. Ale pisząc samodzielnie jeden, drugi, trzeci program czegoś się w końcu nauczysz. Chociażby tego, jak samodzielnie myśleć i wyszukiwać informacje. A to podstawa.

0

Już madmike wszystko napisał, bez znajomości podstaw nie napiszesz nic samodzielnie, a forum jest od naprowadzania i pomocy z konkretnymi problemami, a Ty sobie co chwile stwarzasz kolejne - nie znając podstaw i nie umiejąć zmienić kod napisany nawet z polskim nazewnictwem stałych oraz funkcji. Jak chcesz żeby inny Timer miał Enabled na True to wstaw to tam gdzie uruchamiany jest kod do wywołania procesu cmd.exe przez ShellExecute, tylko bez sprawdzania ponownie czy cmd.exe jest już uruchomiony. Więćej nie doradzę, bo po wklejeniu takiego gotowca jak dla mnie to wszystko powinno być jasne. A pomagać pisać malware nie pomagam nawet za pieniądze, zresztą ciężko napisać dobrze i stworzyć w Delphi malware ktory nie zostanie po pewnym czasie łatwo wykryty przez lepsze antywirusy, a przynajmniej mi się nie chce kombinować w tym kierunku. A co do nauki, ja się uczyłem z tego co można było znaleźć na necie, ale i tak popełniałem takie kwiatki jak ukryte ListBoxy do przechowywania jakiś tekstów zamaist TStringList i tym podobne porażki. Najwięcej nauczyłem się odpowiadając ludziom tutaj na forum. Skończyłem wprawdzie studium policealne gdzie wykładano programowanie obiektowe i głownie Delphi, ale więcej mozna nauczyć się i trzeba było z informacji w necie, bo w systemie zaocznym na wykładach i "zajęciach praktycznych" nie nauczysz się za wiele, jedynie podstawy. Czytaj wytrwale kurs to będziesz wiedział więcej niż pytająx co chwila o jakieś podstawy tutaj. Zresztą ja nie jestem perfekt programistom, ten kod do wyszukiwania procesów to przerobiona funkcja ze znalezionej wcześniej w google. Właśnie w google można znaleźć przykłady użycia i praktycznie rozwiązania.

1 użytkowników online, w tym zalogowanych: 0, gości: 1