home *** CD-ROM | disk | FTP | other *** search
/ Chip 1997 April / Chip_1997-04_cd.bin / prezent / cb / data.z / PROC.CPP < prev    next >
C/C++ Source or Header  |  1997-01-16  |  6KB  |  210 lines

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