Skocz do zawartości

[Delphi]Program do obsługi CMD - Windows XP


Daniel Ashan

Polecane posty

Witam. Jestem amatorem jeśli chodzi o delphi (tzn. coś tam robiłem ale strasznie mało). Chciałbym napisać program który pozwolił by mi obsługiwać polecenia tasklist i taskkill w trybie sieciowym.

Moje założenie jest takie, że po uruchomieniu programu napisanego w Delphi, odpala się również konsola. Polecenia tasklist i taskkill obslugiwane są poprzez wpisanie wymaganej formułki oraz uzupełnienie jej o wymaganą zmienną (nazwa komputera cz nazwa procesu). Ciekawym dodatkiem byłoby również wyświetlanie listy pobranych procesów w okienku programu. Prosiłbym o nakierowanie mnie (napisanie części kodu lub tylko używanych poleceń oraz obiektów, nie natomiast całego programu za mnie).

Z góry dziękuje i pozdrawiam,

Daniel

 

@edit

Otwieranie się konsoli rozwiązałem poleceniem

ShellExecute(Handle, 'open', 'cmd.exe', nil, 'C:\WINDOWS\system32\cmd.exe', SW_SHOWNORMAL)

Link do komentarza
Udostępnij na innych stronach

Otwieranie się konsoli rozwiązałem poleceniem

ShellExecute(Handle, 'open', 'cmd.exe', nil, 'C:\WINDOWS\system32\cmd.exe', SW_SHOWNORMAL)

Nie tędy droga, żeby w taki sposób otwierać terminal. Na Twoim miejscu utworzyłbym nowy projekt konsolowy i w nim po prostu odpalił Formę. Tym sposobem będziesz miał w swoim programie widoczną konsolę od startu i będzie widać polecenia, które ktoś wydaje przy użyciu GUI. Do wydawania poleceń jest kilka funkcji, execl, spawn, system - trochę różnią się od siebie działaniem, np. system blokuje dalsze wykonywanie programu (czyli GUI przestaje reagować) dopóki komenda nie zakończy działania.

Link do komentarza
Udostępnij na innych stronach

Chodzi mi głownie o to :

1. Mam dwa pola edit, jedno gdzie wpisuje nazwę komputera i drugie gdzie wpisuje nazwę procesu.

2. Mam dwa przyciski, po wciśnięciu pierwszego program pobiera dane z nazwą komputera oraz umieszcza ją w odpowiednim miejscu komendy, a następnie wykonuje tą komendę w windowsowskim cmd (komenda na pobranie listy procesow), drugi przecisk pobiera nazwę procesu oraz wpisuje ją w odpowiednie miejsce w poleceniu zamkniecia procesu.

Ciekawi mnie też czy by to się stało musi się otwierać konsola wraz z programem.

 

@Jason wybacz ale nie jestem, aż tak zaawansowany by w pełni zrozumieć to co mi poradziłeś, więc jak mógłbyś nieco prościej, to będę bardzo wdzięczny.

Link do komentarza
Udostępnij na innych stronach

Ewentualnie możesz spróbowac komponentu TUnitedCmd, albo TDosCommand pierwszy wywołuje cmd.exe i pozwala zczytać wyniki pokazują ce się w oknie, natomiast drugi komponent pozwala wywołać dowolny plik wsadowy *.bat czy też program konsolowy i również pokazać rezultaty w oknie oraz wysyłac teksty do okna. Oba komponenty najlepiej użyć dynamicznie. Więcej informacji oraz linki do samych komponentów znajdziesz w Google.

Pozdrawiam: olesio

Link do komentarza
Udostępnij na innych stronach

@Jason wybacz ale nie jestem, aż tak zaawansowany by w pełni zrozumieć to co mi poradziłeś, więc jak mógłbyś nieco prościej, to będę bardzo wdzięczny.

Nie robiłem w Delphi od dawna. O ile dobrze pamiętam to klikasz gdzieś New Project, wybierasz, że ma być konsolowy. Potem File/New/Form, no i sobie edytujesz formę i jej kod. Następnie w implementacji konsolowej części programu tworzysz formę - Form1.Create(), czy jakoś tak, być może jeszcze będzie trzeba dodać Unit1 tej formy do sekcji Uses, czy gdzieś tam w kodzie konsolowego projektu. - stare Delphiaki nie śmiać się przynajmniej nie nakłaniam go do Pythona i użycia modułów tkinter, os ;)

Link do komentarza
Udostępnij na innych stronach

Ok zrobiłem to troszkę inaczej a mianowicie dodałem do uses - Dos a potem dodałem do OnClick przycisku polecenia

procedure TForm1.Button2Click(Sender: TObject);
begin
a:= '/c tasklist'+ Edit1.Text;
SwapVectors;
Exec(GetEnv('COMSPEC'),a);
SwapVectors;    
end;

 

Problem jest taki, że po uruchomieniu konsola automatycznie zamyka się. Wie ktoś jak to zatrzymać?

Link do komentarza
Udostępnij na innych stronach

Ok zrobiłem to troszkę inaczej a mianowicie dodałem do uses - Dos a potem dodałem do OnClick przycisku polecenia

procedure TForm1.Button2Click(Sender: TObject);
begin
a:= '/c tasklist'+ Edit1.Text;
SwapVectors;
Exec(GetEnv('COMSPEC'),a);
SwapVectors;    
end;

 

Problem jest taki, że po uruchomieniu konsola automatycznie zamyka się. Wie ktoś jak to zatrzymać?

Musisz do konsoli przemycić jeszcze polecenie: pause

Link do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.

×
×
  • Utwórz nowe...