home *** CD-ROM | disk | FTP | other *** search
/ Chip 2002 May / Chip_2002-05_cd1.bin / chplus / cpp / 3 / proces.exe / proc.cpp < prev    next >
C/C++ Source or Header  |  1998-02-09  |  6KB  |  196 lines

  1. //----------------------------------------------------------------------------
  2. //Borland C++Builder
  3. //Copyright (c) 1987, 1998 Borland International Inc. All Rights Reserved.
  4. //----------------------------------------------------------------------------
  5. //---------------------------------------------------------------------
  6. #include <vcl.h>
  7. #pragma hdrstop
  8.  
  9. #include <stdlib.h>
  10. #include "proc.h"
  11. #include "another.h"
  12. //---------------------------------------------------------------------
  13. #pragma resource "*.dfm"
  14. #pragma resource "procv2.res"
  15. TForm1 *Form1;
  16. //---------------------------------------------------------------------
  17. static int stat=1;
  18. int i=0;
  19. //---------------------------------------------------------------------
  20. __fastcall TForm1::TForm1(TComponent *Owner)
  21.   : TForm(Owner)
  22. {
  23. }
  24. //---------------------------------------------------------------------
  25. bool __stdcall EnumProc(/*HWND*/void * hWnd,/*LPARAM*/long/*lp*/)
  26. {
  27.    unsigned long* pPid;   //LPDWORD
  28.    unsigned long result;      //DWORD
  29.    void *hg;                  //HGLOBAL
  30.    unsigned long id;
  31.  
  32.    if(hWnd==NULL)
  33.       return false;
  34.  
  35.    hg = GlobalAlloc(GMEM_SHARE,sizeof(unsigned long));
  36.    pPid = (unsigned long *)GlobalLock(hg);
  37.  
  38.    result = GetWindowThreadProcessId(hWnd,pPid);
  39.  
  40.    if(result){
  41.       char title[110];
  42.       char className[95];
  43.       char totalStr[256];
  44.       GetClassName(hWnd,className,95);
  45.       GetWindowText(hWnd,title,110);
  46.       id=*pPid;
  47.       itoa(id,totalStr,10);
  48.       strcat(totalStr,"\t");
  49.       if(title){
  50.          strcat(totalStr,title);
  51.          strcat(totalStr,"\t");
  52.       }
  53.       strcat(totalStr,className);
  54.       Form1->ListBox1->Items->Add((AnsiString)totalStr);
  55.    }
  56.    else{
  57.       GlobalUnlock(hg);
  58.       GlobalFree(hg);
  59.       return false;
  60.    }
  61.    GlobalUnlock(hg);
  62.    GlobalFree(hg);
  63.    return true;
  64. }
  65.  
  66. //---------------------------------------------------------------------
  67. void __fastcall TForm1::Exit1Click(TObject* /*Sender*/)
  68. {
  69.    PostQuitMessage(0);
  70. }
  71. //----------------------------------------------------------------------------
  72. void __fastcall TForm1::About1Click(TObject* /*Sender*/)
  73. {
  74.    Form2->ShowModal();
  75. }
  76. //----------------------------------------------------------------------------
  77.  void __fastcall TForm1::SpeedButton4Click(TObject* /*Sender*/)
  78. {
  79.    long lp=0;
  80.    ListBox1->Enabled=true;
  81.    ListBox1->Clear();
  82.    EnumWindows((WNDENUMPROC)EnumProc,lp);
  83.    SpeedButton2->Enabled=true;
  84.    SpeedButton3->Enabled=true;
  85. }
  86. //----------------------------------------------------------------------------
  87. void __fastcall TForm1::RadioButton1Click(TObject* Sender)
  88. {
  89.    TRadioButton *rbp =(TRadioButton*) Sender;
  90.    ListBox1->Font->Color=rbp->Font->Color;
  91. }
  92. //----------------------------------------------------------------------------
  93.  void __fastcall TForm1::New1Click(TObject* /*Sender*/)
  94. {
  95.    SpeedButton4Click(0);
  96. }
  97. //----------------------------------------------------------------------------
  98.  void __fastcall TForm1::Refresh1Click(TObject* /*Sender*/)
  99. {
  100.       SpeedButton4Click(0);
  101. }
  102. //----------------------------------------------------------------------------
  103.  void __fastcall TForm1::SpeedButton3Click(TObject* /*Sender*/)
  104. {
  105.       ListBox1->Clear();
  106.       SpeedButton3->Enabled=false;
  107.       SpeedButton1->Enabled=false;
  108. }
  109. //----------------------------------------------------------------------------
  110.  void __fastcall TForm1::ListBox1Click(TObject* /*Sender*/)
  111. {
  112.    SpeedButton1->Enabled=true;
  113.    StatusBar1->SimpleText="Select 'Kill Selected PID' to terminate the process";
  114. }
  115. //----------------------------------------------------------------------------
  116.  
  117. void __fastcall TForm1::FormShow(TObject */*Sender*/)
  118. {
  119.    if(stat){
  120.       stat= 0;
  121.       ListBox1->Items->Add((AnsiString)"Click on 'pid' Tool button above");
  122.    }
  123. }
  124. //---------------------------------------------------------------------
  125. void __fastcall TForm1::Timer1Timer(TObject */*Sender*/)
  126. {
  127.    switch(i){
  128.       case 0:{
  129.          Image1->Picture->Bitmap->LoadFromResourceName(0,(AnsiString)"BITMAP_5");
  130.          Image1->Refresh();
  131.          i=1;
  132.          return;
  133.       }
  134.       case 1:{
  135.          Image1->Picture->Bitmap->LoadFromResourceName(0,(AnsiString)"BITMAP_2");
  136.          Image1->Refresh();
  137.          i=2;
  138.          return;
  139.       }
  140.       case 2:{
  141.          Image1->Picture->Bitmap->LoadFromResourceName(0,(AnsiString)"BITMAP_3");
  142.          Image1->Refresh();
  143.          i=3;
  144.          return;
  145.       }
  146.       case 3:{
  147.          Image1->Picture->Bitmap->LoadFromResourceName(0,(AnsiString)"BITMAP_4");
  148.          Image1->Refresh();
  149.          i=4;
  150.          return;
  151.       }
  152.       case 4:{
  153.          Image1->Picture->Bitmap->LoadFromResourceName(0,(AnsiString)"BITMAP_1");
  154.          Image1->Refresh();
  155.          i=0;
  156.          return;
  157.       }
  158.    }//end switch
  159. }
  160.  
  161. void __fastcall TForm1::SpeedButton2Click(TObject *Sender)
  162. {
  163.    SpeedButton4Click(0);
  164.    SpeedButton1->Enabled=false;
  165. }
  166. //---------------------------------------------------------------------------
  167. void __fastcall TForm1::SpeedButton1Click(TObject *Sender)
  168. {
  169.    AnsiString str;
  170.    char *tmp;
  171.    int i;
  172.    i= ListBox1->ItemIndex;
  173.    if( i != -1){
  174.       AnsiString s;
  175.       tmp = new char[100];
  176.       s=ListBox1->Items->Strings[i];
  177.       strcpy(tmp,(char*)s.c_str());
  178.       tmp=strtok(tmp,"\t");
  179.    }
  180.    int id=atoi(tmp);
  181.    delete[] tmp;
  182.    HANDLE ps = OpenProcess(1,false,id);
  183.    if(ps){
  184.       if(!TerminateProcess(ps,-9)){
  185.          ShowMessage((AnsiString)"Could not end process specified!");
  186.       }
  187.       else{
  188.          ShowMessage((AnsiString)"Process successfully terminated!");
  189.       }
  190.    }
  191.    else{
  192.       ShowMessage((AnsiString)"Could not open process requested!");
  193.    }
  194. }
  195. //---------------------------------------------------------------------------
  196.